diff --git a/django/contrib/gis/gdal/__init__.py b/django/contrib/gis/gdal/__init__.py index 86ce62a068..4c217dd5b3 100644 --- a/django/contrib/gis/gdal/__init__.py +++ b/django/contrib/gis/gdal/__init__.py @@ -25,32 +25,23 @@ by setting `GDAL_LIBRARY_PATH` in your settings with the path to the GDAL C library on your system. """ +from django.contrib.gis.gdal.datasource import DataSource +from django.contrib.gis.gdal.driver import Driver from django.contrib.gis.gdal.envelope import Envelope -from django.contrib.gis.gdal.error import ( # NOQA +from django.contrib.gis.gdal.error import ( GDALException, OGRException, OGRIndexError, SRSException, check_err, ) -from django.contrib.gis.gdal.geomtype import OGRGeomType # NOQA +from django.contrib.gis.gdal.geometries import OGRGeometry +from django.contrib.gis.gdal.geomtype import OGRGeomType +from django.contrib.gis.gdal.libgdal import ( + GDAL_VERSION, gdal_full_version, gdal_version, +) +from django.contrib.gis.gdal.raster.source import GDALRaster +from django.contrib.gis.gdal.srs import CoordTransform, SpatialReference -__all__ = [ - 'check_err', 'Envelope', 'GDALException', 'OGRException', 'OGRIndexError', - 'SRSException', 'OGRGeomType', 'HAS_GDAL', -] - -# Attempting to import objects that depend on the GDAL library. The -# HAS_GDAL flag will be set to True if the library is present on -# the system. -try: - from django.contrib.gis.gdal.driver import Driver # NOQA - from django.contrib.gis.gdal.datasource import DataSource # NOQA - from django.contrib.gis.gdal.libgdal import gdal_version, gdal_full_version, GDAL_VERSION # NOQA - from django.contrib.gis.gdal.raster.source import GDALRaster # NOQA - from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform # NOQA - from django.contrib.gis.gdal.geometries import OGRGeometry # NOQA - HAS_GDAL = True - __all__ += [ - 'Driver', 'DataSource', 'gdal_version', 'gdal_full_version', - 'GDALRaster', 'GDAL_VERSION', 'SpatialReference', 'CoordTransform', - 'OGRGeometry', - ] -except GDALException: - HAS_GDAL = False +__all__ = ( + 'Driver', 'DataSource', 'CoordTransform', 'Envelope', 'GDALException', + 'GDALRaster', 'GDAL_VERSION', 'OGRException', 'OGRGeometry', 'OGRGeomType', + 'OGRIndexError', 'SpatialReference', 'SRSException', + 'check_err', 'gdal_version', 'gdal_full_version', +) diff --git a/django/contrib/gis/serializers/geojson.py b/django/contrib/gis/serializers/geojson.py index fe3a32871f..4a62ea4251 100644 --- a/django/contrib/gis/serializers/geojson.py +++ b/django/contrib/gis/serializers/geojson.py @@ -1,10 +1,7 @@ -from django.contrib.gis.gdal import HAS_GDAL +from django.contrib.gis.gdal import CoordTransform, SpatialReference from django.core.serializers.base import SerializerDoesNotExist from django.core.serializers.json import Serializer as JSONSerializer -if HAS_GDAL: - from django.contrib.gis.gdal import CoordTransform, SpatialReference - class Serializer(JSONSerializer): """ diff --git a/django/contrib/gis/utils/__init__.py b/django/contrib/gis/utils/__init__.py index e59277d3a7..e66d3b2bd2 100644 --- a/django/contrib/gis/utils/__init__.py +++ b/django/contrib/gis/utils/__init__.py @@ -1,16 +1,14 @@ """ This module contains useful utilities for GeoDjango. """ -from django.contrib.gis.gdal import HAS_GDAL +from django.contrib.gis.utils.ogrinfo import ogrinfo # NOQA +from django.contrib.gis.utils.ogrinspect import mapping, ogrinspect # NOQA +from django.contrib.gis.utils.srs import add_srs_entry # NOQA from django.core.exceptions import ImproperlyConfigured -if HAS_GDAL: - from django.contrib.gis.utils.ogrinfo import ogrinfo # NOQA - from django.contrib.gis.utils.ogrinspect import mapping, ogrinspect # NOQA - from django.contrib.gis.utils.srs import add_srs_entry # NOQA - try: - # LayerMapping requires DJANGO_SETTINGS_MODULE to be set, - # so this needs to be in try/except. - from django.contrib.gis.utils.layermapping import LayerMapping, LayerMapError # NOQA - except ImproperlyConfigured: - pass +try: + # LayerMapping requires DJANGO_SETTINGS_MODULE to be set, + # so this needs to be in try/except. + from django.contrib.gis.utils.layermapping import LayerMapping, LayerMapError # NOQA +except ImproperlyConfigured: + pass diff --git a/docs/ref/contrib/gis/install/geolibs.txt b/docs/ref/contrib/gis/install/geolibs.txt index 44132384e8..8d6281539b 100644 --- a/docs/ref/contrib/gis/install/geolibs.txt +++ b/docs/ref/contrib/gis/install/geolibs.txt @@ -225,17 +225,8 @@ Troubleshooting Can't find GDAL library ^^^^^^^^^^^^^^^^^^^^^^^ -When GeoDjango can't find the GDAL library, the ``HAS_GDAL`` flag -will be false: - -.. code-block:: pycon - - >>> from django.contrib.gis import gdal - >>> gdal.HAS_GDAL - False - -The solution is to properly configure your :ref:`libsettings` *or* set -:ref:`gdallibrarypath` in your settings. +When GeoDjango can't find the GDAL library, configure your :ref:`libsettings` +*or* set :ref:`gdallibrarypath` in your settings. .. _gdallibrarypath: diff --git a/docs/releases/1.11.1.txt b/docs/releases/1.11.1.txt index ba23d3e17e..e76ed491e9 100644 --- a/docs/releases/1.11.1.txt +++ b/docs/releases/1.11.1.txt @@ -94,3 +94,6 @@ Bugfixes * Fixed ``QuerySet.prefetch_related()`` crash when fetching relations in nested ``Prefetch`` objects (:ticket:`27554`). + +* Prevented hiding GDAL errors if it's not installed when using ``contrib.gis`` + (:ticket:`28160`). (It's a required dependency as of Django 1.11.) diff --git a/tests/gis_tests/gdal_tests/test_driver.py b/tests/gis_tests/gdal_tests/test_driver.py index 6e7e149ed7..c2dcc80d65 100644 --- a/tests/gis_tests/gdal_tests/test_driver.py +++ b/tests/gis_tests/gdal_tests/test_driver.py @@ -1,11 +1,7 @@ import unittest from unittest import mock -from django.contrib.gis.gdal import HAS_GDAL - -if HAS_GDAL: - from django.contrib.gis.gdal import Driver, GDALException - +from django.contrib.gis.gdal import Driver, GDALException valid_drivers = ( # vector @@ -29,7 +25,6 @@ aliases = { } -@unittest.skipUnless(HAS_GDAL, "GDAL is required") class DriverTest(unittest.TestCase): def test01_valid_driver(self): diff --git a/tests/gis_tests/gdal_tests/test_ds.py b/tests/gis_tests/gdal_tests/test_ds.py index 0173ef1e4d..5b09032482 100644 --- a/tests/gis_tests/gdal_tests/test_ds.py +++ b/tests/gis_tests/gdal_tests/test_ds.py @@ -1,66 +1,64 @@ import os import unittest -from unittest import skipUnless -from django.contrib.gis.gdal import HAS_GDAL +from django.contrib.gis.gdal import ( + GDAL_VERSION, DataSource, Envelope, GDALException, OGRGeometry, + OGRIndexError, +) +from django.contrib.gis.gdal.field import OFTInteger, OFTReal, OFTString from ..test_data import TEST_DATA, TestDS, get_ds_file -if HAS_GDAL: - from django.contrib.gis.gdal import DataSource, Envelope, OGRGeometry, GDALException, OGRIndexError, GDAL_VERSION - from django.contrib.gis.gdal.field import OFTReal, OFTInteger, OFTString - - # List of acceptable data sources. - ds_list = ( - TestDS( - 'test_point', nfeat=5, nfld=3, geom='POINT', gtype=1, driver='ESRI Shapefile', - fields={'dbl': OFTReal, 'int': OFTInteger, 'str': OFTString}, - extent=(-1.35011, 0.166623, -0.524093, 0.824508), # Got extent from QGIS - srs_wkt=( - 'GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",' - '6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",' - '0.017453292519943295]]' - ), - field_values={ - 'dbl': [float(i) for i in range(1, 6)], - 'int': list(range(1, 6)), - 'str': [str(i) for i in range(1, 6)], - }, - fids=range(5) +# List of acceptable data sources. +ds_list = ( + TestDS( + 'test_point', nfeat=5, nfld=3, geom='POINT', gtype=1, driver='ESRI Shapefile', + fields={'dbl': OFTReal, 'int': OFTInteger, 'str': OFTString}, + extent=(-1.35011, 0.166623, -0.524093, 0.824508), # Got extent from QGIS + srs_wkt=( + 'GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",' + '6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",' + '0.017453292519943295]]' ), - TestDS( - 'test_vrt', ext='vrt', nfeat=3, nfld=3, geom='POINT', gtype='Point25D', - driver='OGR_VRT' if GDAL_VERSION >= (2, 0) else 'VRT', - fields={ - 'POINT_X': OFTString, - 'POINT_Y': OFTString, - 'NUM': OFTString, - }, # VRT uses CSV, which all types are OFTString. - extent=(1.0, 2.0, 100.0, 523.5), # Min/Max from CSV - field_values={ - 'POINT_X': ['1.0', '5.0', '100.0'], - 'POINT_Y': ['2.0', '23.0', '523.5'], - 'NUM': ['5', '17', '23'], - }, - fids=range(1, 4) + field_values={ + 'dbl': [float(i) for i in range(1, 6)], + 'int': list(range(1, 6)), + 'str': [str(i) for i in range(1, 6)], + }, + fids=range(5) + ), + TestDS( + 'test_vrt', ext='vrt', nfeat=3, nfld=3, geom='POINT', gtype='Point25D', + driver='OGR_VRT' if GDAL_VERSION >= (2, 0) else 'VRT', + fields={ + 'POINT_X': OFTString, + 'POINT_Y': OFTString, + 'NUM': OFTString, + }, # VRT uses CSV, which all types are OFTString. + extent=(1.0, 2.0, 100.0, 523.5), # Min/Max from CSV + field_values={ + 'POINT_X': ['1.0', '5.0', '100.0'], + 'POINT_Y': ['2.0', '23.0', '523.5'], + 'NUM': ['5', '17', '23'], + }, + fids=range(1, 4) + ), + TestDS( + 'test_poly', nfeat=3, nfld=3, geom='POLYGON', gtype=3, + driver='ESRI Shapefile', + fields={'float': OFTReal, 'int': OFTInteger, 'str': OFTString}, + extent=(-1.01513, -0.558245, 0.161876, 0.839637), # Got extent from QGIS + srs_wkt=( + 'GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",' + '6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",' + '0.017453292519943295]]' ), - TestDS( - 'test_poly', nfeat=3, nfld=3, geom='POLYGON', gtype=3, - driver='ESRI Shapefile', - fields={'float': OFTReal, 'int': OFTInteger, 'str': OFTString}, - extent=(-1.01513, -0.558245, 0.161876, 0.839637), # Got extent from QGIS - srs_wkt=( - 'GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",' - '6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",' - '0.017453292519943295]]' - ), - ) ) +) bad_ds = (TestDS('foo'),) -@skipUnless(HAS_GDAL, "GDAL is required") class DataSourceTest(unittest.TestCase): def test01_valid_shp(self): diff --git a/tests/gis_tests/gdal_tests/test_envelope.py b/tests/gis_tests/gdal_tests/test_envelope.py index b6cf4ab4f3..c414bea533 100644 --- a/tests/gis_tests/gdal_tests/test_envelope.py +++ b/tests/gis_tests/gdal_tests/test_envelope.py @@ -1,10 +1,6 @@ import unittest -from unittest import skipUnless -from django.contrib.gis.gdal import HAS_GDAL - -if HAS_GDAL: - from django.contrib.gis.gdal import Envelope, GDALException +from django.contrib.gis.gdal import Envelope, GDALException class TestPoint: @@ -13,7 +9,6 @@ class TestPoint: self.y = y -@skipUnless(HAS_GDAL, "GDAL is required") class EnvelopeTest(unittest.TestCase): def setUp(self): diff --git a/tests/gis_tests/gdal_tests/test_geom.py b/tests/gis_tests/gdal_tests/test_geom.py index 4498ce7111..169857c0f2 100644 --- a/tests/gis_tests/gdal_tests/test_geom.py +++ b/tests/gis_tests/gdal_tests/test_geom.py @@ -2,20 +2,15 @@ import json import pickle import unittest from binascii import b2a_hex -from unittest import skipUnless -from django.contrib.gis.gdal import HAS_GDAL +from django.contrib.gis.gdal import ( + CoordTransform, GDALException, OGRGeometry, OGRGeomType, OGRIndexError, + SpatialReference, +) from ..test_data import TestDataMixin -if HAS_GDAL: - from django.contrib.gis.gdal import ( - CoordTransform, GDALException, OGRGeometry, OGRGeomType, OGRIndexError, - SpatialReference, - ) - -@skipUnless(HAS_GDAL, "GDAL is required") class OGRGeomTest(unittest.TestCase, TestDataMixin): "This tests the OGR Geometry." diff --git a/tests/gis_tests/gdal_tests/test_raster.py b/tests/gis_tests/gdal_tests/test_raster.py index cd850af9a1..9e23d78c68 100644 --- a/tests/gis_tests/gdal_tests/test_raster.py +++ b/tests/gis_tests/gdal_tests/test_raster.py @@ -43,21 +43,16 @@ Band 1 Block=163x50 Type=Byte, ColorInterp=Gray import os import struct import tempfile -import unittest -from django.contrib.gis.gdal import HAS_GDAL +from django.contrib.gis.gdal import GDAL_VERSION, GDALRaster from django.contrib.gis.gdal.error import GDALException +from django.contrib.gis.gdal.raster.band import GDALBand from django.contrib.gis.shortcuts import numpy from django.test import SimpleTestCase from ..data.rasters.textrasters import JSON_RASTER -if HAS_GDAL: - from django.contrib.gis.gdal import GDALRaster, GDAL_VERSION - from django.contrib.gis.gdal.raster.band import GDALBand - -@unittest.skipUnless(HAS_GDAL, "GDAL is required") class GDALRasterTests(SimpleTestCase): """ Test a GDALRaster instance created from a file (GeoTiff). @@ -383,7 +378,6 @@ class GDALRasterTests(SimpleTestCase): ) -@unittest.skipUnless(HAS_GDAL, "GDAL is required") class GDALBandTests(SimpleTestCase): def setUp(self): self.rs_path = os.path.join(os.path.dirname(__file__), '../data/rasters/raster.tif') diff --git a/tests/gis_tests/gdal_tests/test_srs.py b/tests/gis_tests/gdal_tests/test_srs.py index 9bc6c0a2c5..4179943e21 100644 --- a/tests/gis_tests/gdal_tests/test_srs.py +++ b/tests/gis_tests/gdal_tests/test_srs.py @@ -1,10 +1,8 @@ import unittest -from unittest import skipUnless -from django.contrib.gis.gdal import HAS_GDAL - -if HAS_GDAL: - from django.contrib.gis.gdal import SpatialReference, CoordTransform, GDALException, SRSException +from django.contrib.gis.gdal import ( + CoordTransform, GDALException, SpatialReference, SRSException, +) class TestSRS: @@ -148,7 +146,6 @@ bad_srlist = ( ) -@skipUnless(HAS_GDAL, "GDAL is required") class SpatialRefTest(unittest.TestCase): def test01_wkt(self): diff --git a/tests/gis_tests/geoapp/tests.py b/tests/gis_tests/geoapp/tests.py index e5c728078f..1ccac6fd1c 100644 --- a/tests/gis_tests/geoapp/tests.py +++ b/tests/gis_tests/geoapp/tests.py @@ -79,11 +79,10 @@ class GeoModelTest(TestCase): self.assertEqual(ply, ns.poly) # Testing the `ogr` and `srs` lazy-geometry properties. - if gdal.HAS_GDAL: - self.assertIsInstance(ns.poly.ogr, gdal.OGRGeometry) - self.assertEqual(ns.poly.wkb, ns.poly.ogr.wkb) - self.assertIsInstance(ns.poly.srs, gdal.SpatialReference) - self.assertEqual('WGS 84', ns.poly.srs.name) + self.assertIsInstance(ns.poly.ogr, gdal.OGRGeometry) + self.assertEqual(ns.poly.wkb, ns.poly.ogr.wkb) + self.assertIsInstance(ns.poly.srs, gdal.SpatialReference) + self.assertEqual('WGS 84', ns.poly.srs.name) # Changing the interior ring on the poly attribute. new_inner = LinearRing((30, 30), (30, 70), (70, 70), (70, 30), (30, 30)) diff --git a/tests/gis_tests/geos_tests/test_geos.py b/tests/gis_tests/geos_tests/test_geos.py index 3270c75762..a3da015314 100644 --- a/tests/gis_tests/geos_tests/test_geos.py +++ b/tests/gis_tests/geos_tests/test_geos.py @@ -7,7 +7,6 @@ from io import BytesIO from unittest import mock, skipUnless from django.contrib.gis import gdal -from django.contrib.gis.gdal import HAS_GDAL from django.contrib.gis.geos import ( HAS_GEOS, GeometryCollection, GEOSException, GEOSGeometry, LinearRing, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon, @@ -134,7 +133,6 @@ class GEOSTest(SimpleTestCase, TestDataMixin): self.assertEqual(srid, poly.shell.srid) self.assertEqual(srid, fromstr(poly.ewkt).srid) # Checking export - @skipUnless(HAS_GDAL, "GDAL is required.") def test_json(self): "Testing GeoJSON input/output (via GDAL)." for g in self.geometries.json_geoms: @@ -145,7 +143,6 @@ class GEOSTest(SimpleTestCase, TestDataMixin): self.assertEqual(json.loads(g.json), json.loads(geom.geojson)) self.assertEqual(GEOSGeometry(g.wkt, 4326), GEOSGeometry(geom.json)) - @skipUnless(HAS_GDAL, "GDAL is required.") def test_json_srid(self): geojson_data = { "type": "Point", @@ -730,7 +727,6 @@ class GEOSTest(SimpleTestCase, TestDataMixin): with self.assertRaisesMessage(ValueError, 'Input geometry already has SRID: %d.' % pnt.srid): GEOSGeometry(pnt.ewkb, srid=1) - @skipUnless(HAS_GDAL, "GDAL is required.") def test_custom_srid(self): """Test with a null srid and a srid unknown to GDAL.""" for srid in [None, 999999]: @@ -1016,7 +1012,6 @@ class GEOSTest(SimpleTestCase, TestDataMixin): # And, they should be equal. self.assertEqual(gc1, gc2) - @skipUnless(HAS_GDAL, "GDAL is required.") def test_gdal(self): "Testing `ogr` and `srs` properties." g1 = fromstr('POINT(5 23)') @@ -1042,7 +1037,6 @@ class GEOSTest(SimpleTestCase, TestDataMixin): self.assertNotEqual(poly._ptr, cpy1._ptr) self.assertNotEqual(poly._ptr, cpy2._ptr) - @skipUnless(HAS_GDAL, "GDAL is required to transform geometries") def test_transform(self): "Testing `transform` method." orig = GEOSGeometry('POINT (-104.609 38.255)', 4326) @@ -1067,13 +1061,11 @@ class GEOSTest(SimpleTestCase, TestDataMixin): self.assertAlmostEqual(trans.x, p.x, prec) self.assertAlmostEqual(trans.y, p.y, prec) - @skipUnless(HAS_GDAL, "GDAL is required to transform geometries") def test_transform_3d(self): p3d = GEOSGeometry('POINT (5 23 100)', 4326) p3d.transform(2774) self.assertEqual(p3d.z, 100) - @skipUnless(HAS_GDAL, "GDAL is required.") def test_transform_noop(self): """ Testing `transform` method (SRID match) """ # transform() should no-op if source & dest SRIDs match, @@ -1090,7 +1082,6 @@ class GEOSTest(SimpleTestCase, TestDataMixin): self.assertEqual(g1.srid, 4326) self.assertIsNot(g1, g, "Clone didn't happen") - @skipUnless(HAS_GDAL, "GDAL is required.") def test_transform_nosrid(self): """ Testing `transform` method (no SRID or negative SRID) """ diff --git a/tests/gis_tests/inspectapp/tests.py b/tests/gis_tests/inspectapp/tests.py index ec0be801db..8a058d6a8e 100644 --- a/tests/gis_tests/inspectapp/tests.py +++ b/tests/gis_tests/inspectapp/tests.py @@ -2,7 +2,8 @@ import os import re from io import StringIO -from django.contrib.gis.gdal import HAS_GDAL +from django.contrib.gis.gdal import GDAL_VERSION, Driver, GDALException +from django.contrib.gis.utils.ogrinspect import ogrinspect from django.core.management import call_command from django.db import connection, connections from django.test import TestCase, skipUnlessDBFeature @@ -10,12 +11,7 @@ from django.test.utils import modify_settings from ..test_data import TEST_DATA from ..utils import postgis - -if HAS_GDAL: - from django.contrib.gis.gdal import Driver, GDALException, GDAL_VERSION - from django.contrib.gis.utils.ogrinspect import ogrinspect - - from .models import AllOGRFields +from .models import AllOGRFields class InspectDbTests(TestCase): diff --git a/tests/gis_tests/layermap/tests.py b/tests/gis_tests/layermap/tests.py index 3e19697501..f03ff81592 100644 --- a/tests/gis_tests/layermap/tests.py +++ b/tests/gis_tests/layermap/tests.py @@ -4,12 +4,11 @@ from copy import copy from decimal import Decimal from django.conf import settings -from django.contrib.gis.gdal import HAS_GDAL from django.contrib.gis.geos import HAS_GEOS from django.db import connection from django.test import TestCase, override_settings -if HAS_GEOS and HAS_GDAL: +if HAS_GEOS: from django.contrib.gis.utils.layermapping import ( LayerMapping, LayerMapError, InvalidDecimal, InvalidString, MissingForeignKey, diff --git a/tests/gis_tests/rasterapp/models.py b/tests/gis_tests/rasterapp/models.py index c360d95716..e7769f19c4 100644 --- a/tests/gis_tests/rasterapp/models.py +++ b/tests/gis_tests/rasterapp/models.py @@ -1,23 +1,23 @@ from django.contrib.gis.db import models -from django.contrib.gis.gdal import HAS_GDAL -if HAS_GDAL: - class RasterModel(models.Model): - rast = models.RasterField('A Verbose Raster Name', null=True, srid=4326, spatial_index=True, blank=True) - rastprojected = models.RasterField('A Projected Raster Table', srid=3086, null=True) - geom = models.PointField(null=True) - class Meta: - required_db_features = ['supports_raster'] +class RasterModel(models.Model): + rast = models.RasterField('A Verbose Raster Name', null=True, srid=4326, spatial_index=True, blank=True) + rastprojected = models.RasterField('A Projected Raster Table', srid=3086, null=True) + geom = models.PointField(null=True) - def __str__(self): - return str(self.id) + class Meta: + required_db_features = ['supports_raster'] - class RasterRelatedModel(models.Model): - rastermodel = models.ForeignKey(RasterModel, models.CASCADE) + def __str__(self): + return str(self.id) - class Meta: - required_db_features = ['supports_raster'] - def __str__(self): - return str(self.id) +class RasterRelatedModel(models.Model): + rastermodel = models.ForeignKey(RasterModel, models.CASCADE) + + class Meta: + required_db_features = ['supports_raster'] + + def __str__(self): + return str(self.id) diff --git a/tests/gis_tests/rasterapp/test_rasterfield.py b/tests/gis_tests/rasterapp/test_rasterfield.py index 68df5dc0aa..df2b448a7e 100644 --- a/tests/gis_tests/rasterapp/test_rasterfield.py +++ b/tests/gis_tests/rasterapp/test_rasterfield.py @@ -3,7 +3,7 @@ import json from django.contrib.gis.db.models.fields import BaseSpatialField from django.contrib.gis.db.models.functions import Distance from django.contrib.gis.db.models.lookups import DistanceLookupBase, GISLookup -from django.contrib.gis.gdal import HAS_GDAL +from django.contrib.gis.gdal import GDALRaster from django.contrib.gis.geos import GEOSGeometry from django.contrib.gis.measure import D from django.contrib.gis.shortcuts import numpy @@ -11,10 +11,7 @@ from django.db.models import Q from django.test import TransactionTestCase, skipUnlessDBFeature from ..data.rasters.textrasters import JSON_RASTER - -if HAS_GDAL: - from django.contrib.gis.gdal import GDALRaster - from .models import RasterModel, RasterRelatedModel +from .models import RasterModel, RasterRelatedModel @skipUnlessDBFeature('supports_raster') diff --git a/tests/test_runner/test_discover_runner.py b/tests/test_runner/test_discover_runner.py index 3ea563d1e6..3908f0a9da 100644 --- a/tests/test_runner/test_discover_runner.py +++ b/tests/test_runner/test_discover_runner.py @@ -135,8 +135,8 @@ class DiscoverRunnerTest(TestCase): """ Tests shouldn't be discovered twice when discovering on overlapping paths. """ - base_app = 'gis_tests' - sub_app = 'gis_tests.geo3d' + base_app = 'forms_tests' + sub_app = 'forms_tests.field_tests' with self.modify_settings(INSTALLED_APPS={'append': sub_app}): single = DiscoverRunner().build_suite([base_app]).countTestCases() dups = DiscoverRunner().build_suite([base_app, sub_app]).countTestCases()