Browse Source

New testrunner!

Rafał Pitoń 11 years ago
parent
commit
f4403b85b0
6 changed files with 34 additions and 7 deletions
  1. 3 0
      .gitignore
  2. 1 3
      .travis.yml
  3. 1 0
      misago/bin/misago-start.py
  4. 7 4
      misago/core/setup.py
  5. 21 0
      runtests.py
  6. 1 0
      setup.py

+ 3 - 0
.gitignore

@@ -45,6 +45,9 @@ coverage.xml
 *.log
 *.pot
 
+# Misago test runner project
+testproject/
+
 # Sphinx documentation
 docs/_build/
 

+ 1 - 3
.travis.yml

@@ -2,9 +2,7 @@ language: python
 python:
   - "2.7"
 install:
-  - python setup.py install
-  - misago-start.py testproject
   - pip install coveralls
 script:
-  - coverage run --source=misago testproject/manage.py test
+  - coverage run --source=misago setup.py test
   - coveralls

+ 1 - 0
misago/bin/misago-start.py

@@ -1,5 +1,6 @@
 #!/usr/bin/env python
 from misago.core.setup import start_misago_project
 
+
 if __name__ == "__main__":
     start_misago_project()

+ 7 - 4
misago/core/setup.py

@@ -4,6 +4,11 @@ from optparse import OptionParser
 from django.core import management
 
 
+def get_misago_project_template():
+    misago_path = os.path.dirname(os.path.dirname(__file__))
+    return os.path.join(misago_path, 'project_template')
+
+
 def start_misago_project():
     parser = OptionParser(usage="usage: %prog project_name")
     (options, args) = parser.parse_args()
@@ -26,9 +31,7 @@ def start_misago_project():
                      "Python module and cannot be used as a project "
                      "name. Please try another name." % project_name)
 
-    misago_base_dir = os.path.dirname(os.path.dirname(__file__))
-    project_template_path = os.path.join(misago_base_dir, 'project_template')
-
     argv = ['start-misago.py', 'startproject', project_name,
-            '--template=%s' % project_template_path]
+            '--template=%s' % get_misago_project_template()]
+
     management.execute_from_command_line(argv)

+ 21 - 0
runtests.py

@@ -0,0 +1,21 @@
+def runtests():
+    import atexit, os, shutil, sys
+
+    test_runner_path = os.path.dirname(__file__)
+    project_template_path = os.path.join(
+        test_runner_path, 'misago/project_template/project_name')
+
+    test_project_path = os.path.join(test_runner_path, "testproject")
+    if not os.path.exists(test_project_path):
+        shutil.copytree(project_template_path, test_project_path)
+
+        settings_path = os.path.join(test_project_path, "settings.py")
+        with open(settings_path, "r") as py_file:
+            settings_file = py_file.read().replace("{{ project_name }}",
+                                                   "testproject")
+        with open(settings_path, "w") as py_file:
+            py_file.write(settings_file)
+
+    os.environ["DJANGO_SETTINGS_MODULE"] = "testproject.settings"
+    from django.core.management.commands import test
+    sys.exit(test.Command().execute(verbosity=1))

+ 1 - 0
setup.py

@@ -33,6 +33,7 @@ setup(
     entry_points={'console_scripts': [
         'misago-start = misago.core.setup:start_misago_project',
     ]},
+    test_suite="runtests.runtests",
     classifiers=[
         'Development Status :: 2 - Pre-Alpha',
         'Environment :: Web Environment',