Skip to content

Commit 1685490

Browse files
committed
Move test bootstrap into runtests.py to ensure databases are configured correctly for django tests
1 parent d61f23e commit 1685490

File tree

8 files changed

+349
-587
lines changed

8 files changed

+349
-587
lines changed

Diff for: runtests.py

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env python
2+
import logging
3+
import sys
4+
from os.path import dirname, abspath, join
5+
from optparse import OptionParser
6+
7+
sys.path.insert(0, dirname(abspath(__file__)))
8+
9+
logging.getLogger('sentry').addHandler(logging.StreamHandler())
10+
11+
from django.conf import settings
12+
13+
if not settings.configured:
14+
settings.configure(
15+
DATABASE_ENGINE='sqlite3',
16+
DATABASES={
17+
'default': {
18+
'ENGINE': 'sqlite3',
19+
'TEST_NAME': 'sentry_tests.db',
20+
},
21+
},
22+
# HACK: this fixes our threaded runserver remote tests
23+
# DATABASE_NAME='test_sentry',
24+
TEST_DATABASE_NAME='sentry_tests.db',
25+
INSTALLED_APPS=[
26+
'django.contrib.auth',
27+
'django.contrib.admin',
28+
'django.contrib.sessions',
29+
'django.contrib.sites',
30+
31+
# Included to fix Disqus' test Django which solves IntegrityMessage case
32+
'django.contrib.contenttypes',
33+
34+
'djcelery', # celery client
35+
36+
'sentry_client.contrib.django',
37+
],
38+
ROOT_URLCONF='',
39+
DEBUG=False,
40+
SITE_ID=1,
41+
BROKER_HOST="localhost",
42+
BROKER_PORT=5672,
43+
BROKER_USER="guest",
44+
BROKER_PASSWORD="guest",
45+
BROKER_VHOST="/",
46+
CELERY_ALWAYS_EAGER=True,
47+
TEMPLATE_DEBUG=True,
48+
)
49+
import djcelery
50+
djcelery.setup_loader()
51+
52+
from django_nose import NoseTestSuiteRunner
53+
54+
def runtests(*test_args, **kwargs):
55+
if not test_args:
56+
test_args = ['tests']
57+
58+
test_runner = NoseTestSuiteRunner(**kwargs)
59+
60+
failures = test_runner.run_tests(test_args)
61+
sys.exit(failures)
62+
63+
if __name__ == '__main__':
64+
parser = OptionParser()
65+
parser.add_option('--verbosity', dest='verbosity', action='store', default=1, type=int)
66+
parser.add_options(NoseTestSuiteRunner.options)
67+
(options, args) = parser.parse_args()
68+
69+
runtests(*args, **options.__dict__)

Diff for: setup.cfg

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[nosetests]
2+
exclude=^(start|stop)_test_server

Diff for: setup.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
'django-celery',
1515
'celery',
1616

17+
'django-nose',
1718
'nose',
1819
'unittest2',
1920
]
@@ -37,7 +38,7 @@
3738
install_requires=install_requires,
3839
tests_require=tests_require,
3940
extras_require={'test': tests_require},
40-
test_suite='nose.collector',
41+
test_suite='runtests.runtests',
4142
include_package_data=True,
4243
classifiers=[
4344
'Intended Audience :: Developers',

Diff for: tests/client/__init__.py

Whitespace-only changes.

Diff for: tests/client/tests.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from unittest2 import TestCase
4+
from sentry_client.base import SentryClient
5+
6+
class TempStoreClient(SentryClient):
7+
def __init__(self):
8+
self.events = []
9+
10+
def send(self, **kwargs):
11+
self.events.append(kwargs)
12+
13+
class ClientTest(TestCase):
14+
def setUp(self):
15+
self.client = TempStoreClient()
16+
17+
# def test_long_urls(self):
18+
# # Fix: #6 solves URLs > 200 characters
19+
# self.client.create_from_text('hello world', url='a'*210)
20+
21+
# event = self.client.events.pop(0)
22+
23+
# self.assertEquals(event['url'], 'a'*200)

0 commit comments

Comments
 (0)