def test_parse_list_option(self): input_ = ArgvInput(['cli.py', '--name=foo', '--name=bar', '--name=baz']) input_.bind( InputDefinition([ InputOption('name', None, InputOption.VALUE_OPTIONAL | InputOption.VALUE_IS_LIST) ]) ) self.assertEqual( {'name': ['foo', 'bar', 'baz']}, input_.get_options() ) input_ = ArgvInput(['cli.py', '--name', 'foo', '--name', 'bar', '--name', 'baz']) input_.bind( InputDefinition([ InputOption('name', None, InputOption.VALUE_OPTIONAL | InputOption.VALUE_IS_LIST) ]) ) self.assertEqual( {'name': ['foo', 'bar', 'baz']}, input_.get_options() ) input_ = ArgvInput(['cli.py', '--name=foo', '--name=bar', '--name=']) input_.bind( InputDefinition([ InputOption('name', None, InputOption.VALUE_OPTIONAL | InputOption.VALUE_IS_LIST) ]) ) self.assertEqual( {'name': ['foo', 'bar', None]}, input_.get_options() ) input_ = ArgvInput(['cli.py', '--name', 'foo', '--name', 'bar', '--name', '--another-option']) input_.bind( InputDefinition([ InputOption('name', None, InputOption.VALUE_OPTIONAL | InputOption.VALUE_IS_LIST), InputOption('another-option', None, InputOption.VALUE_NONE) ]) ) self.assertEqual( {'name': ['foo', 'bar', None], 'another-option': True}, input_.get_options() )
def test_parse_options(self): for argv, options, expected_options, message in self.provide_options(): input_ = ArgvInput(argv) input_.bind(InputDefinition(options)) self.assertEqual( expected_options, input_.get_options(), msg=message )
def test_negative_number_after_double_dash(self): input_ = ArgvInput(['cli.py', '--', '-1']) input_.bind( InputDefinition([ InputArgument('number') ]) ) self.assertEqual({'number': '-1'}, input_.get_arguments()) input_ = ArgvInput(['cli.py', '-f', 'bar', '--', '-1']) input_.bind( InputDefinition([ InputArgument('number'), InputOption('foo', 'f', InputOption.VALUE_OPTIONAL) ]) ) self.assertEqual({'foo': 'bar'}, input_.get_options()) self.assertEqual({'number': '-1'}, input_.get_arguments())