summaryrefslogtreecommitdiffstats
path: root/testsuite/common.py
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/common.py')
-rw-r--r--testsuite/common.py54
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(""))
-