Browse Source

add a general test runner for wagtail, accessible by running './runtests.py' or 'make test' from the wagtail repo, or 'manage.py test wagtail' from a django project such as wagtaildemo

Matt Westcott 11 years ago
parent
commit
a77977a31c
6 changed files with 111 additions and 3 deletions
  1. 1 1
      Makefile
  2. 61 0
      runtests.py
  3. 8 0
      wagtail/tests/__init__.py
  4. 35 0
      wagtail/tests/urls.py
  5. 4 1
      wagtail/wagtailembeds/tests.py
  6. 2 1
      wagtail/wagtailsearch/tests.py

+ 1 - 1
Makefile

@@ -15,7 +15,7 @@ lint:
 	flake8 wagtail
 
 test:
-	python setup.py test
+	python runtests.py
 
 test-all:
 	tox

+ 61 - 0
runtests.py

@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+import sys, os, shutil
+
+from django.conf import settings, global_settings
+from django.core.management import execute_from_command_line
+
+WAGTAIL_ROOT = os.path.dirname(__file__)
+STATIC_ROOT = os.path.join(WAGTAIL_ROOT, 'test-static')
+
+if not settings.configured:
+    settings.configure(
+        DATABASES={
+            'default': {
+                'ENGINE': 'django.db.backends.postgresql_psycopg2',
+                'NAME': 'wagtaildemo',
+                'USER': 'postgres',
+            }
+        },
+        ROOT_URLCONF='wagtail.tests.urls',
+        STATIC_URL='/static/',
+        STATIC_ROOT=STATIC_ROOT,
+        STATICFILES_FINDERS = (
+            'django.contrib.staticfiles.finders.AppDirectoriesFinder',
+            'compressor.finders.CompressorFinder',
+        ),
+        TEMPLATE_CONTEXT_PROCESSORS=global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
+            'django.core.context_processors.request',
+        ),
+        INSTALLED_APPS=[
+            'django.contrib.contenttypes',
+            'django.contrib.sessions',
+            'django.contrib.auth',
+            'django.contrib.messages',
+            'django.contrib.staticfiles',
+
+            'taggit',
+            'south',
+            'compressor',
+
+            'wagtail.wagtailcore',
+            'wagtail.wagtailadmin',
+            'wagtail.wagtaildocs',
+            'wagtail.wagtailsnippets',
+            'wagtail.wagtailusers',
+            'wagtail.wagtailimages',
+            'wagtail.wagtailembeds',
+            'wagtail.wagtailsearch',
+            'wagtail.wagtailredirects',
+        ]
+    )
+
+
+def runtests():
+    argv = sys.argv[:1] + ['test'] + sys.argv[1:]
+    execute_from_command_line(argv)
+    shutil.rmtree(STATIC_ROOT, ignore_errors=True)
+
+
+if __name__ == '__main__':
+    runtests()
+

+ 8 - 0
wagtail/tests/__init__.py

@@ -0,0 +1,8 @@
+import wagtail.wagtailcore.tests
+import wagtail.wagtailadmin.tests
+import wagtail.wagtaildocs.tests
+import wagtail.wagtailembeds.tests
+import wagtail.wagtailimages.tests
+import wagtail.wagtailredirects.tests
+import wagtail.wagtailsearch.tests
+import wagtail.wagtailsnippets.tests

+ 35 - 0
wagtail/tests/urls.py

@@ -0,0 +1,35 @@
+from django.conf.urls import patterns, include, url
+
+from wagtail.wagtailcore import urls as wagtail_urls
+from wagtail.wagtailadmin import urls as wagtailadmin_urls
+from wagtail.wagtailimages import urls as wagtailimages_urls
+from wagtail.wagtailembeds import urls as wagtailembeds_urls
+from wagtail.wagtaildocs import admin_urls as wagtaildocs_admin_urls
+from wagtail.wagtaildocs import urls as wagtaildocs_urls
+from wagtail.wagtailsnippets import urls as wagtailsnippets_urls
+from wagtail.wagtailsearch.urls import frontend as wagtailsearch_frontend_urls, admin as wagtailsearch_admin_urls
+from wagtail.wagtailusers import urls as wagtailusers_urls
+from wagtail.wagtailredirects import urls as wagtailredirects_urls
+
+# Signal handlers
+from wagtail.wagtailsearch import register_signal_handlers as wagtailsearch_register_signal_handlers
+wagtailsearch_register_signal_handlers()
+
+
+urlpatterns = patterns('',
+    url(r'^admin/images/', include(wagtailimages_urls)),
+    url(r'^admin/embeds/', include(wagtailembeds_urls)),
+    url(r'^admin/documents/', include(wagtaildocs_admin_urls)),
+    url(r'^admin/snippets/', include(wagtailsnippets_urls)),
+    url(r'^admin/search/', include(wagtailsearch_admin_urls)),
+    url(r'^admin/users/', include(wagtailusers_urls)),
+    url(r'^admin/redirects/', include(wagtailredirects_urls)),
+    url(r'^admin/', include(wagtailadmin_urls)),
+    url(r'^search/', include(wagtailsearch_frontend_urls)),
+
+    url(r'^documents/', include(wagtaildocs_urls)),
+
+    # For anything not caught by a more specific rule above, hand over to
+    # Wagtail's serving mechanism
+    url(r'', include(wagtail_urls)),
+)

+ 4 - 1
wagtail/wagtailembeds/tests.py

@@ -4,7 +4,10 @@ from .embeds import get_embed
 
 
 class TestEmbeds(TestCase):
-    def test_get_embed(self):
+    # FIXME: test currently depends on a valid EMBEDLY_KEY being set - we don't particularly
+    # want to put one in runtests.py. See https://github.com/torchbox/wagtail/issues/26 for
+    # progress on eliminating Embedly as a dependency
+    def DISABLEDtest_get_embed(self):
         # This test will fail if the video is removed or the title is changed
         embed = get_embed('http://www.youtube.com/watch?v=S3xAeTmsJfg')
         self.assertEqual(embed.title, 'Animation: Ferret dance (A series of tubes)')

+ 2 - 1
wagtail/wagtailsearch/tests.py

@@ -371,7 +371,8 @@ class TestAdmin(TestCase):
 
         # Setup client
         self.c = Client()
-        self.c.login(username='test', password='password')
+        login = self.c.login(username='test', password='password')
+        self.assertEqual(login, True)
 
     def test_editors_picks(self):
         # Test index