diff tests/test.py @ 276:af371f9c016d

Allow deletion of key-value pairs when merging is done. When encountering the "{{::DEL::}}" special value the corresponding key-value pair is deleted.
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 03 Oct 2020 17:11:41 +0200
parents 2a8dcab2de8c
children 6a044778371a
line wrap: on
line diff
--- a/tests/test.py	Sat Oct 03 15:52:30 2020 +0200
+++ b/tests/test.py	Sat Oct 03 17:11:41 2020 +0200
@@ -308,18 +308,36 @@
 
         _check(cfg)
 
+    def test07_deletions(self):
+        cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"),
+                         os.path.join(TESTDATADIR, "conf21.yml"),
+                         os.path.join(TESTDATADIR, "conf22.ini"),
+                         os.path.join(TESTDATADIR, "conf23.json"),
+                         os.path.join(TESTDATADIR, "conf24.toml"),
+                         os.path.join(TESTDATADIR, "delete-in-dict.yml"))
+        # automatic clean-up
+        self.assertRaises(KeyError, cfg.getvar_s, "not-deleted")
+        # explicit deletion
+        self.assertRaises(KeyError, cfg.getvar_s, "to-be-deleted")
+        self.assertRaises(KeyError, cfg.getvar_s, "db.user.name")
+        self.assertEqual("the-database-password-2",cfg.getvar_s("db.user.pwd"))
+        self.assertRaises(KeyError, cfg.getvar_s, "test.Str")
+        self.assertEqual("not a list any more", cfg.getvar_s("test.List"))
+        self.assertEqual("the last value",
+                         cfg.getvar_s("to-be-deleted-but-reassigned"))
+
 
 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):
 
     def setUp(self):
         self._load = configmix.load
 
-    def test07_identity(self):
+    def test08_identity(self):
         cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
         cfg2 = configmix.merge(cfg, None)
         self.assertEqual(id(cfg), id(cfg2))
 
-    def test08_identity(self):
+    def test09_identity(self):
         cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
         cfg2 = configmix.merge(cfg, {})
         self.assertEqual(id(cfg), id(cfg2))
@@ -330,12 +348,12 @@
     def setUp(self):
         self._load = configmix.safe_load
 
-    def test07_deepcopy(self):
+    def test08_deepcopy(self):
         cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
         cfg2 = configmix.safe_merge(cfg, None)
         self.assertNotEqual(id(cfg), id(cfg2))
 
-    def test08_deepcopy(self):
+    def test09_deepcopy(self):
         cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
         cfg2 = configmix.safe_merge(cfg, {})
         self.assertNotEqual(id(cfg), id(cfg2))
@@ -458,7 +476,7 @@
 
     def test04_expand_intint2str_ini(self):
         cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
-        self.assertEqual("22", cfg.getvar_s("key103"))        
+        self.assertEqual("22", cfg.getvar_s("key103"))
 
 
 if __name__ == "__main__":