Commit 0f46ec31 authored by Ramiro Morales's avatar Ramiro Morales Committed by Ramiro Morales
Browse files

Made skipping of symlink-related makemessages test smarter.

os.symlink() is available starting with Windows Vista but can fail at
runtime.
parent 43959d10
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -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:
                # 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))