Made skipping of symlink-related makemessages test smarter.

os.symlink() is available starting with Windows Vista but can fail at
runtime.
This commit is contained in:
Ramiro Morales 2013-10-02 06:57:56 -03:00 committed by Ramiro Morales
parent 43959d1057
commit 0f46ec315e
1 changed files with 11 additions and 1 deletions

View File

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