From db585530c638497e6ed20bfe3ec68a0d306fbb94 Mon Sep 17 00:00:00 2001
From: John Giannelos <johngiannelos@gmail.com>
Date: Tue, 19 Nov 2013 19:04:37 +0200
Subject: [PATCH] Fix collectstatic --link when dangling symlink exists
---
django/contrib/staticfiles/management/commands/collectstatic.py | 7 ++++++-
tests/staticfiles_tests/tests.py | 9 +++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/django/contrib/staticfiles/management/commands/collectstatic.py b/django/contrib/staticfiles/management/commands/collectstatic.py
index c1e9fa8..0d1bc24 100644
a
|
b
|
Type 'yes' to continue, or 'no' to cancel: """
|
273 | 273 | os.makedirs(os.path.dirname(full_path)) |
274 | 274 | except OSError: |
275 | 275 | pass |
276 | | os.symlink(source_path, full_path) |
| 276 | try: |
| 277 | if os.path.lexists(full_path): |
| 278 | os.unlink(full_path) |
| 279 | os.symlink(source_path, full_path) |
| 280 | except OSError: |
| 281 | pass |
277 | 282 | if prefixed_path not in self.symlinked_files: |
278 | 283 | self.symlinked_files.append(prefixed_path) |
279 | 284 | |
diff --git a/tests/staticfiles_tests/tests.py b/tests/staticfiles_tests/tests.py
index 39ce498..4c0b5d0 100644
a
|
b
|
if sys.platform != 'win32':
|
625 | 625 | """ |
626 | 626 | self.assertTrue(os.path.islink(os.path.join(settings.STATIC_ROOT, 'test.txt'))) |
627 | 627 | |
| 628 | def test_broken_symlink(self): |
| 629 | """ |
| 630 | Test broken symlink gets deleted. |
| 631 | """ |
| 632 | path = os.path.join(settings.STATIC_ROOT, 'test.txt') |
| 633 | os.unlink(path) |
| 634 | self.run_collectstatic() |
| 635 | self.assertTrue(os.path.islink(path)) |
| 636 | |
628 | 637 | |
629 | 638 | class TestServeStatic(StaticFilesTestCase): |
630 | 639 | """ |