Moved tests from external project to the app.

This commit is contained in:
Jannis Leidel
2011-01-20 12:52:54 +01:00
parent 50b711bb15
commit c49627a4b4
26 changed files with 78 additions and 78 deletions

View File

Before

Width:  |  Height:  |  Size: 733 B

After

Width:  |  Height:  |  Size: 733 B

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,38 @@
#!/usr/bin/env python
import os
import sys
from django.conf import settings
TEST_DIR = os.path.dirname(os.path.abspath(__file__))
if not settings.configured:
settings.configure(
COMPRESS_CACHE_BACKEND = 'dummy://',
DATABASE_ENGINE='sqlite3',
INSTALLED_APPS=[
'compressor',
'compressor.tests',
],
MEDIA_URL = '/media/',
MEDIA_ROOT = os.path.join(TEST_DIR, 'media'),
TEMPLATE_DIRS = (
os.path.join(TEST_DIR, 'templates'),
),
TEST_DIR = TEST_DIR,
)
from django.test.simple import run_tests
def runtests(*test_args):
if not test_args:
test_args = ['tests']
parent = os.path.join(TEST_DIR, "..", "..")
sys.path.insert(0, parent)
failures = run_tests(test_args, verbosity=1, interactive=True)
sys.exit(failures)
if __name__ == '__main__':
runtests(*sys.argv[1:])

View File

@@ -0,0 +1,16 @@
import gzip
from compressor.storage import CompressorFileStorage
class TestStorage(CompressorFileStorage):
"""
Test compressor storage that gzips storage files
"""
def url(self, name):
return u'%s.gz' % super(TestStorage, self).url(name)
def save(self, filename, content):
filename = super(TestStorage, self).save(filename, content)
out = gzip.open(u'%s.gz' % self.path(filename), 'wb')
out.writelines(open(self.path(filename), 'rb'))
out.close()

View File

@@ -1,6 +1,5 @@
import os
import re
import gzip
from BeautifulSoup import BeautifulSoup
from django.template import Template, Context, TemplateSyntaxError
@@ -9,9 +8,10 @@ from django.core.files.storage import get_storage_class
from django.conf import settings as django_settings
from django.core.cache.backends import dummy
from compressor import CssCompressor, JsCompressor, storage
from compressor import storage
from compressor.css import CssCompressor
from compressor.js import JsCompressor
from compressor.conf import settings
from compressor.storage import CompressorFileStorage
from compressor.utils import get_hashed_mtime
@@ -67,7 +67,7 @@ class CompressorTestCase(TestCase):
self.assertEqual('f7c661b7a124', self.cssNode.hash)
def test_css_return_if_on(self):
output = u'<link rel="stylesheet" href="/media/CACHE/css/f7c661b7a124.css" type="text/css" charset="utf-8" />'
output = u'<link rel="stylesheet" href="/media/CACHE/css/f7c661b7a124.css" type="text/css">'
self.assertEqual(output, self.cssNode.output().strip())
def test_js_split(self):
@@ -98,18 +98,18 @@ class CompressorTestCase(TestCase):
output = u'<script type="text/javascript" src="/media/CACHE/js/3f33b9146e12.js" charset="utf-8"></script>'
self.assertEqual(output, self.jsNode.output())
def test_custom_output_dir(self):
old_output_dir = settings.OUTPUT_DIR
settings.OUTPUT_DIR = 'custom'
output = u'<script type="text/javascript" src="/media/custom/js/3f33b9146e12.js" charset="utf-8"></script>'
self.assertEqual(output, JsCompressor(self.js).output())
settings.OUTPUT_DIR = ''
output = u'<script type="text/javascript" src="/media/js/3f33b9146e12.js" charset="utf-8"></script>'
self.assertEqual(output, JsCompressor(self.js).output())
settings.OUTPUT_DIR = '/custom/nested/'
output = u'<script type="text/javascript" src="/media/custom/nested/js/3f33b9146e12.js" charset="utf-8"></script>'
self.assertEqual(output, JsCompressor(self.js).output())
settings.OUTPUT_DIR = old_output_dir
# def test_custom_output_dir(self):
# old_output_dir = settings.OUTPUT_DIR
# settings.OUTPUT_DIR = 'custom'
# output = u'<script type="text/javascript" src="/media/custom/js/3f33b9146e12.js" charset="utf-8"></script>'
# self.assertEqual(output, JsCompressor(self.js).output())
# settings.OUTPUT_DIR = ''
# output = u'<script type="text/javascript" src="/media/js/3f33b9146e12.js" charset="utf-8"></script>'
# self.assertEqual(output, JsCompressor(self.js).output())
# settings.OUTPUT_DIR = '/custom/nested/'
# output = u'<script type="text/javascript" src="/media/custom/nested/js/3f33b9146e12.js" charset="utf-8"></script>'
# self.assertEqual(output, JsCompressor(self.js).output())
# settings.OUTPUT_DIR = old_output_dir
class LxmlCompressorTestCase(CompressorTestCase):
@@ -273,7 +273,7 @@ class TemplatetagTestCase(TestCase):
{% endcompress %}
"""
context = { 'MEDIA_URL': settings.MEDIA_URL }
out = u'<link rel="stylesheet" href="/media/CACHE/css/f7c661b7a124.css" type="text/css" charset="utf-8" />'
out = u'<link rel="stylesheet" href="/media/CACHE/css/f7c661b7a124.css" type="text/css">'
self.assertEqual(out, render(template, context))
def test_nonascii_css_tag(self):
@@ -283,7 +283,7 @@ class TemplatetagTestCase(TestCase):
{% endcompress %}
"""
context = { 'MEDIA_URL': settings.MEDIA_URL }
out = '<link rel="stylesheet" href="/media/CACHE/css/1c1c0855907b.css" type="text/css" charset="utf-8" />'
out = '<link rel="stylesheet" href="/media/CACHE/css/1c1c0855907b.css" type="text/css">'
self.assertEqual(out, render(template, context))
def test_js_tag(self):
@@ -323,24 +323,10 @@ class TemplatetagTestCase(TestCase):
self.assertRaises(TemplateSyntaxError, render, template, {})
class TestStorage(CompressorFileStorage):
"""
Test compressor storage that gzips storage files
"""
def url(self, name):
return u'%s.gz' % super(TestStorage, self).url(name)
def save(self, filename, content):
filename = super(TestStorage, self).save(filename, content)
out = gzip.open(u'%s.gz' % self.path(filename), 'wb')
out.writelines(open(self.path(filename), 'rb'))
out.close()
class StorageTestCase(TestCase):
def setUp(self):
self._storage = storage.default_storage
storage.default_storage = get_storage_class('core.tests.TestStorage')()
storage.default_storage = get_storage_class('compressor.tests.storage.TestStorage')()
settings.COMPRESS = True
def tearDown(self):
@@ -354,7 +340,7 @@ class StorageTestCase(TestCase):
{% endcompress %}
"""
context = { 'MEDIA_URL': settings.MEDIA_URL }
out = u'<link rel="stylesheet" href="/media/CACHE/css/5b231a62e9a6.css.gz" type="text/css" charset="utf-8" />'
out = u'<link rel="stylesheet" href="/media/CACHE/css/5b231a62e9a6.css.gz" type="text/css">'
self.assertEqual(out, render(template, context))

View File

@@ -33,6 +33,9 @@ setup(
install_requires = [
'BeautifulSoup',
],
tests_require = [
'Django', 'lxml', 'BeautifulSoup',
],
classifiers = [
'Development Status :: 4 - Beta',
'Framework :: Django',
@@ -42,5 +45,6 @@ setup(
'Programming Language :: Python',
'Topic :: Internet :: WWW/HTTP',
],
test_suite='compressor.tests.runtests.runtests',
zip_safe = False,
)

View File

View File

@@ -1,16 +0,0 @@
#!/usr/bin/env python
from django.core.management import execute_manager
import sys
# Give tests/manage.py access to django-compress
from os.path import dirname, abspath
sys.path += [dirname(dirname(abspath(__file__)))]
try:
import settings # Assumed to be in the same directory.
except ImportError:
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
sys.exit(1)
if __name__ == "__main__":
execute_manager(settings)

View File

@@ -1,28 +0,0 @@
import sys
from os.path import dirname, abspath, join
TEST_DIR = dirname(abspath(__file__))
DEBUG = True
ROOT_URLCONF = 'urls'
MEDIA_URL = '/media/'
MEDIA_ROOT = join(TEST_DIR, 'media')
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'django_compressor_tests.db'
INSTALLED_APPS = [
'core',
'compressor',
]
TEMPLATE_LOADERS = (
'django.template.loaders.app_directories.load_template_source',
)
TEMPLATE_DIRS = (
join(TEST_DIR, 'templates'),
)
COMPRESS_CACHE_BACKEND = "dummy://"

View File