diff --git a/test.py b/test.py index fdb13352c9a115a207c0ba9c02a43e678c8f0d3d..ffed78556b7161535405418a453b36847fb2ea23 100644 --- a/test.py +++ b/test.py @@ -1712,12 +1712,48 @@ class UnicodeTestCase(MkexpSimpleTestCase): class ExpConfigTestCase(unittest.TestCase): + def setUp(self): + text = u""" + var1 = value1 + var2 = $var1 + [group] + var1 = value2 + var3 = $var2 + """ + self.config = expconfig.ConfigObj(text.split('\n')) + def test_default_interpolation_false(self): - config = expconfig.ConfigObj({ - 'var1': 'value1', - 'var2': '$var1', - }) - self.assertEqual(config['var2'], '$var1') + self.assertEqual(self.config['var2'], '$var1') + + def test_template_interpolation(self): + default_interpolation = self.config.interpolation + self.config.interpolation = 'template' + self.assertEqual(self.config['var2'], 'value1') + self.assertEqual(self.config['group']['var3'], 'value2') # sic! + self.config.interpolation = default_interpolation + + def test_odict(self): + odict = expconfig.odict(self.config) + self.assertEqual(self.config.dict(), odict) + + def test_alias_by_self_merge(self): + config = expconfig.ConfigObj(self.config) + config['merged'] = {} + config['merged'].merge(config) + # Change in merged group also changes origin + config['merged']['group']['var1'] = 'changed' + self.assertEqual(config['group']['var1'], 'changed') + # Change in merged scalar does not affect origin + config['merged']['var1'] = 'changed' + self.assertEqual(config['var1'], 'value1') + + def test_unalias_by_odict_merge(self): + config = expconfig.ConfigObj(self.config) + config['merged'] = {} + config['merged'].merge(expconfig.odict(config)) + # Change in merged group does not affect origin + config['merged']['group']['var1'] = 'changed' + self.assertEqual(config['group']['var1'], 'value2') if __name__ == '__main__': unittest.main()