Fixed #23872 -- Removed sensitivity of migrations tests to CWD.

This commit is contained in:
Carl Meyer 2014-11-19 14:08:57 -07:00
parent 4932a7b8e0
commit 47b7f601ee
2 changed files with 19 additions and 15 deletions

View File

@ -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:

View File

@ -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):