web/lib/django/contrib/gis/tests/utils.py
author ymh <ymh.work@gmail.com>
Wed, 02 Jun 2010 18:57:35 +0200
changeset 38 77b6da96e6f1
permissions -rw-r--r--
update django
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
38
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
from django.conf import settings
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
from django.db import DEFAULT_DB_ALIAS
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
# function that will pass a test.
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
def pass_test(*args): return
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
def no_backend(test_func, backend):
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
    "Use this decorator to disable test on specified backend."
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
    if settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'].rsplit('.')[-1] == backend:
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
        return pass_test
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
    else:
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
        return test_func
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
# Decorators to disable entire test functions for specific
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
# spatial backends.
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
def no_oracle(func): return no_backend(func, 'oracle')
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
def no_postgis(func): return no_backend(func, 'postgis')
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
def no_mysql(func): return no_backend(func, 'mysql')
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
def no_spatialite(func): return no_backend(func, 'spatialite')
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
# Shortcut booleans to omit only portions of tests.
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
_default_db = settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'].rsplit('.')[-1]
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
oracle  = _default_db == 'oracle'
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
postgis = _default_db == 'postgis'
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
mysql   = _default_db == 'mysql'
77b6da96e6f1 update django
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
spatialite = _default_db == 'spatialite'