Fixed #23872 -- Removed sensitivity of migrations tests to CWD.
This commit is contained in:
parent
4932a7b8e0
commit
47b7f601ee
|
@ -1,5 +1,8 @@
|
||||||
from django.test import TransactionTestCase
|
import os
|
||||||
|
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
|
from django.test import TransactionTestCase
|
||||||
|
from django.utils._os import upath
|
||||||
|
|
||||||
|
|
||||||
class MigrationTestBase(TransactionTestCase):
|
class MigrationTestBase(TransactionTestCase):
|
||||||
|
@ -8,6 +11,7 @@ class MigrationTestBase(TransactionTestCase):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
available_apps = ["migrations"]
|
available_apps = ["migrations"]
|
||||||
|
test_dir = os.path.abspath(os.path.dirname(upath(__file__)))
|
||||||
|
|
||||||
def get_table_description(self, table):
|
def get_table_description(self, table):
|
||||||
with connection.cursor() as cursor:
|
with connection.cursor() as cursor:
|
||||||
|
|
|
@ -11,7 +11,6 @@ from django.core.management import call_command, CommandError
|
||||||
from django.db.migrations import questioner
|
from django.db.migrations import questioner
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from django.utils._os import upath
|
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
from .models import UnicodeModel, UnserializableModel
|
from .models import UnicodeModel, UnserializableModel
|
||||||
|
@ -144,8 +143,6 @@ class MakeMigrationsTests(MigrationTestBase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
MakeMigrationsTests.creation_counter += 1
|
MakeMigrationsTests.creation_counter += 1
|
||||||
self._cwd = os.getcwd()
|
|
||||||
self.test_dir = os.path.abspath(os.path.dirname(upath(__file__)))
|
|
||||||
self.migration_dir = os.path.join(self.test_dir, 'migrations_%d' % self.creation_counter)
|
self.migration_dir = os.path.join(self.test_dir, 'migrations_%d' % self.creation_counter)
|
||||||
self.migration_pkg = "migrations.migrations_%d" % self.creation_counter
|
self.migration_pkg = "migrations.migrations_%d" % self.creation_counter
|
||||||
self._old_models = apps.app_configs['migrations'].models.copy()
|
self._old_models = apps.app_configs['migrations'].models.copy()
|
||||||
|
@ -155,19 +152,21 @@ class MakeMigrationsTests(MigrationTestBase):
|
||||||
apps.all_models['migrations'] = self._old_models
|
apps.all_models['migrations'] = self._old_models
|
||||||
apps.clear_cache()
|
apps.clear_cache()
|
||||||
|
|
||||||
|
_cwd = os.getcwd()
|
||||||
os.chdir(self.test_dir)
|
os.chdir(self.test_dir)
|
||||||
try:
|
try:
|
||||||
self._rmrf(self.migration_dir)
|
try:
|
||||||
except OSError:
|
self._rmrf(self.migration_dir)
|
||||||
pass
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._rmrf(os.path.join(self.test_dir,
|
self._rmrf(os.path.join(self.test_dir,
|
||||||
"test_migrations_path_doesnt_exist"))
|
"test_migrations_path_doesnt_exist"))
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
|
finally:
|
||||||
os.chdir(self._cwd)
|
os.chdir(_cwd)
|
||||||
|
|
||||||
def _rmrf(self, dname):
|
def _rmrf(self, dname):
|
||||||
if os.path.commonprefix([self.test_dir, os.path.abspath(dname)]) != self.test_dir:
|
if os.path.commonprefix([self.test_dir, os.path.abspath(dname)]) != self.test_dir:
|
||||||
|
@ -550,7 +549,8 @@ class SquashMigrationsTest(MigrationTestBase):
|
||||||
Tests running the squashmigrations command.
|
Tests running the squashmigrations command.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
path = "migrations/test_migrations/0001_squashed_0002_second.py"
|
path = "test_migrations/0001_squashed_0002_second.py"
|
||||||
|
path = os.path.join(MigrationTestBase.test_dir, path)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
if os.path.exists(self.path):
|
if os.path.exists(self.path):
|
||||||
|
|
Loading…
Reference in New Issue