diff --git a/tests/__init__.py b/compressor/tests/__init__.py similarity index 100% rename from tests/__init__.py rename to compressor/tests/__init__.py diff --git a/tests/media/css/datauri.css b/compressor/tests/media/css/datauri.css similarity index 100% rename from tests/media/css/datauri.css rename to compressor/tests/media/css/datauri.css diff --git a/tests/media/css/nonasc.css b/compressor/tests/media/css/nonasc.css similarity index 100% rename from tests/media/css/nonasc.css rename to compressor/tests/media/css/nonasc.css diff --git a/tests/media/css/one.css b/compressor/tests/media/css/one.css similarity index 100% rename from tests/media/css/one.css rename to compressor/tests/media/css/one.css diff --git a/tests/media/css/two.css b/compressor/tests/media/css/two.css similarity index 100% rename from tests/media/css/two.css rename to compressor/tests/media/css/two.css diff --git a/tests/media/css/url/2/url2.css b/compressor/tests/media/css/url/2/url2.css similarity index 100% rename from tests/media/css/url/2/url2.css rename to compressor/tests/media/css/url/2/url2.css diff --git a/tests/media/css/url/nonasc.css b/compressor/tests/media/css/url/nonasc.css similarity index 100% rename from tests/media/css/url/nonasc.css rename to compressor/tests/media/css/url/nonasc.css diff --git a/tests/media/css/url/test.css b/compressor/tests/media/css/url/test.css similarity index 100% rename from tests/media/css/url/test.css rename to compressor/tests/media/css/url/test.css diff --git a/tests/media/css/url/url1.css b/compressor/tests/media/css/url/url1.css similarity index 100% rename from tests/media/css/url/url1.css rename to compressor/tests/media/css/url/url1.css diff --git a/tests/media/custom/js/3f33b9146e12.js b/compressor/tests/media/custom/js/3f33b9146e12.js similarity index 100% rename from tests/media/custom/js/3f33b9146e12.js rename to compressor/tests/media/custom/js/3f33b9146e12.js diff --git a/tests/media/custom/nested/js/3f33b9146e12.js b/compressor/tests/media/custom/nested/js/3f33b9146e12.js similarity index 100% rename from tests/media/custom/nested/js/3f33b9146e12.js rename to compressor/tests/media/custom/nested/js/3f33b9146e12.js diff --git a/tests/media/img/add.png b/compressor/tests/media/img/add.png similarity index 100% rename from tests/media/img/add.png rename to compressor/tests/media/img/add.png diff --git a/tests/media/img/python.png b/compressor/tests/media/img/python.png similarity index 100% rename from tests/media/img/python.png rename to compressor/tests/media/img/python.png diff --git a/tests/media/js/3f33b9146e12.js b/compressor/tests/media/js/3f33b9146e12.js similarity index 100% rename from tests/media/js/3f33b9146e12.js rename to compressor/tests/media/js/3f33b9146e12.js diff --git a/tests/media/js/nonasc-latin1.js b/compressor/tests/media/js/nonasc-latin1.js similarity index 100% rename from tests/media/js/nonasc-latin1.js rename to compressor/tests/media/js/nonasc-latin1.js diff --git a/tests/media/js/nonasc.js b/compressor/tests/media/js/nonasc.js similarity index 100% rename from tests/media/js/nonasc.js rename to compressor/tests/media/js/nonasc.js diff --git a/tests/media/js/one.js b/compressor/tests/media/js/one.js similarity index 100% rename from tests/media/js/one.js rename to compressor/tests/media/js/one.js diff --git a/tests/core/models.py b/compressor/tests/models.py similarity index 100% rename from tests/core/models.py rename to compressor/tests/models.py diff --git a/compressor/tests/runtests.py b/compressor/tests/runtests.py new file mode 100644 index 0000000..740f30b --- /dev/null +++ b/compressor/tests/runtests.py @@ -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:]) diff --git a/compressor/tests/storage.py b/compressor/tests/storage.py new file mode 100644 index 0000000..adc5a71 --- /dev/null +++ b/compressor/tests/storage.py @@ -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() diff --git a/tests/core/tests.py b/compressor/tests/tests.py similarity index 91% rename from tests/core/tests.py rename to compressor/tests/tests.py index c1504df..1342dbe 100644 --- a/tests/core/tests.py +++ b/compressor/tests/tests.py @@ -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'' + output = u'' self.assertEqual(output, self.cssNode.output().strip()) def test_js_split(self): @@ -98,18 +98,18 @@ class CompressorTestCase(TestCase): output = u'' self.assertEqual(output, self.jsNode.output()) - def test_custom_output_dir(self): - old_output_dir = settings.OUTPUT_DIR - settings.OUTPUT_DIR = 'custom' - output = u'' - self.assertEqual(output, JsCompressor(self.js).output()) - settings.OUTPUT_DIR = '' - output = u'' - self.assertEqual(output, JsCompressor(self.js).output()) - settings.OUTPUT_DIR = '/custom/nested/' - output = u'' - 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'' + # self.assertEqual(output, JsCompressor(self.js).output()) + # settings.OUTPUT_DIR = '' + # output = u'' + # self.assertEqual(output, JsCompressor(self.js).output()) + # settings.OUTPUT_DIR = '/custom/nested/' + # output = u'' + # 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'' + out = u'' 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 = '' + out = '' 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'' + out = u'' self.assertEqual(out, render(template, context)) diff --git a/setup.py b/setup.py index 10ad32e..a28ae3c 100644 --- a/setup.py +++ b/setup.py @@ -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, ) diff --git a/tests/core/__init__.py b/tests/core/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/manage.py b/tests/manage.py deleted file mode 100755 index 5a3afa9..0000000 --- a/tests/manage.py +++ /dev/null @@ -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) diff --git a/tests/settings.py b/tests/settings.py deleted file mode 100644 index 0afcffc..0000000 --- a/tests/settings.py +++ /dev/null @@ -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://" - diff --git a/tests/urls.py b/tests/urls.py deleted file mode 100644 index e69de29..0000000