def test_restore(self): config_file = tempfile.NamedTemporaryFile() config_path = config_file.name config_file.close() # Restore after use. try: config_file = open(config_path, 'w') config_file.write(content) config_file.close() config = utils_config.SectionlessConfig(config_path) try: # Change the config. config['f'] = 'test' self.assertEqual(config['f'], 'test') del config['e'] finally: config.restore() finally: final_file = open(config_path) try: self.assertEqual(final_file.read(), content) finally: final_file.close() os.remove(config_path) # Don't restore after use. try: config_file = open(config_path, 'w') config_file.write(content) config_file.close() config = utils_config.SectionlessConfig(config_path) # Change the config. config['f'] = 'test' self.assertEqual(config['f'], 'test') del config['e'] finally: final_file = open(config_path) try: self.assertEqual(final_file.read(), changed_content) finally: final_file.close() os.remove(config_path)
def test_sync_file(self): config_file = tempfile.NamedTemporaryFile() config_path = config_file.name config_file.close() try: config_file = open(config_path, 'w') config_file.write(content) config_file.close() config = utils_config.SectionlessConfig(config_path) try: # Change the config. config['f'] = 'test' self.assertEqual(config['f'], 'test') del config['e'] # Test the change is applied to target file. cur_file = open(config_path) try: self.assertEqual(cur_file.read(), changed_content) finally: cur_file.close() finally: config.restore() finally: os.remove(config_path)
def test_accessers(self): config_file = tempfile.NamedTemporaryFile() config_path = config_file.name config_file.close() try: config_file = open(config_path, 'w') config_file.write(content) config_file.close() # Test 'try...finally...' usage. config = utils_config.SectionlessConfig(config_path) try: # Test loader. self.assertEqual(len(config), 5) self.assertEqual(config['a'], '1') self.assertEqual(config['b'], '[hi, there]') self.assertEqual(config['c'], 'hello') self.assertEqual(config['d'], '"hi, there"') self.assertEqual(config['e'], '[hi,\nthere]') # Test getter. try: config['f'] except Exception, e: self.assertEqual(utils_config.ConfigNoOptionError, e.__class__) self.assertTrue('no option' in str(e)) # Test setter. config['f'] = 'test' self.assertEqual(config['f'], 'test') # Test deleter. # delete exist option. del config['f'] # delete non-exist option. try: del config['f'] except Exception, e: self.assertEqual(utils_config.ConfigNoOptionError, e.__class__) self.assertTrue('no option' in str(e)) # Test contain. self.assertTrue('a' in config) self.assertFalse('f' in config)
def test_specific_accessers(self): config_file = tempfile.NamedTemporaryFile() config_path = config_file.name config_file.close() try: config_file = open(config_path, 'w') config_file.write(content) config_file.close() config = utils_config.SectionlessConfig(config_path) try: config.set_string('a', 'Hi') self.assertEqual(config['a'], '"Hi"') self.assertEqual(config.get_string('a'), 'Hi') config['a'] = "'Hi'" self.assertEqual(config.get_string('a'), 'Hi') config['a'] = 'Hi' self.assertRaises(ValueError, config.get_string, 'a') config['a'] = '"Hi' self.assertRaises(ValueError, config.get_string, 'a') config.set_int('a', 15) self.assertEqual(config['a'], '15') self.assertEqual(config.get_int('a'), 15) config.set_int('a', -15) self.assertEqual(config.get_int('a'), -15) config.set_string('a', 'invalid') self.assertRaises(ValueError, config.get_float, 'a') config.set_float('a', 15.123) self.assertEqual(config['a'], '15.123') self.assertEqual(config.get_float('a'), 15.123) config.set_string('a', 'invalid') self.assertRaises(ValueError, config.get_float, 'a') config.set_boolean('a', True) self.assertEqual(config['a'], '1') self.assertTrue(config.get_boolean('a')) config.set_string('a', 'Yes') self.assertTrue(config.get_boolean('a')) config.set_string('a', 'ON') self.assertTrue(config.get_boolean('a')) config.set_boolean('a', False) self.assertEqual(config['a'], '0') self.assertFalse(config.get_boolean('a')) config.set_string('a', 'fAlSe') self.assertFalse(config.get_boolean('a')) config.set_string('a', 'off') self.assertFalse(config.get_boolean('a')) config.set_string('a', 'invalid') self.assertRaises(ValueError, config.get_boolean, 'a') config.set_list('a', [15, 'Hello']) self.assertEqual(config['a'], '["15", "Hello"]') config.set_list('a', [15, 'Hello']) self.assertEqual(config.get_list('a'), ["15", "Hello"]) config['a'] = '[15, \n "Hello"]' self.assertEqual(config.get_list('a'), ["15", "Hello"]) config['a'] = '[15, "Hi, there"]' self.assertEqual(config.get_list('a'), ["15", "Hi, there"]) finally: config.restore() finally: os.remove(config_path)
try: del config['f'] except Exception, e: self.assertEqual(utils_config.ConfigNoOptionError, e.__class__) self.assertTrue('no option' in str(e)) # Test contain. self.assertTrue('a' in config) self.assertFalse('f' in config) finally: config.restore() # Test 'with' usage. with utils_config.SectionlessConfig(config_path) as config: # Test loader. self.assertEqual(len(config), 5) self.assertEqual(config['a'], '1') self.assertEqual(config['b'], '[hi, there]') self.assertEqual(config['c'], 'hello') self.assertEqual(config['d'], '"hi, there"') self.assertEqual(config['e'], '[hi,\nthere]') # Test getter. try: config['f'] except Exception, e: self.assertEqual(utils_config.ConfigNoOptionError, e.__class__) self.assertTrue('no option' in str(e))