diff options
| -rw-r--r-- | debug_toolbar/panels/sql.py | 4 | ||||
| -rw-r--r-- | debug_toolbar/runtests.py | 47 | ||||
| -rw-r--r-- | debug_toolbar/tests/__init__.py | 1 | ||||
| -rw-r--r-- | debug_toolbar/tests/templates/404.html | 0 | ||||
| -rw-r--r-- | debug_toolbar/tests/tests.py | 39 | ||||
| -rw-r--r-- | debug_toolbar/tests/urls.py | 14 | ||||
| -rw-r--r-- | debug_toolbar/tests/views.py | 7 | ||||
| -rw-r--r-- | setup.py | 5 |
8 files changed, 115 insertions, 2 deletions
diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py index a78a3e2..4c7b8a1 100644 --- a/debug_toolbar/panels/sql.py +++ b/debug_toolbar/panels/sql.py @@ -102,12 +102,12 @@ class CursorWrapper(object): def execute(self, sql, params=()): djdt = DebugToolbarMiddleware.get_current() if not djdt: - return self.cursor.execute(self, sql, params) + return self.cursor.execute(sql, params) panel = djdt.get_panel(SQLDebugPanel) start = datetime.now() try: - return self.cursor.execute(self, sql, params) + return self.cursor.execute(sql, params) finally: stop = datetime.now() duration = ms_from_timedelta(stop - start) diff --git a/debug_toolbar/runtests.py b/debug_toolbar/runtests.py new file mode 100644 index 0000000..f16882a --- /dev/null +++ b/debug_toolbar/runtests.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +import sys +from os.path import dirname, abspath + +from django.conf import settings + +if not settings.configured: + settings.configure( + DATABASE_ENGINE='sqlite3', + # HACK: this fixes our threaded runserver remote tests + # DATABASE_NAME='test_sentry', + # TEST_DATABASE_NAME='test_sentry', + INSTALLED_APPS=[ + 'django.contrib.auth', + 'django.contrib.admin', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + + 'debug_toolbar', + + 'debug_toolbar.tests', + ], + ROOT_URLCONF='', + DEBUG=False, + SITE_ID=1, + ) + import djcelery + djcelery.setup_loader() + +from django.test.simple import run_tests + +def runtests(*test_args): + if 'south' in settings.INSTALLED_APPS: + from south.management.commands import patch_for_test_db_setup + patch_for_test_db_setup() + + if not test_args: + test_args = ['debug_toolbar'] + parent = dirname(abspath(__file__)) + sys.path.insert(0, parent) + failures = run_tests(test_args, verbosity=1, interactive=True) + sys.exit(failures) + + +if __name__ == '__main__': + runtests(*sys.argv[1:])
\ No newline at end of file diff --git a/debug_toolbar/tests/__init__.py b/debug_toolbar/tests/__init__.py new file mode 100644 index 0000000..f853b10 --- /dev/null +++ b/debug_toolbar/tests/__init__.py @@ -0,0 +1 @@ +from tests import *
\ No newline at end of file diff --git a/debug_toolbar/tests/templates/404.html b/debug_toolbar/tests/templates/404.html new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/debug_toolbar/tests/templates/404.html diff --git a/debug_toolbar/tests/tests.py b/debug_toolbar/tests/tests.py new file mode 100644 index 0000000..cdc1947 --- /dev/null +++ b/debug_toolbar/tests/tests.py @@ -0,0 +1,39 @@ +from debug_toolbar.middleware import DebugToolbarMiddleware +from debug_toolbar.panels.sql import SQLDebugPanel +from debug_toolbar.toolbar.loader import DebugToolbar + +from django.contrib.auth.models import User +from django.test import TestCase + +from dingus import Dingus +import thread + +class BaseTestCase(TestCase): + def setUp(self): + request = Dingus('request') + toolbar = DebugToolbar(request) + DebugToolbarMiddleware.debug_toolbars[thread.get_ident()] = toolbar + self.toolbar = toolbar + +class DebugToolbarTestCase(BaseTestCase): + urls = 'debug_toolbar.tests.urls' + + def test_middleware(self): + resp = self.client.get('/execute_sql/') + self.assertEquals(resp.status_code, 200) + +class SQLPanelTestCase(BaseTestCase): + def test_recording(self): + panel = self.toolbar.get_panel(SQLDebugPanel) + self.assertEquals(len(panel._queries), 0) + + list(User.objects.all()) + + # ensure query was logged + self.assertEquals(len(panel._queries), 1) + query = panel._queries[0] + self.assertEquals(query[0], 'default') + self.assertTrue('sql' in query[1]) + self.assertTrue('duration' in query[1]) + self.assertTrue('stacktrace' in query[1]) +
\ No newline at end of file diff --git a/debug_toolbar/tests/urls.py b/debug_toolbar/tests/urls.py new file mode 100644 index 0000000..7c99b03 --- /dev/null +++ b/debug_toolbar/tests/urls.py @@ -0,0 +1,14 @@ +""" +URLpatterns for the debug toolbar. + +These should not be loaded explicitly; the debug toolbar middleware will patch +this into the urlconf for the request. +""" +from django.conf.urls.defaults import * +from django.contrib import admin + +admin.autodiscover() + +urlpatterns = patterns('', + url(r'^execute_sql/$', 'debug_toolbar.tests.views.execute_sql'), +) diff --git a/debug_toolbar/tests/views.py b/debug_toolbar/tests/views.py new file mode 100644 index 0000000..f989dcd --- /dev/null +++ b/debug_toolbar/tests/views.py @@ -0,0 +1,7 @@ +from django.contrib.auth.models import User +from django.http import HttpResponse + +def execute_sql(request): + list(User.objects.all()) + + return HttpResponse()
\ No newline at end of file @@ -12,6 +12,11 @@ setup( download_url='http://github.com/robhudson/django-debug-toolbar/downloads', license='BSD', packages=find_packages(exclude=['ez_setup']), + tests_require=[ + 'django', + 'dingus', + ], + test_suite='debug_toolbar.runtests.runtests', include_package_data=True, zip_safe=False, # because we're including media that Django needs classifiers=[ |
