示例#1
0
    def setUp(self):
        super(MarkFlagsAsMutualExclusiveTest, self).setUp()
        self.flag_values = _flagvalues.FlagValues()

        _defines.DEFINE_string('flag_one',
                               None,
                               'flag one',
                               flag_values=self.flag_values)
        _defines.DEFINE_string('flag_two',
                               None,
                               'flag two',
                               flag_values=self.flag_values)
        _defines.DEFINE_string('flag_three',
                               None,
                               'flag three',
                               flag_values=self.flag_values)
        _defines.DEFINE_integer('int_flag_one',
                                None,
                                'int flag one',
                                flag_values=self.flag_values)
        _defines.DEFINE_integer('int_flag_two',
                                None,
                                'int flag two',
                                flag_values=self.flag_values)
        _defines.DEFINE_multi_string('multi_flag_one',
                                     None,
                                     'multi flag one',
                                     flag_values=self.flag_values)
        _defines.DEFINE_multi_string('multi_flag_two',
                                     None,
                                     'multi flag two',
                                     flag_values=self.flag_values)
示例#2
0
    def test_allow_overwrite_false(self):
        fv = _flagvalues.FlagValues()
        _defines.DEFINE_string('default_none',
                               None,
                               'help',
                               allow_overwrite=False,
                               flag_values=fv)
        _defines.DEFINE_string('default_foo',
                               'foo',
                               'help',
                               allow_overwrite=False,
                               flag_values=fv)

        fv.mark_as_parsed()
        self.assertEqual('foo', fv.default_foo)
        self.assertEqual(None, fv.default_none)

        fv(['', '--default_foo=notFoo', '--default_none=notNone'])
        self.assertEqual('notFoo', fv.default_foo)
        self.assertEqual('notNone', fv.default_none)

        fv.unparse_flags()
        self.assertEqual('foo', fv['default_foo'].value)
        self.assertEqual(None, fv['default_none'].value)

        fv(['', '--default_foo=alsoNotFoo', '--default_none=alsoNotNone'])
        self.assertEqual('alsoNotFoo', fv.default_foo)
        self.assertEqual('alsoNotNone', fv.default_none)
示例#3
0
    def test_flags_into_string_deterministic(self):
        flag_values = _flagvalues.FlagValues()
        _defines.DEFINE_string('fa',
                               'x',
                               '',
                               flag_values=flag_values,
                               module_name='mb')
        _defines.DEFINE_string('fb',
                               'x',
                               '',
                               flag_values=flag_values,
                               module_name='mb')
        _defines.DEFINE_string('fc',
                               'x',
                               '',
                               flag_values=flag_values,
                               module_name='ma')
        _defines.DEFINE_string('fd',
                               'x',
                               '',
                               flag_values=flag_values,
                               module_name='ma')

        expected = ('--fc=x\n' '--fd=x\n' '--fa=x\n' '--fb=x\n')

        flags_by_module_items = sorted(
            flag_values.flags_by_module_dict().items(), reverse=True)
        for _, module_flags in flags_by_module_items:
            module_flags.sort(reverse=True)

        flag_values.__dict__['__flags_by_module'] = collections.OrderedDict(
            flags_by_module_items)

        actual = flag_values.flags_into_string()
        self.assertEqual(expected, actual)
示例#4
0
 def setUp(self):
     self.fv = _flagvalues.FlagValues()
     _defines.DEFINE_string('long_name',
                            'default',
                            'help',
                            flag_values=self.fv,
                            short_name='s')
示例#5
0
 def setUp(self):
     super(FlagHolderTest, self).setUp()
     self.fv = _flagvalues.FlagValues()
     self.name_flag = _defines.DEFINE_string('name',
                                             'default',
                                             'help',
                                             flag_values=self.fv)
示例#6
0
 def test_catch_none_as_default(self):
     _defines.DEFINE_string('string_flag_1',
                            None,
                            'string flag 1',
                            flag_values=self.flag_values)
     _defines.DEFINE_string('string_flag_2',
                            None,
                            'string flag 2',
                            flag_values=self.flag_values)
     _validators.mark_flags_as_required(['string_flag_1', 'string_flag_2'],
                                        flag_values=self.flag_values)
     argv = ('./program', '--string_flag_1=value_1')
     expected = (
         r'flag --string_flag_2=None: Flag --string_flag_2 must be specified\.'
     )
     self.assertRaisesRegexp(_exceptions.IllegalFlagValueError, expected,
                             self.flag_values, argv)
示例#7
0
 def test_unparsed_flags_access_raises_after_unparse_flags(self):
   fv = _flagvalues.FlagValues()
   _defines.DEFINE_string('a_str', 'default_value', 'help', flag_values=fv)
   fv.mark_as_parsed()
   self.assertEqual(fv.a_str, 'default_value')
   fv.unparse_flags()
   with self.assertRaises(_exceptions.UnparsedFlagAccessError):
     _ = fv.a_str
示例#8
0
    def _get_test_flag_values(self):
        """Get a _flagvalues.FlagValues() instance, set up for tests."""
        flag_values = _flagvalues.FlagValues()

        _defines.DEFINE_string('strf', '', '', flag_values=flag_values)
        _defines.DEFINE_boolean('boolf', 0, '', flag_values=flag_values)

        return flag_values
示例#9
0
 def test_validate_all_flags(self):
     fv = _flagvalues.FlagValues()
     _defines.DEFINE_string('name', None, '', flag_values=fv)
     _validators.mark_flag_as_required('name', flag_values=fv)
     with self.assertRaises(_exceptions.IllegalFlagValueError):
         fv.validate_all_flags()
     fv.name = 'test'
     fv.validate_all_flags()
示例#10
0
 def setUp(self):
     super(FlagsDashSyntaxTest, self).setUp()
     self.fv = _flagvalues.FlagValues()
     _defines.DEFINE_string('long_name',
                            'default',
                            'help',
                            flag_values=self.fv,
                            short_name='s')
示例#11
0
 def test_success(self):
     _defines.DEFINE_string('string_flag_1',
                            None,
                            'string flag 1',
                            flag_values=self.flag_values)
     _defines.DEFINE_string('string_flag_2',
                            None,
                            'string flag 2',
                            flag_values=self.flag_values)
     flag_names = ['string_flag_1', 'string_flag_2']
     _validators.mark_flags_as_required(flag_names,
                                        flag_values=self.flag_values)
     argv = ('./program', '--string_flag_1=value_1',
             '--string_flag_2=value_2')
     self.flag_values(argv)
     self.assertEqual('value_1', self.flag_values.string_flag_1)
     self.assertEqual('value_2', self.flag_values.string_flag_2)
示例#12
0
 def test_success(self):
     _defines.DEFINE_string('string_flag',
                            None,
                            'string flag',
                            flag_values=self.flag_values)
     _validators.mark_flag_as_required('string_flag',
                                       flag_values=self.flag_values)
     argv = ('./program', '--string_flag=value')
     self.flag_values(argv)
     self.assertEqual('value', self.flag_values.string_flag)
示例#13
0
 def test_catch_setting_none_after_program_start(self):
     _defines.DEFINE_string('string_flag_1',
                            'value_1',
                            'string flag 1',
                            flag_values=self.flag_values)
     _defines.DEFINE_string('string_flag_2',
                            'value_2',
                            'string flag 2',
                            flag_values=self.flag_values)
     _validators.mark_flags_as_required(['string_flag_1', 'string_flag_2'],
                                        flag_values=self.flag_values)
     argv = ('./program', '--string_flag_1=value_1')
     self.flag_values(argv)
     self.assertEqual('value_1', self.flag_values.string_flag_1)
     expected = (
         'flag --string_flag_1=None: Flag --string_flag_1 must have a value '
         'other than None.')
     with self.assertRaises(_exceptions.IllegalFlagValueError) as cm:
         self.flag_values.string_flag_1 = None
     self.assertEqual(expected, str(cm.exception))
示例#14
0
 def test_flag_default_not_none_warning(self):
     _defines.DEFINE_string('flag_not_none',
                            '',
                            'empty default',
                            flag_values=self.flag_values)
     with warnings.catch_warnings(record=True) as w:
         warnings.simplefilter('always')
         _validators.mark_flag_as_required('flag_not_none',
                                           flag_values=self.flag_values)
         self.assertLen(w, 1)
         self.assertIn('--flag_not_none has a non-None default value',
                       str(w[0].message))
示例#15
0
    def test_get_flags_for_module(self):
        fv = _flagvalues.FlagValues()
        _defines.DEFINE_string('foo', None, 'help', flag_values=fv)
        module_foo.define_flags(fv)
        flags = fv.get_flags_for_module('__main__')

        self.assertEqual({'foo'}, {flag.name for flag in flags})

        flags = fv.get_flags_for_module(module_foo)
        self.assertEqual({'tmod_foo_bool', 'tmod_foo_int', 'tmod_foo_str'},
                         {flag.name
                          for flag in flags})
示例#16
0
 def test_using_default_value_none(self):
     fv = _flagvalues.FlagValues()
     _defines.DEFINE_string('default_none', None, 'help', flag_values=fv)
     self.assertTrue(fv['default_none'].using_default_value)
     fv(['', '--default_none=notNone'])
     self.assertFalse(fv['default_none'].using_default_value)
     fv.unparse_flags()
     self.assertTrue(fv['default_none'].using_default_value)
     fv(['', '--default_none=alsoNotNone'])
     self.assertFalse(fv['default_none'].using_default_value)
     fv.unparse_flags()
     self.assertTrue(fv['default_none'].using_default_value)
示例#17
0
 def test_catch_setting_none_after_program_start(self):
     _defines.DEFINE_string('string_flag_1',
                            'value_1',
                            'string flag 1',
                            flag_values=self.flag_values)
     _defines.DEFINE_string('string_flag_2',
                            'value_2',
                            'string flag 2',
                            flag_values=self.flag_values)
     _validators.mark_flags_as_required(['string_flag_1', 'string_flag_2'],
                                        flag_values=self.flag_values)
     argv = ('./program', '--string_flag_1=value_1')
     self.flag_values(argv)
     self.assertEqual('value_1', self.flag_values.string_flag_1)
     expected = (
         'flag --string_flag_1=None: Flag --string_flag_1 must be specified.'
     )
     try:
         self.flag_values.string_flag_1 = None
         raise AssertionError('Failed to detect non-set required flag.')
     except _exceptions.IllegalFlagValueError as e:
         self.assertEqual(expected, str(e))
示例#18
0
 def run_test(argv, defined_py_flags, expected_argv):
     fv = _flagvalues.FlagValues()
     fv.set_gnu_getopt(True)
     for f in defined_py_flags:
         if f.startswith('b'):
             _defines.DEFINE_boolean(f, False, 'help', flag_values=fv)
         else:
             _defines.DEFINE_string(f,
                                    'default',
                                    'help',
                                    flag_values=fv)
     output_argv = fv(argv, known_only=True)
     self.assertEqual(expected_argv, output_argv)
示例#19
0
 def test_catch_none_as_default(self):
     _defines.DEFINE_string('string_flag',
                            None,
                            'string flag',
                            flag_values=self.flag_values)
     _validators.mark_flag_as_required('string_flag',
                                       flag_values=self.flag_values)
     argv = ('./program', )
     expected = (
         r'flag --string_flag=None: Flag --string_flag must be specified\.')
     with self.assertRaisesRegex(_exceptions.IllegalFlagValueError,
                                 expected):
         self.flag_values(argv)
示例#20
0
  def test_flags_dir(self):
    flag_values = _flagvalues.FlagValues()
    flag_name1 = 'bool_flag'
    flag_name2 = 'string_flag'
    flag_name3 = 'float_flag'
    description = 'Description'
    _defines.DEFINE_boolean(
        flag_name1, None, description, flag_values=flag_values)
    _defines.DEFINE_string(
        flag_name2, None, description, flag_values=flag_values)
    self.assertEqual(sorted([flag_name1, flag_name2]), dir(flag_values))

    _defines.DEFINE_float(
        flag_name3, None, description, flag_values=flag_values)
    self.assertEqual(
        sorted([flag_name1, flag_name2, flag_name3]), dir(flag_values))
示例#21
0
    def test_using_default_value_not_none(self):
        fv = _flagvalues.FlagValues()
        _defines.DEFINE_string('default_foo', 'foo', 'help', flag_values=fv)

        fv.mark_as_parsed()
        self.assertTrue(fv['default_foo'].using_default_value)

        fv(['', '--default_foo=foo'])
        self.assertFalse(fv['default_foo'].using_default_value)

        fv(['', '--default_foo=notFoo'])
        self.assertFalse(fv['default_foo'].using_default_value)

        fv.unparse_flags()
        self.assertTrue(fv['default_foo'].using_default_value)

        fv(['', '--default_foo=alsoNotFoo'])
        self.assertFalse(fv['default_foo'].using_default_value)
示例#22
0
 def test_catch_setting_none_after_program_start(self):
     _defines.DEFINE_string('string_flag',
                            'value',
                            'string flag',
                            flag_values=self.flag_values)
     _validators.mark_flag_as_required('string_flag',
                                       flag_values=self.flag_values)
     argv = ('./program', )
     self.flag_values(argv)
     self.assertEqual('value', self.flag_values.string_flag)
     expected = (
         'flag --string_flag=None: Flag --string_flag must have a value '
         'other than None.')
     try:
         self.flag_values.string_flag = None
         raise AssertionError('Failed to detect non-set required flag.')
     except _exceptions.IllegalFlagValueError as e:
         self.assertEqual(expected, str(e))
示例#23
0
 def test_hasattr_raises_in_py3(self):
     fv = _flagvalues.FlagValues()
     _defines.DEFINE_string('name', 'default', 'help', flag_values=fv)
     with self.assertRaises(_exceptions.UnparsedFlagAccessError):
         _ = hasattr(fv, 'name')
示例#24
0
 def test_hasattr_logs_in_py2(self):
     fv = _flagvalues.FlagValues()
     _defines.DEFINE_string('name', 'default', 'help', flag_values=fv)
     with mock.patch.object(_flagvalues.logging, 'error') as mock_error:
         self.assertFalse(hasattr(fv, 'name'))
     mock_error.assert_called_once()
示例#25
0
 def test_unparsed_flag_access(self):
     fv = _flagvalues.FlagValues()
     _defines.DEFINE_string('name', 'default', 'help', flag_values=fv)
     with self.assertRaises(_exceptions.UnparsedFlagAccessError):
         _ = fv.name