From 16ed35fafc0583b485a0289afda632f8261ecc96 Mon Sep 17 00:00:00 2001 From: Brandon Taylor Date: Tue, 7 Oct 2014 13:53:19 -0400 Subject: [PATCH] Fixed #23612 -- Normalized fixuture paths to allow referencing relative paths on Windows. --- django/core/management/commands/loaddata.py | 2 +- tests/fixtures_regress/tests.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/django/core/management/commands/loaddata.py b/django/core/management/commands/loaddata.py index 9cd5a232fd..05cf769489 100644 --- a/django/core/management/commands/loaddata.py +++ b/django/core/management/commands/loaddata.py @@ -186,7 +186,7 @@ class Command(BaseCommand): fixture_name = os.path.basename(fixture_name) else: fixture_dirs = self.fixture_dirs - if os.path.sep in fixture_name: + if os.path.sep in os.path.normpath(fixture_name): fixture_dirs = [os.path.join(dir_, os.path.dirname(fixture_name)) for dir_ in fixture_dirs] fixture_name = os.path.basename(fixture_name) diff --git a/tests/fixtures_regress/tests.py b/tests/fixtures_regress/tests.py index c01411e158..cc95a41b10 100644 --- a/tests/fixtures_regress/tests.py +++ b/tests/fixtures_regress/tests.py @@ -857,3 +857,15 @@ class TestTicket11101(TransactionTestCase): self.assertEqual(Thingy.objects.count(), 1) transaction.set_rollback(True) self.assertEqual(Thingy.objects.count(), 0) + + +class TestLoadFixtureFromOtherAppDirectory(TestCase): + """ + #23612 -- fixtures path should be normalized to allow referencing relative + paths on Windows. + """ + fixtures = ['fixtures_regress/fixtures/absolute.json'] + + def test_fixtures_loaded(self): + count = Absolute.objects.count() + self.assertGreater(count, 0, "Fixtures not loaded properly.")