예제 #1
0
    def test_zsh_arg_line(self):
        opt1 = CmdOption({'name': 'o1', 'default': '', 'help': 'my desc'})
        assert '' == TabCompletion._zsh_arg_line(opt1)

        opt2 = CmdOption({
            'name': 'o2',
            'default': '',
            'help': 'my desc',
            'short': 's'
        })
        assert "'-s[my desc]' \\" == TabCompletion._zsh_arg_line(opt2)

        opt3 = CmdOption({
            'name': 'o3',
            'default': '',
            'help': 'my desc',
            'long': 'lll'
        })
        assert "'--lll[my desc]' \\" == TabCompletion._zsh_arg_line(opt3)

        opt4 = CmdOption({
            'name': 'o4',
            'default': '',
            'help': 'my desc [b]a',
            'short': 's',
            'long': 'lll'
        })
        assert ("'(-s|--lll)'{-s,--lll}'[my desc [b\]a]' \\" ==
                TabCompletion._zsh_arg_line(opt4))
예제 #2
0
 def test_repr(self):
     opt = CmdOption({'name':'opt1', 'default':'',
                      'short':'o', 'long':'other'})
     assert "CmdOption(" in repr(opt)
     assert "'name':'opt1'" in repr(opt)
     assert "'short':'o'" in repr(opt)
     assert "'long':'other'" in repr(opt)
예제 #3
0
 def test_param(self):
     opt1 = CmdOption(opt_bool)
     got = opt1.help_doc()
     assert '-f, --flag' in got[0]
     assert 'help for opt1' in got[0]
     assert '--no-flag' in got[1]
     assert 2 == len(got)
예제 #4
0
 def test_no_long(self):
     opt1 = CmdOption({
         'name': 'op1',
         'default': '',
         'type': str,
         'short': 's'
     })
     assert '-s ARG' == opt1.help_param()
예제 #5
0
 def test_bool_param(self):
     opt1 = CmdOption({
         'name': 'op1',
         'default': '',
         'type': bool,
         'short': 'b',
         'long': 'bobo'
     })
     assert '-b, --bobo' == opt1.help_param()
예제 #6
0
 def test_non_bool_param(self):
     opt1 = CmdOption({
         'name': 'op1',
         'default': '',
         'type': str,
         'short': 's',
         'long': 'susu'
     })
     assert '-s ARG, --susu=ARG' == opt1.help_param()
예제 #7
0
    def test_zsh_arg_line(self):
        opt1 = CmdOption({'name': 'o1', 'default': '', 'help': 'my desc'})
        assert '' == TabCompletion._zsh_arg_line(opt1)

        opt2 = CmdOption({
            'name': 'o2',
            'default': '',
            'help': 'my desc',
            'short': 's'
        })
        assert '"-s[my desc]" \\' == TabCompletion._zsh_arg_line(opt2)

        opt3 = CmdOption({
            'name': 'o3',
            'default': '',
            'help': 'my desc',
            'long': 'lll'
        })
        assert '"--lll[my desc]" \\' == TabCompletion._zsh_arg_line(opt3)

        opt4 = CmdOption({
            'name': 'o4',
            'default': '',
            'help': 'my desc [b]a',
            'short': 's',
            'long': 'lll'
        })
        assert ('"(-s|--lll)"{-s,--lll}"[my desc [b\]a]" \\' ==
                TabCompletion._zsh_arg_line(opt4))

        # escaping `"` test
        opt5 = CmdOption({
            'name': 'o5',
            'default': '',
            'help': '''my "des'c [b]a''',
            'short': 's',
            'long': 'lll'
        })
        assert ('''"(-s|--lll)"{-s,--lll}"[my \\"des'c [b\]a]" \\''' ==
                TabCompletion._zsh_arg_line(opt5))
예제 #8
0
 def test_str2boolean(self):
     opt = CmdOption({'name':'op1', 'default':'', 'type':bool,
                      'short':'b', 'long': 'bobo'})
     assert True == opt.str2boolean('1')
     assert True == opt.str2boolean('yes')
     assert True == opt.str2boolean('Yes')
     assert True == opt.str2boolean('YES')
     assert True == opt.str2boolean('true')
     assert True == opt.str2boolean('on')
     assert False == opt.str2boolean('0')
     assert False == opt.str2boolean('false')
     assert False == opt.str2boolean('no')
     assert False == opt.str2boolean('off')
     assert False == opt.str2boolean('OFF')
     pytest.raises(ValueError, opt.str2boolean, '2')
     pytest.raises(ValueError, opt.str2boolean, None)
     pytest.raises(ValueError, opt.str2boolean, 'other')
예제 #9
0
    def test_env_val_bool(self):
        opt_foo = {
            'name': 'foo',
            'long': 'foo',
            'type': bool,
            'env_var': 'FOO',
            'default': False,
        }
        cmd = CmdParse([CmdOption(opt_foo)])

        # get from env
        os.environ['FOO'] = '1'
        params, args = cmd.parse([])
        assert params['foo'] == True

        # get from env
        os.environ['FOO'] = '0'
        params, args = cmd.parse([])
        assert params['foo'] == False
예제 #10
0
    def test_env_val(self):
        opt_foo = {
            'name': 'foo',
            'long': 'foo',
            'type': str,
            'env_var': 'FOO',
            'default': 'zero'
        }
        cmd = CmdParse([CmdOption(opt_foo)])

        # get default
        params, args = cmd.parse([])
        assert params['foo'] == 'zero'

        # get from env
        os.environ['FOO'] = 'bar'
        params2, args2 = cmd.parse([])
        assert params2['foo'] == 'bar'

        # command line has precedence
        params2, args2 = cmd.parse(['--foo', 'XXX'])
        assert params2['foo'] == 'XXX'
예제 #11
0
 def test_no_doc_param(self):
     opt1 = CmdOption(opt_no)
     assert 0 == len(opt1.help_doc())
예제 #12
0
파일: test_cmd_base.py 프로젝트: lelit/doit
 def set_options(self):
     options = [opt_bool, opt_rare, opt_int, opt_no]
     return [CmdOption(o) for o in options]
예제 #13
0
 def test_str(self):
     opt = CmdOption({'name': 'op1', 'default': '', 'type': str})
     assert 'foo' == opt.str2type('foo')
     assert 'bar' == opt.str2type('bar')
예제 #14
0
 def test_non_string_values_are_not_converted(self):
     opt = CmdOption({'name': 'op1', 'default': '', 'type': bool})
     assert False == opt.str2type(False)
     assert True == opt.str2type(True)
     assert None == opt.str2type(None)
예제 #15
0
 def test_choices_nodesc_doc(self):
     the_opt = CmdOption(opt_choices_nodesc)
     doc = the_opt.help_doc()[0]
     assert "choices: no, yes" in doc
예제 #16
0
 def cmd(self, request):
     opt_list = (opt_bool, opt_rare, opt_int, opt_no, opt_append,
                 opt_choices_desc, opt_choices_nodesc)
     options = [CmdOption(o) for o in opt_list]
     cmd = CmdParse(options)
     return cmd
예제 #17
0
 def test_bool(self):
     opt = CmdOption({'name': 'op1', 'default': '', 'type': bool})
     assert False == opt.str2type('off')
     assert True == opt.str2type('on')
예제 #18
0
 def test_choices_desc_doc(self):
     the_opt = CmdOption(opt_choices_desc)
     doc = the_opt.help_doc()[0]
     assert 'choices:\n' in doc
     assert 'yes: signify affirmative' in doc
     assert 'no: signify negative' in doc
예제 #19
0
 def test_name_config_env(self):
     opt1 = CmdOption(opt_rare)
     got = opt1.help_doc()
     assert 'config: rare_bool' in got[0]
     assert 'environ: RARE' in got[0]
예제 #20
0
 def test_non_required_fields(self):
     opt1 = CmdOption({'name': 'op1', 'default': ''})
     assert '' == opt1.long
예제 #21
0
 def test_int(self):
     opt = CmdOption({'name': 'op1', 'default': '', 'type': int})
     assert 2 == opt.str2type('2')
     assert -3 == opt.str2type('-3')
예제 #22
0
 def test_list(self):
     opt = CmdOption({'name': 'op1', 'default': '', 'type': list})
     assert ['foo'] == opt.str2type('foo')
     assert [] == opt.str2type('')
     assert ['foo', 'bar'] == opt.str2type('foo , bar ')
예제 #23
0
 def test_invalid_value(self):
     opt = CmdOption({'name': 'op1', 'default': '', 'type': int})
     pytest.raises(CmdParseError, opt.str2type, 'not a number')
예제 #24
0
 def cmd(self, request):
     opt_list = (opt_bool, opt_rare, opt_int, opt_no)
     options = [CmdOption(o) for o in opt_list]
     cmd = CmdParse(options)
     return cmd
예제 #25
0
 def set_options(self):
     opt_list = (self.my_base_opts + self.my_opts + self.base_options +
                 self._loader.cmd_options + self.cmd_options)
     return [CmdOption(opt) for opt in opt_list]