Browse Source

Changing test runner for Django 1.7

Rafał Pitoń 11 years ago
parent
commit
8c62815d55
4 changed files with 60 additions and 7 deletions
  1. 4 0
      .travis.yml
  2. 1 1
      misago/project_template/requirements.txt
  3. 50 6
      runtests.py
  4. 5 0
      setup.py

+ 4 - 0
.travis.yml

@@ -1,8 +1,12 @@
+addons:
+  postgresql: "9.3"
 language: python
 python:
   - "2.7"
 install:
   - pip install coveralls
+before_script:
+  - psql -c 'create database travis_ci_test;' -U postgres
 script:
   - coverage run --source=misago setup.py test
 after_success:

+ 1 - 1
misago/project_template/requirements.txt

@@ -1,4 +1,4 @@
-git+https://github.com/django/django.git@stable/1.7.x#egg=django
+-e git+https://github.com/django/django.git@stable/1.7.x#egg=django
 bleach==1.4
 django-debug-toolbar==1.2.1
 django-crispy-forms==1.4.0

+ 50 - 6
runtests.py

@@ -1,8 +1,13 @@
-def runtests():
-    import os
-    import shutil
-    import sys
+import os
+import pwd
+import shutil
+import sys
+from django import setup
+from django.core.management import call_command
+from django.test.utils import setup_test_environment
+
 
+def runtests():
     test_runner_path = os.path.dirname(__file__)
     project_template_path = os.path.join(
         test_runner_path, 'misago/project_template/project_name')
@@ -24,10 +29,49 @@ def runtests():
 EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
 """
 
+        if os.environ.get('TRAVIS'):
+            settings_file += """
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.postgresql_psycopg2',
+        'NAME': 'travis_ci_test',
+        'USER': 'postgres',
+        'PASSWORD': '',
+        'HOST': '127.0.0.1',
+        'PORT': '',
+    }
+}
+
+TEST_NAME = 'travis_ci_test'
+"""
+        else:
+            settings_file += """
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.postgresql_psycopg2',
+        'NAME': 'misago',
+        'USER': '%s',
+        'PASSWORD': '',
+        'HOST': '',
+        'PORT': '',
+    }
+}
+
+TEST_NAME = 'misagotestdb'
+""" % pwd.getpwuid(os.getuid())[0]
+
         with open(settings_path, "w") as py_file:
             py_file.write(settings_file)
 
-    os.environ["DJANGO_SETTINGS_MODULE"] = "testproject.settings"
+    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testproject.settings")
 
-    from south.management.commands import test
+    setup()
+    setup_test_environment()
+
+    from django.core.management.commands import test
     sys.exit(test.Command().execute(verbosity=1))
+
+
+if __name__ == '__main__':
+    runtests()

+ 5 - 0
setup.py

@@ -10,6 +10,8 @@ requirements_path = os.path.join(os.path.dirname(__file__),
 with open(requirements_path, "r") as f:
     REQUIREMENTS = [x.strip() for x in f.readlines()]
 
+REQUIREMENTS = REQUIREMENTS[1:]
+
 
 # allow setup.py to be run from any path
 os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
@@ -29,6 +31,9 @@ setup(
     author=u'Rafał Pitoń',
     author_email='kontakt@rpiton.com',
     install_requires=REQUIREMENTS,
+    dependency_links=[
+        'https://github.com/django/django/archive/stable/1.7.x.zip',
+    ],
     packages=find_packages(exclude=EXCLUDE_FROM_PACKAGES),
     include_package_data=True,
     scripts=['misago/bin/misago-start.py'],