diff options
Diffstat (limited to 'tests/gis_tests/utils.py')
-rw-r--r-- | tests/gis_tests/utils.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/gis_tests/utils.py b/tests/gis_tests/utils.py new file mode 100644 index 0000000000..3a43f8852b --- /dev/null +++ b/tests/gis_tests/utils.py @@ -0,0 +1,41 @@ +from unittest import skip + +from django.conf import settings +from django.db import DEFAULT_DB_ALIAS + + +def no_backend(test_func, backend): + "Use this decorator to disable test on specified backend." + if settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'].rsplit('.')[-1] == backend: + @skip("This test is skipped on '%s' backend" % backend) + def inner(): + pass + return inner + else: + return test_func + + +# Decorators to disable entire test functions for specific +# spatial backends. +def no_oracle(func): + return no_backend(func, 'oracle') + + +# Shortcut booleans to omit only portions of tests. +_default_db = settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'].rsplit('.')[-1] +oracle = _default_db == 'oracle' +postgis = _default_db == 'postgis' +mysql = _default_db == 'mysql' +spatialite = _default_db == 'spatialite' + +# MySQL spatial indices can't handle NULL geometries. +gisfield_may_be_null = not mysql + +if oracle and 'gis' in settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE']: + from django.contrib.gis.db.backends.oracle.models import OracleSpatialRefSys as SpatialRefSys +elif postgis: + from django.contrib.gis.db.backends.postgis.models import PostGISSpatialRefSys as SpatialRefSys +elif spatialite: + from django.contrib.gis.db.backends.spatialite.models import SpatialiteSpatialRefSys as SpatialRefSys +else: + SpatialRefSys = None |