summaryrefslogtreecommitdiff
path: root/tests/test_scss.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_scss.py')
-rw-r--r--tests/test_scss.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/test_scss.py b/tests/test_scss.py
index 78cd46e..6864be1 100644
--- a/tests/test_scss.py
+++ b/tests/test_scss.py
@@ -1,9 +1,12 @@
import os
+import mock
+import tempfile
from django.test import TestCase
from django.test.utils import override_settings
from django.conf import settings
+from scss import config
from django_pyscss.scss import DjangoScss
from tests.utils import clean_css, CollectStaticTestCase
@@ -141,3 +144,28 @@ class AssetsTest(CompilerTestMixin, TestCase):
# pyScss puts a cachebuster query string on the end of the URLs, lets
# just check that it made the file that we expected.
self.assertIn('KUZdBAnPCdlG5qfocw9GYw.png', actual)
+
+ def test_mkdir_race_condition(self):
+ """
+ There is a race condition when different instances of DjangoScss are
+ instantiated in different threads.
+
+ See https://github.com/fusionbox/django-pyscss/issues/23
+
+ We simulate the race condition by mocking the return of os.path.exists.
+ """
+ old_assets_root = config.ASSETS_ROOT
+ try:
+ new_assets_root = tempfile.mkdtemp()
+ config.ASSETS_ROOT = new_assets_root
+
+ def return_false_once(*args, **kwargs):
+ patch.stop()
+ return False
+
+ patch = mock.patch('os.path.exists', new=return_false_once)
+ patch.start()
+ self.compiler.compile(scss_string=".test { color: red; }")
+ finally:
+ config.ASSETS_ROOT = old_assets_root
+ os.rmdir(new_assets_root)