From 0f46ec315ea079ed1bd01d30e6e0ebec0f405c7f Mon Sep 17 00:00:00 2001 From: Ramiro Morales Date: Wed, 2 Oct 2013 06:57:56 -0300 Subject: [PATCH] Made skipping of symlink-related makemessages test smarter. os.symlink() is available starting with Windows Vista but can fail at runtime. --- tests/i18n/commands/extraction.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/i18n/commands/extraction.py b/tests/i18n/commands/extraction.py index 4139abdd37..341fa1b020 100644 --- a/tests/i18n/commands/extraction.py +++ b/tests/i18n/commands/extraction.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import os import re import shutil +from unittest import SkipTest import warnings from django.core import management @@ -314,11 +315,20 @@ class SymlinkExtractorTests(ExtractorTests): os.chdir(self._cwd) def test_symlink(self): + # On Python < 3.2 os.symlink() exists only on Unix if hasattr(os, 'symlink'): if os.path.exists(self.symlinked_dir): self.assertTrue(os.path.islink(self.symlinked_dir)) else: - os.symlink(os.path.join(self.test_dir, 'templates'), self.symlinked_dir) + # On Python >= 3.2) os.symlink() exists always but then can + # fail at runtime when user hasn't the needed permissions on + # WIndows versions that support symbolink links (>= 6/Vista). + # See Python issue 9333 (http://bugs.python.org/issue9333). + # Skip the test in that case + try: + os.symlink(os.path.join(self.test_dir, 'templates'), self.symlinked_dir) + except (OSError, NotImplementedError): + raise SkipTest("os.symlink() is available on this OS but can't be used by this user.") os.chdir(self.test_dir) management.call_command('makemessages', locale=LOCALE, verbosity=0, symlinks=True) self.assertTrue(os.path.exists(self.PO_FILE))