mirror of
https://github.com/django-helpdesk/django-helpdesk.git
synced 2025-07-20 15:51:19 +02:00
143 lines
4.5 KiB
Python
Executable File
143 lines
4.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
"""
|
|
Usage:
|
|
$ python -m venv .venv
|
|
$ source .venv/bin/activate
|
|
$ pip install -r requirements-testing.txt -r requirements.txt
|
|
$ python ./quicktest.py
|
|
"""
|
|
|
|
import argparse
|
|
import django
|
|
from django.conf import settings
|
|
import os
|
|
import sys
|
|
|
|
|
|
class QuickDjangoTest:
|
|
"""
|
|
A quick way to run the Django test suite without a fully-configured project.
|
|
|
|
Example usage:
|
|
|
|
>>> QuickDjangoTest('app1', 'app2')
|
|
|
|
Based on a script published by Lukasz Dziedzia at:
|
|
http://stackoverflow.com/questions/3841725/how-to-launch-tests-for-django-reusable-app
|
|
"""
|
|
|
|
DIRNAME = os.path.dirname(__file__)
|
|
INSTALLED_APPS = (
|
|
"django.contrib.admin",
|
|
"django.contrib.auth",
|
|
"django.contrib.contenttypes",
|
|
"django.contrib.humanize",
|
|
"django.contrib.messages",
|
|
"django.contrib.sessions",
|
|
"django.contrib.sites",
|
|
"django.contrib.staticfiles",
|
|
"bootstrap4form",
|
|
# The following commented apps are optional,
|
|
# related to teams functionalities
|
|
# 'account',
|
|
# 'pinax.invitations',
|
|
# 'pinax.teams',
|
|
"rest_framework",
|
|
"helpdesk",
|
|
# 'reversion',
|
|
)
|
|
MIDDLEWARE = [
|
|
"django.middleware.security.SecurityMiddleware",
|
|
"django.contrib.sessions.middleware.SessionMiddleware",
|
|
"django.middleware.common.CommonMiddleware",
|
|
"django.middleware.csrf.CsrfViewMiddleware",
|
|
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
|
"django.contrib.messages.middleware.MessageMiddleware",
|
|
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
|
]
|
|
|
|
TEMPLATES = [
|
|
{
|
|
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
|
"APP_DIRS": True,
|
|
"OPTIONS": {
|
|
"context_processors": (
|
|
# Defaults:
|
|
"django.contrib.auth.context_processors.auth",
|
|
"django.template.context_processors.debug",
|
|
"django.template.context_processors.i18n",
|
|
"django.template.context_processors.media",
|
|
"django.template.context_processors.static",
|
|
"django.template.context_processors.tz",
|
|
"django.contrib.messages.context_processors.messages",
|
|
# Our extra:
|
|
"django.template.context_processors.request",
|
|
),
|
|
},
|
|
},
|
|
]
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
self.tests = args
|
|
self.kwargs = kwargs or {"verbosity": 1}
|
|
self._tests()
|
|
|
|
def _tests(self):
|
|
settings.configure(
|
|
DEBUG=True,
|
|
TIME_ZONE="UTC",
|
|
DATABASES={
|
|
"default": {
|
|
"ENGINE": "django.db.backends.sqlite3",
|
|
"NAME": os.path.join(self.DIRNAME, "database.db"),
|
|
"USER": "",
|
|
"PASSWORD": "",
|
|
"HOST": "",
|
|
"PORT": "",
|
|
}
|
|
},
|
|
INSTALLED_APPS=self.INSTALLED_APPS,
|
|
MIDDLEWARE=self.MIDDLEWARE,
|
|
ROOT_URLCONF="helpdesk.tests.urls",
|
|
STATIC_URL="/static/",
|
|
LOGIN_URL="/login/",
|
|
TEMPLATES=self.TEMPLATES,
|
|
SITE_ID=1,
|
|
SECRET_KEY="wowdonotusethisfakesecuritykeyyouneedarealsecure1",
|
|
# The following settings disable teams
|
|
HELPDESK_TEAMS_MODEL="auth.User",
|
|
HELPDESK_TEAMS_MIGRATION_DEPENDENCIES=[],
|
|
HELPDESK_KBITEM_TEAM_GETTER=lambda _: None,
|
|
# Set IMAP Server Debug Verbosity
|
|
HELPDESK_IMAP_DEBUG_LEVEL=int(
|
|
os.environ.get("HELPDESK_IMAP_DEBUG_LEVEL", "0")
|
|
),
|
|
)
|
|
|
|
from django.test.runner import DiscoverRunner
|
|
|
|
test_runner = DiscoverRunner(verbosity=self.kwargs["verbosity"])
|
|
django.setup()
|
|
|
|
failures = test_runner.run_tests(self.tests)
|
|
if failures:
|
|
sys.exit(failures)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
"""
|
|
What do when the user hits this file from the shell.
|
|
|
|
Example usage:
|
|
|
|
$ python quicktest.py test1 test2
|
|
|
|
"""
|
|
parser = argparse.ArgumentParser(usage="[args]", description="Run Django tests.")
|
|
parser.add_argument("tests", nargs="*", type=str)
|
|
parser.add_argument("--verbosity", "-v", nargs="?", type=int, default=1)
|
|
args = parser.parse_args()
|
|
if not args.tests:
|
|
args.tests = ["helpdesk"]
|
|
QuickDjangoTest(*args.tests, verbosity=args.verbosity)
|