Mercurial > hgrepos > Python > libs > ConfigMix
comparison tests/test.py @ 314:043a6412be3c
Implemented new access methods .getvarl() and .getvarl_s
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 05 May 2021 01:32:07 +0200 |
| parents | 15a1d5fd0aa1 |
| children | 98490375d90c |
comparison
equal
deleted
inserted
replaced
| 313:15a1d5fd0aa1 | 314:043a6412be3c |
|---|---|
| 286 os.path.join(TESTDATADIR, "conf22.ini")) | 286 os.path.join(TESTDATADIR, "conf22.ini")) |
| 287 self.assertEqual(u(os.getcwd()), cfg.getvar("OS:cwd")) | 287 self.assertEqual(u(os.getcwd()), cfg.getvar("OS:cwd")) |
| 288 self.assertEqual(u(platform.python_version()), | 288 self.assertEqual(u(platform.python_version()), |
| 289 cfg.getvar_s("PY:version")) | 289 cfg.getvar_s("PY:version")) |
| 290 | 290 |
| 291 def test03_namespace_l(self): | |
| 292 cfg = self._load( | |
| 293 os.path.join(TESTDATADIR, "conf20.yml"), | |
| 294 os.path.join(TESTDATADIR, "conf21.yml"), | |
| 295 os.path.join(TESTDATADIR, "conf22.ini")) | |
| 296 self.assertEqual(u(os.getcwd()), cfg.getvarl("cwd", namespace="OS")) | |
| 297 self.assertEqual(u(platform.python_version()), | |
| 298 cfg.getvarl_s("version", namespace="PY")) | |
| 299 | |
| 291 def test04_no_filter(self): | 300 def test04_no_filter(self): |
| 292 cfg = self._load( | 301 cfg = self._load( |
| 293 os.path.join(TESTDATADIR, "conf20.yml"), | 302 os.path.join(TESTDATADIR, "conf20.yml"), |
| 294 os.path.join(TESTDATADIR, "conf21.yml"), | 303 os.path.join(TESTDATADIR, "conf21.yml"), |
| 295 os.path.join(TESTDATADIR, "conf22.ini")) | 304 os.path.join(TESTDATADIR, "conf22.ini")) |
| 296 | 305 |
| 297 def _look(): | 306 def _look(): |
| 298 return cfg.getvar("OS:cwd|upper") | 307 return cfg.getvar("OS:cwd|upper") |
| 308 | |
| 309 self.assertRaises(KeyError, _look) | |
| 310 | |
| 311 def test04_no_filter_l(self): | |
| 312 cfg = self._load( | |
| 313 os.path.join(TESTDATADIR, "conf20.yml"), | |
| 314 os.path.join(TESTDATADIR, "conf21.yml"), | |
| 315 os.path.join(TESTDATADIR, "conf22.ini")) | |
| 316 | |
| 317 def _look(): | |
| 318 return cfg.getvarl("cwd|upper", namespace="OS") | |
| 299 | 319 |
| 300 self.assertRaises(KeyError, _look) | 320 self.assertRaises(KeyError, _look) |
| 301 | 321 |
| 302 def test05_comments(self): | 322 def test05_comments(self): |
| 303 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"), | 323 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"), |
| 314 # Variables with leading underscores are *not* imported by default | 334 # Variables with leading underscores are *not* imported by default |
| 315 self.assertEqual(0o0027, int(cfg.getvar_s("process.umask"), 0)) | 335 self.assertEqual(0o0027, int(cfg.getvar_s("process.umask"), 0)) |
| 316 self.assertRaises(KeyError, _c("process.__doc1")) | 336 self.assertRaises(KeyError, _c("process.__doc1")) |
| 317 self.assertRaises(KeyError, _c("db.__comment1")) | 337 self.assertRaises(KeyError, _c("db.__comment1")) |
| 318 self.assertRaises(KeyError, _c("db.user.__doc2")) | 338 self.assertRaises(KeyError, _c("db.user.__doc2")) |
| 339 | |
| 340 def test05_comments_l(self): | |
| 341 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"), | |
| 342 os.path.join(TESTDATADIR, "conf21.yml"), | |
| 343 os.path.join(TESTDATADIR, "conf22.ini"), | |
| 344 os.path.join(TESTDATADIR, "conf23.json"), | |
| 345 os.path.join(TESTDATADIR, "conf24.toml")) | |
| 346 | |
| 347 def _c(*names): | |
| 348 def _f(): | |
| 349 cfg.getvarl_s(*names) | |
| 350 return _f | |
| 351 | |
| 352 # Variables with leading underscores are *not* imported by default | |
| 353 self.assertEqual(0o0027, int(cfg.getvarl_s("process", "umask"), 0)) | |
| 354 self.assertRaises(KeyError, _c("process", "__doc1")) | |
| 355 self.assertRaises(KeyError, _c("db", "__comment1")) | |
| 356 self.assertRaises(KeyError, _c("db", "user", "__doc2")) | |
| 319 | 357 |
| 320 def test06_check_all_comments(self): | 358 def test06_check_all_comments(self): |
| 321 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"), | 359 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"), |
| 322 os.path.join(TESTDATADIR, "conf21.yml"), | 360 os.path.join(TESTDATADIR, "conf21.yml"), |
| 323 os.path.join(TESTDATADIR, "conf22.ini"), | 361 os.path.join(TESTDATADIR, "conf22.ini"), |
| 348 self.assertRaises(KeyError, cfg.getvar_s, "test.Str") | 386 self.assertRaises(KeyError, cfg.getvar_s, "test.Str") |
| 349 self.assertEqual("not a list any more", cfg.getvar_s("test.List")) | 387 self.assertEqual("not a list any more", cfg.getvar_s("test.List")) |
| 350 self.assertEqual("the last value", | 388 self.assertEqual("the last value", |
| 351 cfg.getvar_s("to-be-deleted-but-reassigned")) | 389 cfg.getvar_s("to-be-deleted-but-reassigned")) |
| 352 | 390 |
| 391 def test07_deletions_l(self): | |
| 392 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"), | |
| 393 os.path.join(TESTDATADIR, "conf21.yml"), | |
| 394 os.path.join(TESTDATADIR, "conf22.ini"), | |
| 395 os.path.join(TESTDATADIR, "conf23.json"), | |
| 396 os.path.join(TESTDATADIR, "conf24.toml"), | |
| 397 os.path.join(TESTDATADIR, "delete-in-dict.yml")) | |
| 398 # automatic clean-up | |
| 399 self.assertRaises(KeyError, cfg.getvarl_s, "not-deleted") | |
| 400 # explicit deletion | |
| 401 self.assertRaises(KeyError, cfg.getvarl_s, "to-be-deleted") | |
| 402 self.assertRaises(KeyError, cfg.getvarl_s, "db" "user.name") | |
| 403 self.assertEqual("the-database-password-2", | |
| 404 cfg.getvarl_s("db", "user", "pwd")) | |
| 405 self.assertRaises(KeyError, cfg.getvarl_s, "test", "Str") | |
| 406 self.assertEqual("not a list any more", cfg.getvarl_s("test", "List")) | |
| 407 self.assertEqual("the last value", | |
| 408 cfg.getvarl_s("to-be-deleted-but-reassigned")) | |
| 409 | |
| 353 | 410 |
| 354 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase): | 411 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase): |
| 355 | 412 |
| 356 def setUp(self): | 413 def setUp(self): |
| 357 self._load = configmix.load | 414 self._load = configmix.load |
| 488 | 545 |
| 489 def test01_expand_int_ini(self): | 546 def test01_expand_int_ini(self): |
| 490 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) | 547 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) |
| 491 self.assertEqual(2, cfg.getvar_s("key100")) | 548 self.assertEqual(2, cfg.getvar_s("key100")) |
| 492 | 549 |
| 550 def test01_expand_int_ini_l(self): | |
| 551 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) | |
| 552 self.assertEqual(2, cfg.getvarl_s("key100")) | |
| 553 | |
| 493 def test02_expand_int_indirect_ini(self): | 554 def test02_expand_int_indirect_ini(self): |
| 494 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) | 555 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) |
| 495 self.assertEqual(2, cfg.getvar_s("key102")) | 556 self.assertEqual(2, cfg.getvar_s("key102")) |
| 496 | 557 |
| 558 def test02_expand_int_indirect_ini_l(self): | |
| 559 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) | |
| 560 self.assertEqual(2, cfg.getvarl_s("key102")) | |
| 561 | |
| 497 def test03_expand_int2str_ini(self): | 562 def test03_expand_int2str_ini(self): |
| 498 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) | 563 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) |
| 499 self.assertEqual("the 2 value", cfg.getvar_s("key101")) | 564 self.assertEqual("the 2 value", cfg.getvar_s("key101")) |
| 500 | 565 |
| 566 def test03_expand_int2str_ini_l(self): | |
| 567 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) | |
| 568 self.assertEqual("the 2 value", cfg.getvarl_s("key101")) | |
| 569 | |
| 501 def test04_expand_intint2str_ini(self): | 570 def test04_expand_intint2str_ini(self): |
| 502 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) | 571 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) |
| 503 self.assertEqual("22", cfg.getvar_s("key103")) | 572 self.assertEqual("22", cfg.getvar_s("key103")) |
| 573 | |
| 574 def test04_expand_intint2str_ini_l(self): | |
| 575 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini")) | |
| 576 self.assertEqual("22", cfg.getvarl_s("key103")) | |
| 504 | 577 |
| 505 | 578 |
| 506 class T06References(unittest.TestCase): | 579 class T06References(unittest.TestCase): |
| 507 | 580 |
| 508 def setUp(self): | 581 def setUp(self): |
| 531 self._cfg.getvar("wsgi.profiler.params.type")) | 604 self._cfg.getvar("wsgi.profiler.params.type")) |
| 532 self.assertTrue(self._cfg.getvar("wsgi.profiler.params.params.evalex")) | 605 self.assertTrue(self._cfg.getvar("wsgi.profiler.params.params.evalex")) |
| 533 self.assertEqual(self._cfg.getvar("wsgi.debugger"), | 606 self.assertEqual(self._cfg.getvar("wsgi.debugger"), |
| 534 self._cfg.getvar("wsgi.profiler.params")) | 607 self._cfg.getvar("wsgi.profiler.params")) |
| 535 | 608 |
| 609 def test01_reference_without_expansions_l(self): | |
| 610 self.assertTrue(isinstance(self._cfg.getvarl("wsgi", "profiler"), dict)) | |
| 611 self.assertTrue(isinstance( | |
| 612 self._cfg.getvarl("wsgi", "profiler", "params"), dict)) | |
| 613 self.assertEqual( | |
| 614 "werkzeug", | |
| 615 self._cfg.getvarl("wsgi", "profiler", "params", "type")) | |
| 616 self.assertTrue(self._cfg.getvarl( | |
| 617 "wsgi", "profiler", "params", "params", "evalex")) | |
| 618 self.assertEqual(self._cfg.getvarl("wsgi", "debugger"), | |
| 619 self._cfg.getvarl("wsgi", "profiler", "params")) | |
| 620 | |
| 536 def test02_reference__with_expansions(self): | 621 def test02_reference__with_expansions(self): |
| 537 self.assertTrue(isinstance(self._cfg.getvar_s("wsgi.profiler"), dict)) | 622 self.assertTrue(isinstance(self._cfg.getvar_s("wsgi.profiler"), dict)) |
| 538 self.assertTrue(isinstance( | 623 self.assertTrue(isinstance( |
| 539 self._cfg.getvar_s("wsgi.profiler.params"), dict)) | 624 self._cfg.getvar_s("wsgi.profiler.params"), dict)) |
| 540 self.assertTrue( | 625 self.assertTrue( |
| 541 self._cfg.getvar_s("wsgi.profiler.params.params.evalex")) | 626 self._cfg.getvar_s("wsgi.profiler.params.params.evalex")) |
| 542 self.assertEqual("werkzeug", | 627 self.assertEqual("werkzeug", |
| 543 self._cfg.getvar_s("wsgi.profiler.params.type")) | 628 self._cfg.getvar_s("wsgi.profiler.params.type")) |
| 544 | 629 |
| 630 def test02_reference__with_expansions_l(self): | |
| 631 self.assertTrue(isinstance( | |
| 632 self._cfg.getvarl_s("wsgi", "profiler"), dict)) | |
| 633 self.assertTrue(isinstance( | |
| 634 self._cfg.getvarl_s("wsgi", "profiler", "params"), dict)) | |
| 635 self.assertTrue( | |
| 636 self._cfg.getvarl_s("wsgi", "profiler", "params", "params", "evalex")) | |
| 637 self.assertEqual( | |
| 638 "werkzeug", | |
| 639 self._cfg.getvarl_s("wsgi", "profiler", "params", "type")) | |
| 640 | |
| 545 def test03_no_direct_attribute_access_to_expanded_references(self): | 641 def test03_no_direct_attribute_access_to_expanded_references(self): |
| 546 self.assertEqual( | 642 self.assertEqual( |
| 547 "{{ref:#wsgi.debugger}}", | 643 "{{ref:#wsgi.debugger}}", |
| 548 self._cfg.wsgi.profiler.params) | 644 self._cfg.wsgi.profiler.params) |
| 549 try: | 645 try: |
| 558 "werkzeug", | 654 "werkzeug", |
| 559 self._cfg.getvar_s("testref.here.params.type")) | 655 self._cfg.getvar_s("testref.here.params.type")) |
| 560 self.assertTrue( | 656 self.assertTrue( |
| 561 self._cfg.getvar_s("testref.here.params.params.evalex")) | 657 self._cfg.getvar_s("testref.here.params.params.evalex")) |
| 562 | 658 |
| 659 def test04_indirect_recursive_references_l(self): | |
| 660 self.assertEqual( | |
| 661 "werkzeug", | |
| 662 self._cfg.getvarl_s("testref", "here", "params", "type")) | |
| 663 self.assertTrue( | |
| 664 self._cfg.getvarl_s("testref", "here", "params", "params", "evalex")) | |
| 665 | |
| 563 def test05_recursive_expansion(self): | 666 def test05_recursive_expansion(self): |
| 564 c = self._cfg.getvar_s("testref") | 667 c = self._cfg.getvar_s("testref") |
| 565 self.assertTrue(c["here"]["params"]["params"]["evalex"]) | 668 self.assertTrue(c["here"]["params"]["params"]["evalex"]) |
| 566 | 669 |
| 670 def test05_recursive_expansion_l(self): | |
| 671 c = self._cfg.getvarl_s("testref") | |
| 672 self.assertTrue(c["here"]["params"]["params"]["evalex"]) | |
| 673 | |
| 567 def test06_no_recursive_expansion_in_getvar_parents(self): | 674 def test06_no_recursive_expansion_in_getvar_parents(self): |
| 568 v = self._cfg.getvar("wsgi.profiler") | 675 v = self._cfg.getvar("wsgi.profiler") |
| 569 self.assertEqual( | 676 self.assertEqual( |
| 570 "{{ref:#wsgi.debugger}}", | 677 "{{ref:#wsgi.debugger}}", |
| 571 v["params"]) | 678 v["params"]) |
| 572 | 679 |
| 680 def test06_no_recursive_expansion_in_getvar_parents_l(self): | |
| 681 v = self._cfg.getvarl("wsgi", "profiler") | |
| 682 self.assertEqual( | |
| 683 "{{ref:#wsgi.debugger}}", | |
| 684 v["params"]) | |
| 685 | |
| 573 def test07_explicit_reference_expansion(self): | 686 def test07_explicit_reference_expansion(self): |
| 574 v = self._cfg.getvar("wsgi.profiler") | 687 v = self._cfg.getvar("wsgi.profiler") |
| 688 self.assertTrue(isinstance(self._cfg.expand_if_reference(v["params"]), | |
| 689 dict)) | |
| 690 | |
| 691 def test07_explicit_reference_expansion_l(self): | |
| 692 v = self._cfg.getvarl("wsgi", "profiler") | |
| 575 self.assertTrue(isinstance(self._cfg.expand_if_reference(v["params"]), | 693 self.assertTrue(isinstance(self._cfg.expand_if_reference(v["params"]), |
| 576 dict)) | 694 dict)) |
| 577 | 695 |
| 578 def test08_explicit_indirect_expansion_through_value(self): | 696 def test08_explicit_indirect_expansion_through_value(self): |
| 579 v = self._cfg.getvar_s("expand-ref-value.key0") | 697 v = self._cfg.getvar_s("expand-ref-value.key0") |
| 581 self.assertTrue(v) | 699 self.assertTrue(v) |
| 582 # but not that .getvar does not **not** | 700 # but not that .getvar does not **not** |
| 583 v2 = self._cfg.getvar("expand-ref-value.key0") | 701 v2 = self._cfg.getvar("expand-ref-value.key0") |
| 584 self.assertEqual("{{testref.here.params.params.evalex}}", v2) | 702 self.assertEqual("{{testref.here.params.params.evalex}}", v2) |
| 585 | 703 |
| 704 def test08_explicit_indirect_expansion_through_value_l(self): | |
| 705 v = self._cfg.getvarl_s("expand-ref-value", "key0") | |
| 706 self.assertTrue(isinstance(v, bool)) | |
| 707 self.assertTrue(v) | |
| 708 # but not that .getvar does not **not** | |
| 709 v2 = self._cfg.getvarl("expand-ref-value", "key0") | |
| 710 self.assertEqual("{{testref.here.params.params.evalex}}", v2) | |
| 711 | |
| 586 | 712 |
| 587 if __name__ == "__main__": | 713 if __name__ == "__main__": |
| 588 unittest.main() | 714 unittest.main() |
