comparison 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
comparison
equal deleted inserted replaced
275:e2fd8fea1a4c 276:af371f9c016d
306 if isinstance(v, dict): 306 if isinstance(v, dict):
307 _check(v) 307 _check(v)
308 308
309 _check(cfg) 309 _check(cfg)
310 310
311 def test07_deletions(self):
312 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"),
313 os.path.join(TESTDATADIR, "conf21.yml"),
314 os.path.join(TESTDATADIR, "conf22.ini"),
315 os.path.join(TESTDATADIR, "conf23.json"),
316 os.path.join(TESTDATADIR, "conf24.toml"),
317 os.path.join(TESTDATADIR, "delete-in-dict.yml"))
318 # automatic clean-up
319 self.assertRaises(KeyError, cfg.getvar_s, "not-deleted")
320 # explicit deletion
321 self.assertRaises(KeyError, cfg.getvar_s, "to-be-deleted")
322 self.assertRaises(KeyError, cfg.getvar_s, "db.user.name")
323 self.assertEqual("the-database-password-2",cfg.getvar_s("db.user.pwd"))
324 self.assertRaises(KeyError, cfg.getvar_s, "test.Str")
325 self.assertEqual("not a list any more", cfg.getvar_s("test.List"))
326 self.assertEqual("the last value",
327 cfg.getvar_s("to-be-deleted-but-reassigned"))
328
311 329
312 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase): 330 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):
313 331
314 def setUp(self): 332 def setUp(self):
315 self._load = configmix.load 333 self._load = configmix.load
316 334
317 def test07_identity(self): 335 def test08_identity(self):
318 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) 336 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
319 cfg2 = configmix.merge(cfg, None) 337 cfg2 = configmix.merge(cfg, None)
320 self.assertEqual(id(cfg), id(cfg2)) 338 self.assertEqual(id(cfg), id(cfg2))
321 339
322 def test08_identity(self): 340 def test09_identity(self):
323 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) 341 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
324 cfg2 = configmix.merge(cfg, {}) 342 cfg2 = configmix.merge(cfg, {})
325 self.assertEqual(id(cfg), id(cfg2)) 343 self.assertEqual(id(cfg), id(cfg2))
326 344
327 345
328 class T03SafeLoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase): 346 class T03SafeLoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):
329 347
330 def setUp(self): 348 def setUp(self):
331 self._load = configmix.safe_load 349 self._load = configmix.safe_load
332 350
333 def test07_deepcopy(self): 351 def test08_deepcopy(self):
334 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) 352 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
335 cfg2 = configmix.safe_merge(cfg, None) 353 cfg2 = configmix.safe_merge(cfg, None)
336 self.assertNotEqual(id(cfg), id(cfg2)) 354 self.assertNotEqual(id(cfg), id(cfg2))
337 355
338 def test08_deepcopy(self): 356 def test09_deepcopy(self):
339 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) 357 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
340 cfg2 = configmix.safe_merge(cfg, {}) 358 cfg2 = configmix.safe_merge(cfg, {})
341 self.assertNotEqual(id(cfg), id(cfg2)) 359 self.assertNotEqual(id(cfg), id(cfg2))
342 360
343 361
456 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) 474 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
457 self.assertEqual("the 2 value", cfg.getvar_s("key101")) 475 self.assertEqual("the 2 value", cfg.getvar_s("key101"))
458 476
459 def test04_expand_intint2str_ini(self): 477 def test04_expand_intint2str_ini(self):
460 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) 478 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
461 self.assertEqual("22", cfg.getvar_s("key103")) 479 self.assertEqual("22", cfg.getvar_s("key103"))
462 480
463 481
464 if __name__ == "__main__": 482 if __name__ == "__main__":
465 unittest.main() 483 unittest.main()