def test_write_pot(self): s = ConfigSettings() s.register_provider(Provider1) s.register_provider(Provider2) # Just a basic sanity test. temp = NamedTemporaryFile('wt') s.write_pot(temp) temp.flush()
def test_file_reading_single(self): temp = NamedTemporaryFile(mode='wt') temp.write(CONFIG1) temp.flush() s = ConfigSettings() s.register_provider(Provider1) s.load_file(temp.name) self.assertEqual(s.foo.bar, 'bar_value')
def test_choices_validation(self): s = ConfigSettings() s.register_provider(Provider4) foo = s.foo foo.abc with self.assertRaises(ValueError): foo.xyz with self.assertRaises(ValueError): foo.abc = 'e' foo.abc = 'b' foo.xyz = 'y'
def test_assignment_validation(self): s = ConfigSettings() s.register_provider(Provider2) a = s.a # Assigning an undeclared setting raises. with self.assertRaises(AttributeError): a.undefined = True with self.assertRaises(KeyError): a['undefined'] = True # Basic type validation. a.string = 'foo' a.string = 'foo' with self.assertRaises(TypeError): a.string = False a.boolean = True a.boolean = False with self.assertRaises(TypeError): a.boolean = 'foo' a.pos_int = 5 a.pos_int = 0 with self.assertRaises(ValueError): a.pos_int = -1 with self.assertRaises(TypeError): a.pos_int = 'foo' a.int = 5 a.int = 0 a.int = -5 with self.assertRaises(TypeError): a.int = 1.24 with self.assertRaises(TypeError): a.int = 'foo' a.path = '/home/gps' a.path = 'foo.c' a.path = 'foo/bar' a.path = './foo'
def test_file_reading_multiple(self): """Loading multiple files has proper overwrite behavior.""" temp1 = NamedTemporaryFile(mode='wt') temp1.write(CONFIG1) temp1.flush() temp2 = NamedTemporaryFile(mode='wt') temp2.write(CONFIG2) temp2.flush() s = ConfigSettings() s.register_provider(Provider1) s.load_files([temp1.name, temp2.name]) self.assertEqual(s.foo.bar, 'value2')
def test_wildcard_options(self): s = ConfigSettings() s.register_provider(Provider5) foo = s.foo self.assertIn('*', foo._settings) self.assertNotIn('*', foo) foo.baz = 'value1' foo.bar = 'value2' self.assertIn('baz', foo) self.assertEqual(foo.baz, 'value1') self.assertIn('bar', foo) self.assertEqual(foo.bar, 'value2')
def retrieval_type_helper(self, provider): s = ConfigSettings() s.register_provider(provider) a = s.a a.string = 'foo' a.boolean = True a.pos_int = 12 a.int = -4 a.path = './foo/bar' self.assertIsInstance(a.string, str_type) self.assertIsInstance(a.boolean, bool) self.assertIsInstance(a.pos_int, int) self.assertIsInstance(a.int, int) self.assertIsInstance(a.path, str_type)
def test_simple(self): s = ConfigSettings() s.register_provider(Provider1) self.assertEqual(len(s), 1) self.assertIn('foo', s) foo = s['foo'] foo = s.foo self.assertEqual(len(foo), 2) self.assertIn('bar', foo) self.assertIn('baz', foo) foo['bar'] = 'value1' self.assertEqual(foo['bar'], 'value1') self.assertEqual(foo['bar'], 'value1')
def test_file_writing(self): s = ConfigSettings() s.register_provider(Provider2) s.a.string = 'foo' s.a.boolean = False temp = NamedTemporaryFile('wt') s.write(temp) temp.flush() s2 = ConfigSettings() s2.register_provider(Provider2) s2.load_file(temp.name) self.assertEqual(s.a.string, s2.a.string) self.assertEqual(s.a.boolean, s2.a.boolean)
def test_retrieval_type(self): s = ConfigSettings() s.register_provider(Provider2) a = s.a a.string = 'foo' a.boolean = True a.pos_int = 12 a.int = -4 a.abs_path = '/home/gps' a.rel_path = 'foo.c' a.path = './foo/bar' self.assertIsInstance(a.string, str_type) self.assertIsInstance(a.boolean, bool) self.assertIsInstance(a.pos_int, int) self.assertIsInstance(a.int, int) self.assertIsInstance(a.abs_path, str_type) self.assertIsInstance(a.rel_path, str_type) self.assertIsInstance(a.path, str_type)
def _init(self): CommonBackend._init(self) if not util.check_top_objdir(self.environment.topobjdir): raise Exception() # The database we're going to dump out to. self._db = OrderedDict() # The cache for per-directory flags self._flags = {} log_manager = LoggingManager() self._cmd = MozbuildObject(self.environment.topsrcdir, ConfigSettings(), log_manager, self.environment.topobjdir) self._envs = {} self._includes = defaultdict(list) self._defines = defaultdict(list) self._local_flags = defaultdict(dict) self._extra_includes = defaultdict(list) self._gyp_dirs = set() self._dist_include_testing = '-I%s' % mozpath.join( self.environment.topobjdir, 'dist', 'include', 'testing')
def test_duplicate_option(self): s = ConfigSettings() with self.assertRaises(ConfigException): s.register_provider(ProviderDuplicate)
def test_file_reading_missing(self): """Missing files should silently be ignored.""" s = ConfigSettings() s.load_file('/tmp/foo.ini')
def test_assignment_validation(self): s = ConfigSettings() s.register_provider(Provider2) a = s.a # Assigning an undeclared setting raises. with self.assertRaises(KeyError): a.undefined = True with self.assertRaises(KeyError): a['undefined'] = True # Basic type validation. a.string = 'foo' a.string = 'foo' with self.assertRaises(TypeError): a.string = False a.boolean = True a.boolean = False with self.assertRaises(TypeError): a.boolean = 'foo' a.pos_int = 5 a.pos_int = 0 with self.assertRaises(ValueError): a.pos_int = -1 with self.assertRaises(TypeError): a.pos_int = 'foo' a.int = 5 a.int = 0 a.int = -5 with self.assertRaises(TypeError): a.int = 1.24 with self.assertRaises(TypeError): a.int = 'foo' a.abs_path = '/home/gps' with self.assertRaises(ValueError): a.abs_path = 'home/gps' a.rel_path = 'home/gps' a.rel_path = './foo/bar' a.rel_path = 'foo.c' with self.assertRaises(ValueError): a.rel_path = '/foo/bar' a.path = '/home/gps' a.path = 'foo.c' a.path = 'foo/bar' a.path = './foo'
def test_empty(self): s = ConfigSettings() self.assertEqual(len(s), 0) self.assertNotIn('foo', s)
def inner(args): mach.settings = ConfigSettings() return mach.run(args)
def read(path): s = ConfigSettings() s.register_provider(TelemetrySettings) s.register_provider(OtherSettings) s.load_file(path) return s
def settings(): s = ConfigSettings() s.register_provider(TelemetrySettings) s.register_provider(OtherSettings) return s