From c768b88fa510f11dd8552736cfdeb2d6caa3efc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felipe=20Mart=C3=ADn?= Date: Mon, 20 May 2013 19:03:44 +0200 Subject: [PATCH] Updated tests. Now using django TestCase, fabric command and fox working again. --- config/development/local_settings.py | 2 +- fabfile.py | 2 +- minecraftcodex/herobrine/settings.py | 2 +- .../runtests}/__init__.py | 0 minecraftcodex/runtests/local_settings.py | 1 + minecraftcodex/runtests/runtests.py | 31 +++++ minecraftcodex/runtests/settings.py | 128 ++++++++++++++++++ minecraftcodex/tests/__init__.py | 0 minecraftcodex/tests/base.py | 7 + minecraftcodex/tests/models.py | 3 + minecraftcodex/tests/tests.py | 13 ++ tests/local_settings.py | 12 -- tox.ini | 3 +- 13 files changed, 188 insertions(+), 16 deletions(-) rename {tests => minecraftcodex/runtests}/__init__.py (100%) create mode 100644 minecraftcodex/runtests/local_settings.py create mode 100644 minecraftcodex/runtests/runtests.py create mode 100644 minecraftcodex/runtests/settings.py create mode 100644 minecraftcodex/tests/__init__.py create mode 100644 minecraftcodex/tests/base.py create mode 100644 minecraftcodex/tests/models.py create mode 100644 minecraftcodex/tests/tests.py delete mode 100644 tests/local_settings.py diff --git a/config/development/local_settings.py b/config/development/local_settings.py index 5637911..5d762c9 100644 --- a/config/development/local_settings.py +++ b/config/development/local_settings.py @@ -1,5 +1,5 @@ LOCAL_SETTINGS = True -from herobrine.settings import * +from settings import * DEBUG = True TEMPLATE_DEBUG = DEBUG diff --git a/fabfile.py b/fabfile.py index 5bd598c..0112259 100644 --- a/fabfile.py +++ b/fabfile.py @@ -182,7 +182,7 @@ def run(): def test(): if not active_virtualenv(): with prefix(env.activate): - local('python -m unittest discover') + local('python minecraftcodex/runtests/runtests.py') with settings(hide('warnings', 'running', 'stdout', 'stderr'), warn_only=True): local('find . -type d -name __pycache__ -exec rm -rf {} \;', diff --git a/minecraftcodex/herobrine/settings.py b/minecraftcodex/herobrine/settings.py index 465a846..332da06 100644 --- a/minecraftcodex/herobrine/settings.py +++ b/minecraftcodex/herobrine/settings.py @@ -166,7 +166,7 @@ try: LOCAL_SETTINGS except NameError: try: - from herobrine.local_settings import * + from local_settings import * except ImportError as error: print(error) pass diff --git a/tests/__init__.py b/minecraftcodex/runtests/__init__.py similarity index 100% rename from tests/__init__.py rename to minecraftcodex/runtests/__init__.py diff --git a/minecraftcodex/runtests/local_settings.py b/minecraftcodex/runtests/local_settings.py new file mode 100644 index 0000000..c3501e9 --- /dev/null +++ b/minecraftcodex/runtests/local_settings.py @@ -0,0 +1 @@ +LOCAL_SETTINGS = True diff --git a/minecraftcodex/runtests/runtests.py b/minecraftcodex/runtests/runtests.py new file mode 100644 index 0000000..f81a49b --- /dev/null +++ b/minecraftcodex/runtests/runtests.py @@ -0,0 +1,31 @@ +from __future__ import absolute_import +import os +import sys + +# fix sys path so we don't need to setup PYTHONPATH +sys.path.insert(0, os.getcwd()) +os.environ['DJANGO_SETTINGS_MODULE'] = 'minecraftcodex.runtests.settings' + +from django.conf import settings +from django.test.utils import get_runner + +def usage(): + return """ +Usage: python runtests.py [UnitTestClass].[method] + +You can pass the Class name of the `UnitTestClass` you want to test. + +Append a method name if you only want to test a specific method of that class. +""" + + +def main(): + TestRunner = get_runner(settings) + + test_runner = TestRunner() + failures = test_runner.run_tests(['tests'], verbosity=1) + + sys.exit(failures) + +if __name__ == '__main__': + main() diff --git a/minecraftcodex/runtests/settings.py b/minecraftcodex/runtests/settings.py new file mode 100644 index 0000000..e5d147d --- /dev/null +++ b/minecraftcodex/runtests/settings.py @@ -0,0 +1,128 @@ +# Django settings for herobrine project. + +DEBUG = False +TEMPLATE_DEBUG = DEBUG + +ADMINS = ( +# ('Felipe Martin', 'fmartingr@me.com'), +) + +MANAGERS = ADMINS + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': 'tests.sqlite', + } +} + +# Hosts/domain names that are valid for this site; required if DEBUG is False +# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts +ALLOWED_HOSTS = [] + +# Local time zone for this installation. Choices can be found here: +# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name +# although not all choices may be available on all operating systems. +# In a Windows environment this must be set to your system time zone. +TIME_ZONE = 'Europe/Madrid' + +# Language code for this installation. All choices can be found here: +# http://www.i18nguy.com/unicode/language-identifiers.html +LANGUAGE_CODE = 'en-us' + +SITE_ID = 1 + +# If you set this to False, Django will make some optimizations so as not +# to load the internationalization machinery. +USE_I18N = True + +# If you set this to False, Django will not format dates, numbers and +# calendars according to the current locale. +USE_L10N = True + +# If you set this to False, Django will not use timezone-aware datetimes. +USE_TZ = True + +# Absolute filesystem path to the directory that will hold user-uploaded files. +# Example: "/var/www/example.com/media/" +MEDIA_ROOT = '' + +# URL that handles the media served from MEDIA_ROOT. Make sure to use a +# trailing slash. +# Examples: "http://example.com/media/", "http://media.example.com/" +MEDIA_URL = '' + +# Absolute path to the directory static files should be collected to. +# Don't put anything in this directory yourself; store your static files +# in apps' "static/" subdirectories and in STATICFILES_DIRS. +# Example: "/var/www/example.com/static/" +STATIC_ROOT = '' + +# URL prefix for static files. +# Example: "http://example.com/static/", "http://static.example.com/" +STATIC_URL = '/static/' + +# Additional locations of static files +STATICFILES_DIRS = ( + # Put strings here, like "/home/html/static" or "C:/www/django/static". + # Always use forward slashes, even on Windows. + # Don't forget to use absolute paths, not relative paths. +) + +# List of finder classes that know how to find static files in +# various locations. +STATICFILES_FINDERS = ( + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', +# 'django.contrib.staticfiles.finders.DefaultStorageFinder', +) + +# Make this unique, and don't share it with anybody. +SECRET_KEY = '1234567890' + +# List of callables that know how to import templates from various sources. +TEMPLATE_LOADERS = ( + 'jingo.Loader', + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', +# 'django.template.loaders.eggs.Loader', +) + +JINGO_INCLUDE_PATTERN = r'\.jinja2' + +MIDDLEWARE_CLASSES = ( + 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +) + +ROOT_URLCONF = 'minecraftcodex.herobrine.urls' + + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'grappelli', + 'django.contrib.admin', + 'south', + 'minecraftcodex', + 'minecraftcodex.database', + 'minecraftcodex.tests', +) + + +try: + LOCAL_SETTINGS +except NameError: + try: + from local_settings import * + except ImportError as error: + print(error) + pass diff --git a/minecraftcodex/tests/__init__.py b/minecraftcodex/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/minecraftcodex/tests/base.py b/minecraftcodex/tests/base.py new file mode 100644 index 0000000..7bf0f1f --- /dev/null +++ b/minecraftcodex/tests/base.py @@ -0,0 +1,7 @@ +from django.test import TestCase +from django.conf import settings + + +class SettingsTest(TestCase): + def test_local_settings(self): + self.assertTrue(settings.LOCAL_SETTINGS) diff --git a/minecraftcodex/tests/models.py b/minecraftcodex/tests/models.py new file mode 100644 index 0000000..54f60fe --- /dev/null +++ b/minecraftcodex/tests/models.py @@ -0,0 +1,3 @@ +#from django.db import models + +# Create your models here. diff --git a/minecraftcodex/tests/tests.py b/minecraftcodex/tests/tests.py new file mode 100644 index 0000000..092c921 --- /dev/null +++ b/minecraftcodex/tests/tests.py @@ -0,0 +1,13 @@ +""" +Import all tests. +https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/tests/tests.py +""" +import os + +modules = [filename.rsplit('.', 1)[0] + for filename in os.listdir(os.path.dirname(__file__)) + if filename.endswith('.py') and not filename.startswith('_')] +__test__ = dict() + +for module in modules: + exec("from minecraftcodex.tests.%s import *" % module) diff --git a/tests/local_settings.py b/tests/local_settings.py deleted file mode 100644 index 8192161..0000000 --- a/tests/local_settings.py +++ /dev/null @@ -1,12 +0,0 @@ -LOCAL_SETTINGS = True -from herobrine.settings import * - -DEBUG = True -TEMPLATE_DEBUG = DEBUG - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': 'dev_ddbb.sqlite', - } -} diff --git a/tox.ini b/tox.ini index c9c945e..f089f6d 100644 --- a/tox.ini +++ b/tox.ini @@ -2,9 +2,10 @@ envlist = py27, py33 [testenv] -commands = {envpython} -m unittest discover +commands = {envpython} minecraftcodex/runtests/runtests.py deps = Django==1.5.1 jingo==0.6.1 django-grappelli==2.4.4 + South==0.7.6