diff --git a/.gitignore b/.gitignore index 448c25b7e..530d709e6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .*~$ *.pyc *.mo +modoboa_test.db modoboa.egg-info doc/.build doc/.static diff --git a/modoboa/admin/tests/test_account.py b/modoboa/admin/tests/test_account.py index 84787ff0c..2f98e5f05 100644 --- a/modoboa/admin/tests/test_account.py +++ b/modoboa/admin/tests/test_account.py @@ -1,5 +1,7 @@ # coding: utf-8 +from unittest import skipIf + from django.core.urlresolvers import reverse from django.test import override_settings @@ -7,6 +9,7 @@ from modoboa.core.models import User from modoboa.core import tests as core_tests from modoboa.lib import parameters from modoboa.lib.tests import ModoTestCase +from modoboa.lib.tests import NO_LDAP from .. import factories from .. import models @@ -171,6 +174,7 @@ class AccountTestCase(ModoTestCase): self.assertIn("Resources usage", response.content) +@skipIf(NO_LDAP, 'No ldap module installed') @override_settings(AUTHENTICATION_BACKENDS=( 'modoboa.lib.authbackends.LDAPBackend', 'modoboa.lib.authbackends.SimpleBackend', diff --git a/modoboa/core/tests.py b/modoboa/core/tests.py index 16871539f..7ba6aee1d 100644 --- a/modoboa/core/tests.py +++ b/modoboa/core/tests.py @@ -1,5 +1,7 @@ """Tests for core application.""" +from unittest import skipIf + import httmock from django.core import management @@ -9,6 +11,7 @@ from django.test import override_settings from modoboa.lib import exceptions from modoboa.lib import parameters from modoboa.lib.tests import ModoTestCase +from modoboa.lib.tests import NO_LDAP from . import factories from . import mocks @@ -44,6 +47,7 @@ class AuthenticationTestCase(ModoTestCase): self.assertTrue(response.url.endswith(reverse("admin:domain_list"))) +@skipIf(NO_LDAP, 'No ldap module installed') class LDAPTestCaseMixin(object): """Set of methods used to test LDAP features.""" diff --git a/modoboa/lib/tests.py b/modoboa/lib/tests.py index 163149f5d..271e972e7 100644 --- a/modoboa/lib/tests.py +++ b/modoboa/lib/tests.py @@ -13,6 +13,12 @@ from rest_framework.test import APITestCase from modoboa.lib import parameters from modoboa.core import models as core_models +try: + import ldap # NOQA + NO_LDAP = False +except ImportError: + NO_LDAP = True + class ModoTestCase(TestCase): diff --git a/modoboa/test_settings.py b/modoboa/test_settings.py index 50752c90b..521122610 100644 --- a/modoboa/test_settings.py +++ b/modoboa/test_settings.py @@ -20,6 +20,18 @@ if DB == 'MYSQL': }, + } +if DB == 'SQLITE': + DATABASES = { + + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': 'modoboa_test.db', + 'PORT': '', + 'ATOMIC_REQUESTS': True, + + }, + } else: DATABASES = { diff --git a/test_project/test_project/settings.py b/test_project/test_project/settings.py index 01c00d775..79ffdacbe 100644 --- a/test_project/test_project/settings.py +++ b/test_project/test_project/settings.py @@ -14,7 +14,7 @@ from logging.handlers import SysLogHandler from django.conf import global_settings -from modoboa.test_settings import * +from modoboa.test_settings import * # NOQA BASE_DIR = os.path.dirname(os.path.dirname(__file__)) @@ -26,12 +26,13 @@ BASE_DIR = os.path.dirname(os.path.dirname(__file__)) SECRET_KEY = '!8o(-dbbl3e+*bh7nx-^xysdt)1gso*%@4ze4-9_9o+i&t--u_' # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False +DEBUG = 'DEBUG' in os.environ -TEMPLATE_DEBUG = False +TEMPLATE_DEBUG = DEBUG ALLOWED_HOSTS = [ - 'localhost' + '127.0.0.1', + 'localhost', ] SITE_ID = 1 @@ -112,7 +113,7 @@ USE_TZ = True STATIC_URL = '/sitestatic/' STATIC_ROOT = os.path.join(BASE_DIR, 'sitestatic') STATICFILES_DIRS = ( - '/home/tonio/.pythonenvs/modoboa/lib/python2.7/site-packages/modoboa-1.3.3-py2.7.egg/modoboa/bower_components', + os.path.join(BASE_DIR, '..', 'modoboa', 'bower_components'), ) MEDIA_URL = '/media/' @@ -130,9 +131,9 @@ REST_FRAMEWORK = { } # Modoboa settings -#MODOBOA_CUSTOM_LOGO = os.path.join(MEDIA_URL, "custom_logo.png") +# MODOBOA_CUSTOM_LOGO = os.path.join(MEDIA_URL, "custom_logo.png") -#DOVECOT_LOOKUP_PATH = ('/path/to/dovecot', ) +# DOVECOT_LOOKUP_PATH = ('/path/to/dovecot', ) MODOBOA_API_URL = 'http://api.modoboa.org/1/' diff --git a/tox.ini b/tox.ini new file mode 100644 index 000000000..814029dc7 --- /dev/null +++ b/tox.ini @@ -0,0 +1,23 @@ +[tox] +envlist = py27 + +[testenv] +changedir=test_project +commands = + python ../tests.py + coverage run --source ../modoboa manage.py test modoboa.core modoboa.lib modoboa.admin.tests modoboa.limits modoboa.relaydomains +deps = + -r{toxinidir}/test-requirements.txt + coverage + psycopg2 +setenv = + DB=SQLITE + +[testenv:serve] +changedir=test_project +commands = + python manage.py migrate --no-input + python manage.py runserver +setenv = + DB=SQLITE + DEBUG=1