def test_multiflag(self): # test multi-flag options = core.Options( arguments.Flag('flagone', true_values=['on'], default=False), arguments.Flag('flagtwo', false_values=['off'], default=True), ) dummy_tokens = DummyTokens('On', 'On') dummy_context = {} kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(kwargs['flagone'].resolve(dummy_context), True) self.assertEqual(kwargs['flagtwo'].resolve(dummy_context), True)
def test_flag_wrong_value(self): options = core.Options( arguments.Flag('myflag', true_values=['on'], false_values=['off'])) # test exceptions dummy_tokens = DummyTokens('myval') self.assertRaises(exceptions.InvalidFlag, options.parse, dummy_parser, dummy_tokens)
def test_flag_false_value(self): options = core.Options( arguments.Flag('myflag', true_values=['on'], false_values=['off'])) dummy_tokens = DummyTokens('off') dummy_context = {} kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(kwargs['myflag'].resolve(dummy_context), False)
def test_case_sensitive_flag_okay(self): options = core.Options( arguments.Flag('myflag', true_values=['on'], default=False, case_sensitive=True)) dummy_tokens = DummyTokens('on') dummy_context = {} kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(kwargs['myflag'].resolve(dummy_context), True)
def test_06_complex(self): """ test a complex tag option parser """ options = core.Options( arguments.Argument('singlearg'), arguments.MultiValueArgument('multiarg', required=False), 'as', arguments.Argument('varname', required=False), 'safe', arguments.Flag('safe', true_values=['on', 'true'], default=False) ) # test simple 'all arguments given' dummy_tokens = DummyTokens(1, 2, 3, 'as', 4, 'safe', 'true') dummy_context = {} kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(len(kwargs), 4) expected = [ ('singlearg', 1), ('multiarg', [2, 3]), ('varname', 4), ('safe', True) ] for key, value in expected: self.assertEqual(kwargs[key].resolve(dummy_context), value) # test 'only first argument given' dummy_tokens = DummyTokens(1) kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(len(kwargs), 4) expected = [ ('singlearg', 1), ('multiarg', []), ('varname', None), ('safe', False) ] for key, value in expected: self.assertEqual(kwargs[key].resolve(dummy_context), value) # test first argument and last argument given dummy_tokens = DummyTokens(2, 'safe', 'false') kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(len(kwargs), 4) expected = [ ('singlearg', 2), ('multiarg', []), ('varname', None), ('safe', False) ] for key, value in expected: self.assertEqual(kwargs[key].resolve(dummy_context), value)
def test_04_flag(self): """ Test flag arguments """ options = core.Options( arguments.Flag('myflag', true_values=['on'], false_values=['off']) ) dummy_tokens = DummyTokens('on') dummy_context = {} kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(kwargs['myflag'].resolve(dummy_context), True) dummy_tokens = DummyTokens('off') kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(kwargs['myflag'].resolve(dummy_context), False) # test exceptions dummy_tokens = DummyTokens('myval') self.assertRaises(exceptions.InvalidFlag, options.parse, dummy_parser, dummy_tokens) options = core.Options( arguments.Flag('myflag', true_values=['on']) ) dummy_tokens = DummyTokens('myval') self.assertRaises(exceptions.InvalidFlag, options.parse, dummy_parser, dummy_tokens) options = core.Options( arguments.Flag('myflag', false_values=['off']) ) dummy_tokens = DummyTokens('myval') self.assertRaises(exceptions.InvalidFlag, options.parse, dummy_parser, dummy_tokens) self.assertRaises(ImproperlyConfigured, arguments.Flag, 'myflag') # test case sensitive flag options = core.Options( arguments.Flag('myflag', true_values=['on'], default=False, case_sensitive=True) ) dummy_tokens = DummyTokens('On') kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(kwargs['myflag'].resolve(dummy_context), False) dummy_tokens = DummyTokens('on') kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(kwargs['myflag'].resolve(dummy_context), True) # test multi-flag options = core.Options( arguments.Flag('flagone', true_values=['on'], default=False), arguments.Flag('flagtwo', false_values=['off'], default=True), ) dummy_tokens = DummyTokens('On', 'On') kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(kwargs['flagone'].resolve(dummy_context), True) self.assertEqual(kwargs['flagtwo'].resolve(dummy_context), True)
def test_complex_only_first_argument(self): options = core.Options( arguments.Argument('singlearg'), arguments.MultiValueArgument('multiarg', required=False), 'as', arguments.Argument('varname', required=False), 'safe', arguments.Flag('safe', true_values=['on', 'true'], default=False)) # test 'only first argument given' dummy_tokens = DummyTokens(1) dummy_context = {} kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertEqual(blocks, {}) self.assertEqual(len(kwargs), 4) expected = [('singlearg', 1), ('multiarg', []), ('varname', None), ('safe', False)] for key, value in expected: self.assertEqual(kwargs[key].resolve(dummy_context), value)
def test_flag_wrong_value_no_true(self): options = core.Options(arguments.Flag('myflag', false_values=['off'])) dummy_tokens = DummyTokens('myval') self.assertRaises(exceptions.InvalidFlag, options.parse, dummy_parser, dummy_tokens) self.assertRaises(ImproperlyConfigured, arguments.Flag, 'myflag')