From 47b7f601eeb93bd7a91f87b77da658212f2f2314 Mon Sep 17 00:00:00 2001 From: Carl Meyer Date: Wed, 19 Nov 2014 14:08:57 -0700 Subject: [PATCH] Fixed #23872 -- Removed sensitivity of migrations tests to CWD. --- tests/migrations/test_base.py | 6 +++++- tests/migrations/test_commands.py | 28 ++++++++++++++-------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/tests/migrations/test_base.py b/tests/migrations/test_base.py index ca733a72d1..7b3e2a9fcd 100644 --- a/tests/migrations/test_base.py +++ b/tests/migrations/test_base.py @@ -1,5 +1,8 @@ -from django.test import TransactionTestCase +import os + from django.db import connection +from django.test import TransactionTestCase +from django.utils._os import upath class MigrationTestBase(TransactionTestCase): @@ -8,6 +11,7 @@ class MigrationTestBase(TransactionTestCase): """ available_apps = ["migrations"] + test_dir = os.path.abspath(os.path.dirname(upath(__file__))) def get_table_description(self, table): with connection.cursor() as cursor: diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py index 83826e819d..ddbcfb343a 100644 --- a/tests/migrations/test_commands.py +++ b/tests/migrations/test_commands.py @@ -11,7 +11,6 @@ from django.core.management import call_command, CommandError from django.db.migrations import questioner from django.test import override_settings from django.utils import six -from django.utils._os import upath from django.utils.encoding import force_text from .models import UnicodeModel, UnserializableModel @@ -144,8 +143,6 @@ class MakeMigrationsTests(MigrationTestBase): def setUp(self): 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_pkg = "migrations.migrations_%d" % self.creation_counter self._old_models = apps.app_configs['migrations'].models.copy() @@ -155,19 +152,21 @@ class MakeMigrationsTests(MigrationTestBase): apps.all_models['migrations'] = self._old_models apps.clear_cache() + _cwd = os.getcwd() os.chdir(self.test_dir) try: - self._rmrf(self.migration_dir) - except OSError: - pass + try: + self._rmrf(self.migration_dir) + except OSError: + pass - try: - self._rmrf(os.path.join(self.test_dir, - "test_migrations_path_doesnt_exist")) - except OSError: - pass - - os.chdir(self._cwd) + try: + self._rmrf(os.path.join(self.test_dir, + "test_migrations_path_doesnt_exist")) + except OSError: + pass + finally: + os.chdir(_cwd) def _rmrf(self, dname): 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. """ - 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): if os.path.exists(self.path):