diff options
Diffstat (limited to 'testsuite/common.py')
-rw-r--r-- | testsuite/common.py | 54 |
1 files changed, 41 insertions, 13 deletions
diff --git a/testsuite/common.py b/testsuite/common.py index e26d0be61..b375d3703 100644 --- a/testsuite/common.py +++ b/testsuite/common.py @@ -13,6 +13,8 @@ import re import sys import codecs import unittest +import lxml.etree +import Bcfg2.Options from mock import patch, MagicMock, _patch, DEFAULT from Bcfg2.Compat import wraps @@ -33,16 +35,34 @@ inPy3k = False if sys.hexversion >= 0x03000000: inPy3k = True + +#: A function to set a default config option if it's not already set +def set_setup_default(option, value=None): + if not hasattr(Bcfg2.Options.setup, option): + setattr(Bcfg2.Options.setup, option, value) + try: from django.core.management import setup_environ has_django = True os.environ['DJANGO_SETTINGS_MODULE'] = "Bcfg2.settings" + set_setup_default("db_engine", "sqlite3") + set_setup_default("db_name", + os.path.join(os.path.dirname(os.path.abspath(__file__)), + "test.sqlite")) + set_setup_default("db_user") + set_setup_default("db_password") + set_setup_default("db_host") + set_setup_default("db_port") + set_setup_default("db_opts", dict()) + set_setup_default("db_schema") + set_setup_default("timezone") + set_setup_default("web_debug", False) + set_setup_default("web_prefix") + import Bcfg2.settings - Bcfg2.settings.DATABASE_NAME = \ - os.path.join(os.path.dirname(os.path.abspath(__file__)), "test.sqlite") - Bcfg2.settings.DATABASES['default']['NAME'] = Bcfg2.settings.DATABASE_NAME + Bcfg2.settings.read_config() except ImportError: has_django = False @@ -265,11 +285,18 @@ class Bcfg2TestCase(unittest.TestCase): """ Test that the two XML trees given are equal. Both elements and all children are expected to have ``name`` attributes. """ - self.assertEqual(el1.tag, el2.tag, msg=msg) - self.assertEqual(el1.text, el2.text, msg=msg) - self.assertItemsEqual(el1.attrib.items(), el2.attrib.items(), msg=msg) + if msg is None: + msg = "XML trees were not equal" + fullmsg = msg + "\nFirst: %s" % lxml.etree.tostring(el1) + \ + "\nSecond: %s" % lxml.etree.tostring(el2) + + self.assertEqual(el1.tag, el2.tag, msg=fullmsg) + self.assertEqual(el1.text, el2.text, msg=fullmsg) + self.assertItemsEqual(el1.attrib.items(), el2.attrib.items(), + msg=fullmsg) self.assertEqual(len(el1.getchildren()), - len(el2.getchildren())) + len(el2.getchildren()), + msg=fullmsg) for child1 in el1.getchildren(): cname = child1.get("name") self.assertIsNotNone(cname, @@ -289,11 +316,13 @@ class DBModelTestCase(Bcfg2TestCase): @skipUnless(has_django, "Django not found, skipping") def test_syncdb(self): """ Create the test database and sync the schema """ - setup_environ(Bcfg2.settings) - import django.core.management - django.core.management.call_command("syncdb", interactive=False, - verbosity=0) - self.assertTrue(os.path.exists(Bcfg2.settings.DATABASE_NAME)) + if self.models: + setup_environ(Bcfg2.settings) + import django.core.management + django.core.management.call_command("syncdb", interactive=False, + verbosity=0) + self.assertTrue( + os.path.exists(Bcfg2.settings.DATABASES['default']['NAME'])) @skipUnless(has_django, "Django not found, skipping") def test_cleandb(self): @@ -394,4 +423,3 @@ try: re_type = re._pattern_type except AttributeError: re_type = type(re.compile("")) - |