[1.8.x] Moved contrib.gis tests out of contrib.

Backport of ad0be620ae from master
This commit is contained in:
Tim Graham 2015-02-10 10:07:44 -05:00
parent 2482c9dd24
commit 69c89aeccf
99 changed files with 82 additions and 72 deletions

View File

@ -19,14 +19,8 @@ recursive-include django/contrib/admin/templates *
recursive-include django/contrib/admin/static * recursive-include django/contrib/admin/static *
recursive-include django/contrib/admindocs/templates * recursive-include django/contrib/admindocs/templates *
recursive-include django/contrib/auth/templates * recursive-include django/contrib/auth/templates *
recursive-include django/contrib/gis/gdal/tests/data *
recursive-include django/contrib/gis/static * recursive-include django/contrib/gis/static *
recursive-include django/contrib/gis/templates * recursive-include django/contrib/gis/templates *
recursive-include django/contrib/gis/tests/data *
recursive-include django/contrib/gis/tests/distapp/fixtures *
recursive-include django/contrib/gis/tests/geoapp/fixtures *
recursive-include django/contrib/gis/tests/geogapp/fixtures *
recursive-include django/contrib/gis/tests/relatedapp/fixtures *
recursive-include django/contrib/sitemaps/templates * recursive-include django/contrib/sitemaps/templates *
recursive-exclude * __pycache__ recursive-exclude * __pycache__
recursive-exclude * *.py[co] recursive-exclude * *.py[co]

View File

@ -1,7 +1,8 @@
from django.contrib.gis.db import models from django.contrib.gis.db import models
from django.contrib.gis.tests.utils import gisfield_may_be_null
from django.utils.encoding import python_2_unicode_compatible from django.utils.encoding import python_2_unicode_compatible
from ..utils import gisfield_may_be_null
@python_2_unicode_compatible @python_2_unicode_compatible
class NamedModel(models.Model): class NamedModel(models.Model):
@ -11,7 +12,6 @@ class NamedModel(models.Model):
class Meta: class Meta:
abstract = True abstract = True
app_label = 'distapp'
def __str__(self): def __str__(self):
return self.name return self.name

View File

@ -2,13 +2,12 @@ from __future__ import unicode_literals
from django.contrib.gis.geos import HAS_GEOS from django.contrib.gis.geos import HAS_GEOS
from django.contrib.gis.measure import D # alias for Distance from django.contrib.gis.measure import D # alias for Distance
from django.contrib.gis.tests.utils import (
no_oracle, oracle, postgis, spatialite,
)
from django.db import connection from django.db import connection
from django.db.models import Q from django.db.models import Q
from django.test import TestCase, skipUnlessDBFeature from django.test import TestCase, skipUnlessDBFeature
from ..utils import no_oracle, oracle, postgis, spatialite
if HAS_GEOS: if HAS_GEOS:
from django.contrib.gis.geos import GEOSGeometry, LineString from django.contrib.gis.geos import GEOSGeometry, LineString

View File

@ -3,9 +3,8 @@ import unittest
from unittest import skipUnless from unittest import skipUnless
from django.contrib.gis.gdal import HAS_GDAL from django.contrib.gis.gdal import HAS_GDAL
from django.contrib.gis.geometry.test_data import (
TEST_DATA, TestDS, get_ds_file, from ..test_data import TEST_DATA, TestDS, get_ds_file
)
if HAS_GDAL: if HAS_GDAL:
from django.contrib.gis.gdal import DataSource, Envelope, OGRGeometry, GDALException, OGRIndexError, GDAL_VERSION from django.contrib.gis.gdal import DataSource, Envelope, OGRGeometry, GDALException, OGRIndexError, GDAL_VERSION

View File

@ -4,9 +4,10 @@ from binascii import b2a_hex
from unittest import skipUnless from unittest import skipUnless
from django.contrib.gis.gdal import HAS_GDAL from django.contrib.gis.gdal import HAS_GDAL
from django.contrib.gis.geometry.test_data import TestDataMixin
from django.utils.six.moves import range from django.utils.six.moves import range
from ..test_data import TestDataMixin
try: try:
from django.utils.six.moves import cPickle as pickle from django.utils.six.moves import cPickle as pickle
except ImportError: except ImportError:

View File

@ -10,7 +10,6 @@ class NamedModel(models.Model):
class Meta: class Meta:
abstract = True abstract = True
app_label = 'geo3d'
def __str__(self): def __str__(self):
return self.name return self.name
@ -50,7 +49,6 @@ class SimpleModel(models.Model):
class Meta: class Meta:
abstract = True abstract = True
app_label = 'geo3d'
class Point2D(SimpleModel): class Point2D(SimpleModel):

View File

@ -1,7 +1,8 @@
from django.contrib.gis.db import models from django.contrib.gis.db import models
from django.contrib.gis.tests.utils import gisfield_may_be_null
from django.utils.encoding import python_2_unicode_compatible from django.utils.encoding import python_2_unicode_compatible
from ..utils import gisfield_may_be_null
@python_2_unicode_compatible @python_2_unicode_compatible
class NamedModel(models.Model): class NamedModel(models.Model):
@ -11,7 +12,6 @@ class NamedModel(models.Model):
class Meta: class Meta:
abstract = True abstract = True
app_label = 'geoapp'
def __str__(self): def __str__(self):
return self.name return self.name
@ -24,6 +24,9 @@ class Country(NamedModel):
class City(NamedModel): class City(NamedModel):
point = models.PointField() point = models.PointField()
class Meta:
app_label = 'geoapp'
# This is an inherited model from City # This is an inherited model from City
class PennsylvaniaCity(City): class PennsylvaniaCity(City):
@ -41,6 +44,9 @@ class PennsylvaniaCity(City):
class State(NamedModel): class State(NamedModel):
poly = models.PolygonField(null=gisfield_may_be_null) # Allowing NULL geometries here. poly = models.PolygonField(null=gisfield_may_be_null) # Allowing NULL geometries here.
class Meta:
app_label = 'geoapp'
class Track(NamedModel): class Track(NamedModel):
line = models.LineStringField() line = models.LineStringField()
@ -57,9 +63,6 @@ class Truth(models.Model):
objects = models.GeoManager() objects = models.GeoManager()
class Meta:
app_label = 'geoapp'
class Feature(NamedModel): class Feature(NamedModel):
geom = models.GeometryField() geom = models.GeometryField()
@ -70,9 +73,6 @@ class MinusOneSRID(models.Model):
objects = models.GeoManager() objects = models.GeoManager()
class Meta:
app_label = 'geoapp'
class NonConcreteField(models.IntegerField): class NonConcreteField(models.IntegerField):

View File

@ -14,7 +14,7 @@ if HAS_GEOS:
@modify_settings(INSTALLED_APPS={'append': 'django.contrib.sites'}) @modify_settings(INSTALLED_APPS={'append': 'django.contrib.sites'})
@override_settings(ROOT_URLCONF='django.contrib.gis.tests.geoapp.urls') @override_settings(ROOT_URLCONF='gis_tests.geoapp.urls')
@skipUnlessDBFeature("gis_enabled") @skipUnlessDBFeature("gis_enabled")
class GeoFeedTest(TestCase): class GeoFeedTest(TestCase):
fixtures = ['initial'] fixtures = ['initial']

View File

@ -5,10 +5,11 @@ from datetime import datetime
from django.contrib.gis.geos import HAS_GEOS from django.contrib.gis.geos import HAS_GEOS
from django.contrib.gis.shortcuts import render_to_kmz from django.contrib.gis.shortcuts import render_to_kmz
from django.contrib.gis.tests.utils import no_oracle
from django.db.models import Count, Min from django.db.models import Count, Min
from django.test import TestCase, skipUnlessDBFeature from django.test import TestCase, skipUnlessDBFeature
from ..utils import no_oracle
if HAS_GEOS: if HAS_GEOS:
from django.contrib.gis.db.models import Extent from django.contrib.gis.db.models import Extent
from .models import City, PennsylvaniaCity, State, Truth from .models import City, PennsylvaniaCity, State, Truth

View File

@ -18,7 +18,7 @@ if HAS_GEOS:
@modify_settings(INSTALLED_APPS={'append': ['django.contrib.sites', 'django.contrib.sitemaps']}) @modify_settings(INSTALLED_APPS={'append': ['django.contrib.sites', 'django.contrib.sitemaps']})
@override_settings(ROOT_URLCONF='django.contrib.gis.tests.geoapp.urls') @override_settings(ROOT_URLCONF='gis_tests.geoapp.urls')
@skipUnlessDBFeature("gis_enabled") @skipUnlessDBFeature("gis_enabled")
class GeoSitemapTest(TestCase): class GeoSitemapTest(TestCase):

View File

@ -5,15 +5,14 @@ from tempfile import NamedTemporaryFile
from django.contrib.gis import gdal from django.contrib.gis import gdal
from django.contrib.gis.geos import HAS_GEOS from django.contrib.gis.geos import HAS_GEOS
from django.contrib.gis.tests.utils import (
no_oracle, oracle, postgis, spatialite,
)
from django.core.management import call_command from django.core.management import call_command
from django.db import connection from django.db import connection
from django.test import TestCase, ignore_warnings, skipUnlessDBFeature from django.test import TestCase, ignore_warnings, skipUnlessDBFeature
from django.utils import six from django.utils import six
from django.utils.deprecation import RemovedInDjango20Warning from django.utils.deprecation import RemovedInDjango20Warning
from ..utils import no_oracle, oracle, postgis, spatialite
if HAS_GEOS: if HAS_GEOS:
from django.contrib.gis.db.models import Extent, MakeLine, Union from django.contrib.gis.db.models import Extent, MakeLine, Union
from django.contrib.gis.geos import (fromstr, GEOSGeometry, from django.contrib.gis.geos import (fromstr, GEOSGeometry,

View File

@ -10,7 +10,6 @@ class NamedModel(models.Model):
class Meta: class Meta:
abstract = True abstract = True
app_label = 'geogapp'
def __str__(self): def __str__(self):
return self.name return self.name
@ -19,6 +18,9 @@ class NamedModel(models.Model):
class City(NamedModel): class City(NamedModel):
point = models.PointField(geography=True) point = models.PointField(geography=True)
class Meta:
app_label = 'geogapp'
class Zipcode(NamedModel): class Zipcode(NamedModel):
code = models.CharField(max_length=10) code = models.CharField(max_length=10)
@ -29,5 +31,8 @@ class County(NamedModel):
state = models.CharField(max_length=20) state = models.CharField(max_length=20)
mpoly = models.MultiPolygonField(geography=True) mpoly = models.MultiPolygonField(geography=True)
class Meta:
app_label = 'geogapp'
def __str__(self): def __str__(self):
return ' County, '.join([self.name, self.state]) return ' County, '.join([self.name, self.state])

View File

@ -9,10 +9,11 @@ from unittest import skipUnless
from django.contrib.gis.gdal import HAS_GDAL from django.contrib.gis.gdal import HAS_GDAL
from django.contrib.gis.geos import HAS_GEOS from django.contrib.gis.geos import HAS_GEOS
from django.contrib.gis.measure import D from django.contrib.gis.measure import D
from django.contrib.gis.tests.utils import oracle, postgis
from django.test import TestCase, skipUnlessDBFeature from django.test import TestCase, skipUnlessDBFeature
from django.utils._os import upath from django.utils._os import upath
from ..utils import oracle, postgis
if HAS_GEOS: if HAS_GEOS:
from .models import City, County, Zipcode from .models import City, County, Zipcode

View File

@ -9,18 +9,20 @@ from io import BytesIO
from unittest import skipUnless from unittest import skipUnless
from django.contrib.gis.gdal import HAS_GDAL from django.contrib.gis.gdal import HAS_GDAL
from django.contrib.gis.geometry.test_data import TestDataMixin from django.contrib.gis.geos import HAS_GEOS
from django.utils import six from django.utils import six
from django.utils.encoding import force_bytes from django.utils.encoding import force_bytes
from django.utils.six.moves import range from django.utils.six.moves import range
from .. import HAS_GEOS from ..test_data import TestDataMixin
if HAS_GEOS: if HAS_GEOS:
from .. import (GEOSException, GEOSIndexError, GEOSGeometry, from django.contrib.gis.geos import (
GeometryCollection, Point, MultiPoint, Polygon, MultiPolygon, LinearRing, GEOSException, GEOSIndexError, GEOSGeometry, GeometryCollection, Point,
LineString, MultiLineString, fromfile, fromstr, geos_version_info) MultiPoint, Polygon, MultiPolygon, LinearRing, LineString,
from ..base import gdal, numpy, GEOSBase MultiLineString, fromfile, fromstr, geos_version_info,
)
from django.contrib.gis.geos.base import gdal, numpy, GEOSBase
@skipUnless(HAS_GEOS, "Geos is required.") @skipUnless(HAS_GEOS, "Geos is required.")

View File

@ -5,11 +5,13 @@
import unittest import unittest
from unittest import skipUnless from unittest import skipUnless
from .. import HAS_GEOS from django.contrib.gis.geos import HAS_GEOS
if HAS_GEOS: if HAS_GEOS:
from .. import fromstr, LinearRing, LineString, MultiPoint, Point, Polygon from django.contrib.gis.geos import (
from ..error import GEOSIndexError fromstr, LinearRing, LineString, MultiPoint, Point, Polygon,
)
from django.contrib.gis.geos.error import GEOSIndexError
if HAS_GEOS: if HAS_GEOS:

View File

@ -4,12 +4,13 @@ import binascii
import unittest import unittest
from unittest import skipUnless from unittest import skipUnless
from django.contrib.gis.geos import HAS_GEOS
from django.utils.six import memoryview from django.utils.six import memoryview
from ..import HAS_GEOS # isort:skip
if HAS_GEOS: if HAS_GEOS:
from .. import GEOSGeometry, WKTReader, WKTWriter, WKBReader, WKBWriter from django.contrib.gis.geos import (
GEOSGeometry, WKTReader, WKTWriter, WKBReader, WKBWriter,
)
@skipUnless(HAS_GEOS, "Geos is required.") @skipUnless(HAS_GEOS, "Geos is required.")

View File

@ -10,7 +10,7 @@ class MigrateTests(TransactionTestCase):
""" """
Tests running the migrate command in Geodjango. Tests running the migrate command in Geodjango.
""" """
available_apps = ["django.contrib.gis.tests.gis_migrations"] available_apps = ["gis_tests.gis_migrations"]
def get_table_description(self, table): def get_table_description(self, table):
with connection.cursor() as cursor: with connection.cursor() as cursor:

View File

@ -1,11 +1,12 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from django.contrib.gis.tests.utils import mysql
from django.db import connection, migrations, models from django.db import connection, migrations, models
from django.db.migrations.migration import Migration from django.db.migrations.migration import Migration
from django.db.migrations.state import ProjectState from django.db.migrations.state import ProjectState
from django.test import TransactionTestCase, skipUnlessDBFeature from django.test import TransactionTestCase, skipUnlessDBFeature
from ..utils import mysql
if connection.features.gis_enabled: if connection.features.gis_enabled:
from django.contrib.gis.db.models import fields from django.contrib.gis.db.models import fields
try: try:
@ -17,7 +18,7 @@ if connection.features.gis_enabled:
@skipUnlessDBFeature("gis_enabled") @skipUnlessDBFeature("gis_enabled")
class OperationTests(TransactionTestCase): class OperationTests(TransactionTestCase):
available_apps = ["django.contrib.gis.tests.gis_migrations"] available_apps = ["gis_tests.gis_migrations"]
def tearDown(self): def tearDown(self):
# Delete table after testing # Delete table after testing

View File

@ -14,6 +14,3 @@ class AllOGRFields(models.Model):
point = models.PointField() point = models.PointField()
objects = models.GeoManager() objects = models.GeoManager()
class Meta:
app_label = 'inspectapp'

View File

@ -5,12 +5,13 @@ import re
from unittest import skipUnless from unittest import skipUnless
from django.contrib.gis.gdal import HAS_GDAL from django.contrib.gis.gdal import HAS_GDAL
from django.contrib.gis.geometry.test_data import TEST_DATA
from django.core.management import call_command from django.core.management import call_command
from django.db import connection, connections from django.db import connection, connections
from django.test import TestCase, skipUnlessDBFeature from django.test import TestCase, skipUnlessDBFeature
from django.utils.six import StringIO from django.utils.six import StringIO
from ..test_data import TEST_DATA
if HAS_GDAL: if HAS_GDAL:
from django.contrib.gis.gdal import Driver, GDALException from django.contrib.gis.gdal import Driver, GDALException
from django.contrib.gis.utils.ogrinspect import ogrinspect from django.contrib.gis.utils.ogrinspect import ogrinspect

View File

@ -10,7 +10,6 @@ class NamedModel(models.Model):
class Meta: class Meta:
abstract = True abstract = True
app_label = 'layermap'
def __str__(self): def __str__(self):
return self.name return self.name
@ -37,11 +36,17 @@ class City(NamedModel):
dt = models.DateField() dt = models.DateField()
point = models.PointField() point = models.PointField()
class Meta:
app_label = 'layermap'
class Interstate(NamedModel): class Interstate(NamedModel):
length = models.DecimalField(max_digits=6, decimal_places=2) length = models.DecimalField(max_digits=6, decimal_places=2)
path = models.LineStringField() path = models.LineStringField()
class Meta:
app_label = 'layermap'
# Same as `City` above, but for testing model inheritance. # Same as `City` above, but for testing model inheritance.
class CityBase(NamedModel): class CityBase(NamedModel):
@ -67,9 +72,6 @@ class ICity2(ICity1):
class Invalid(models.Model): class Invalid(models.Model):
point = models.PointField() point = models.PointField()
class Meta:
app_label = 'layermap'
# Mapping dictionaries for the models above. # Mapping dictionaries for the models above.
co_mapping = { co_mapping = {

View File

@ -5,12 +5,15 @@ from unittest import skipUnless
from django.contrib.gis.geos import HAS_GEOS from django.contrib.gis.geos import HAS_GEOS
from django.test import TestCase from django.test import TestCase
from django.test.utils import override_settings from django.test.utils import modify_settings, override_settings
GOOGLE_MAPS_API_KEY = 'XXXX' GOOGLE_MAPS_API_KEY = 'XXXX'
@skipUnless(HAS_GEOS, 'Geos is required.') @skipUnless(HAS_GEOS, 'Geos is required.')
@modify_settings(
INSTALLED_APPS={'append': 'django.contrib.gis'},
)
class GoogleMapsTest(TestCase): class GoogleMapsTest(TestCase):
@override_settings(GOOGLE_MAPS_API_KEY=GOOGLE_MAPS_API_KEY) @override_settings(GOOGLE_MAPS_API_KEY=GOOGLE_MAPS_API_KEY)

View File

@ -8,7 +8,6 @@ class SimpleModel(models.Model):
class Meta: class Meta:
abstract = True abstract = True
app_label = 'relatedapp'
@python_2_unicode_compatible @python_2_unicode_compatible
@ -34,9 +33,6 @@ class AugmentedLocation(Location):
objects = models.GeoManager() objects = models.GeoManager()
class Meta:
app_label = 'relatedapp'
class DirectoryEntry(SimpleModel): class DirectoryEntry(SimpleModel):
listing_text = models.CharField(max_length=50) listing_text = models.CharField(max_length=50)

View File

@ -1,13 +1,14 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from django.contrib.gis.geos import HAS_GEOS from django.contrib.gis.geos import HAS_GEOS
from django.contrib.gis.tests.utils import no_oracle
from django.db import connection from django.db import connection
from django.test import TestCase, ignore_warnings, skipUnlessDBFeature from django.test import TestCase, ignore_warnings, skipUnlessDBFeature
from django.test.utils import override_settings from django.test.utils import override_settings
from django.utils import timezone from django.utils import timezone
from django.utils.deprecation import RemovedInDjango20Warning from django.utils.deprecation import RemovedInDjango20Warning
from ..utils import no_oracle
if HAS_GEOS: if HAS_GEOS:
from django.contrib.gis.db.models import Collect, Count, Extent, F, Union from django.contrib.gis.db.models import Collect, Count, Extent, F, Union
from django.contrib.gis.geometry.backend import Geometry from django.contrib.gis.geometry.backend import Geometry

View File

@ -5,13 +5,12 @@ for the GEOS and GDAL tests.
import json import json
import os import os
from django.contrib import gis
from django.utils import six from django.utils import six
from django.utils._os import upath from django.utils._os import upath
from django.utils.functional import cached_property from django.utils.functional import cached_property
# Path where reference test data is located. # Path where reference test data is located.
TEST_DATA = os.path.join(os.path.dirname(upath(gis.__file__)), 'tests', 'data') TEST_DATA = os.path.join(os.path.dirname(upath(__file__)), 'data')
def tuplize(seq): def tuplize(seq):

View File

@ -11,10 +11,10 @@ from django.contrib.gis.geos import HAS_GEOS
from django.utils import six from django.utils import six
if HAS_GEOIP: if HAS_GEOIP:
from . import GeoIP, GeoIPException from django.contrib.gis.geoip import GeoIP, GeoIPException
if HAS_GEOS: if HAS_GEOS:
from ..geos import GEOSGeometry from django.contrib.gis.geos import GEOSGeometry
# Note: Requires use of both the GeoIP country and city datasets. # Note: Requires use of both the GeoIP country and city datasets.

View File

@ -1,13 +1,12 @@
import unittest import unittest
from django.contrib.gis.gdal import HAS_GDAL from django.contrib.gis.gdal import HAS_GDAL
from django.contrib.gis.tests.utils import (
SpatialRefSys, oracle, postgis, spatialite,
)
from django.db import connection from django.db import connection
from django.test import skipUnlessDBFeature from django.test import skipUnlessDBFeature
from django.utils import six from django.utils import six
from .utils import SpatialRefSys, oracle, postgis, spatialite
test_srs = ({ test_srs = ({
'srid': 4326, 'srid': 4326,
'auth_name': ('EPSG', True), 'auth_name': ('EPSG', True),

View File

@ -76,9 +76,10 @@ def get_test_modules():
(None, RUNTESTS_DIR), (None, RUNTESTS_DIR),
(CONTRIB_MODULE_PATH, CONTRIB_DIR) (CONTRIB_MODULE_PATH, CONTRIB_DIR)
] ]
# GIS tests are in nested apps
if connection.features.gis_enabled: if connection.features.gis_enabled:
discovery_paths.append( discovery_paths.append(
('django.contrib.gis.tests', os.path.join(CONTRIB_DIR, 'gis', 'tests')) ('gis_tests', os.path.join(RUNTESTS_DIR, 'gis_tests'))
) )
for modpath, dirpath in discovery_paths: for modpath, dirpath in discovery_paths:
@ -210,6 +211,14 @@ def setup(verbosity, test_labels):
print("Importing application %s" % module_name) print("Importing application %s" % module_name)
settings.INSTALLED_APPS.append(module_label) settings.INSTALLED_APPS.append(module_label)
# Add contrib.gis to INSTALLED_APPS if needed (rather than requiring
# @override_settings(INSTALLED_APPS=...) on all test cases.
gis = 'django.contrib.gis'
if connection.features.gis_enabled and gis not in settings.INSTALLED_APPS:
if verbosity >= 2:
print("Importing application %s" % gis)
settings.INSTALLED_APPS.append(gis)
apps.set_installed_apps(settings.INSTALLED_APPS) apps.set_installed_apps(settings.INSTALLED_APPS)
return state return state

View File

@ -121,9 +121,9 @@ class DiscoverRunnerTest(TestCase):
""" """
Tests shouldn't be discovered twice when discovering on overlapping paths. Tests shouldn't be discovered twice when discovering on overlapping paths.
""" """
single = DiscoverRunner().build_suite(["django.contrib.gis"]).countTestCases() single = DiscoverRunner().build_suite(["gis_tests"]).countTestCases()
dups = DiscoverRunner().build_suite( dups = DiscoverRunner().build_suite(
["django.contrib.gis", "django.contrib.gis.tests.geo3d"]).countTestCases() ["gis_tests", "gis_tests.geo3d"]).countTestCases()
self.assertEqual(single, dups) self.assertEqual(single, dups)
def test_reverse(self): def test_reverse(self):