Skip to content

Commit a95584e

Browse files
committed
Fix StorageGlobber test suite errors on Windows
The StorageGlobber tests were failing on windows because the paths get normalized to use two slashed by os.path.join. Fixed by normalizing all paths in StorageGlobber and changing expected results in the tests to use the normalized form.
1 parent 757ddf8 commit a95584e

File tree

2 files changed

+20
-17
lines changed

2 files changed

+20
-17
lines changed

djangojs/tests/test_globber.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from djangojs.utils import StorageGlobber
44

5+
from os.path import normpath
56

67
class StorageGlobberTest(TestCase):
78

@@ -13,48 +14,48 @@ def test_no_js_file(self):
1314
def test_single_js_file(self):
1415
'''Should handle a single js file name as string'''
1516
files = 'js/test/libs/jasmine-djangojs.js'
16-
expected = ['js/test/libs/jasmine-djangojs.js']
17+
expected = [normpath('js/test/libs/jasmine-djangojs.js')]
1718
self.assertEqual(StorageGlobber.glob(files), expected)
1819

1920
def test_multi_js_file(self):
2021
'''Should handle an array of js file names'''
2122
files = ['js/test/libs/jasmine-djangojs.js', 'js/test/libs/jasmine.js']
2223
result = StorageGlobber.glob(files)
2324

24-
self.assertIn('js/test/libs/jasmine-djangojs.js', result)
25-
self.assertIn('js/test/libs/jasmine.js', result)
25+
self.assertIn(normpath('js/test/libs/jasmine-djangojs.js'), result)
26+
self.assertIn(normpath('js/test/libs/jasmine.js'), result)
2627

2728
def test_single_glob_expression(self):
2829
'''Should handle a single glob pattern as js file list'''
2930
files = 'js/test/libs/jasmine-*.js'
3031
result = StorageGlobber.glob(files)
3132

32-
self.assertIn('js/test/libs/jasmine-djangojs.js', result)
33-
self.assertIn('js/test/libs/jasmine-html.js', result)
34-
self.assertIn('js/test/libs/jasmine-jquery.js', result)
35-
self.assertNotIn('js/test/libs/jasmine.js', result)
33+
self.assertIn(normpath('js/test/libs/jasmine-djangojs.js'), result)
34+
self.assertIn(normpath('js/test/libs/jasmine-html.js'), result)
35+
self.assertIn(normpath('js/test/libs/jasmine-jquery.js'), result)
36+
self.assertNotIn(normpath('js/test/libs/jasmine.js'), result)
3637

3738
def test_multi_glob_expression(self):
3839
'''Should handle a glob pattern list as js file list'''
3940
files = ['js/test/libs/jasmine-*.js', 'js/test/libs/qunit-*.js']
4041
result = StorageGlobber.glob(files)
4142

42-
self.assertIn('js/test/libs/jasmine-djangojs.js', result)
43-
self.assertIn('js/test/libs/jasmine-html.js', result)
44-
self.assertIn('js/test/libs/jasmine-jquery.js', result)
45-
self.assertIn('js/test/libs/qunit-tap.js', result)
46-
self.assertNotIn('js/test/libs/jasmine.js', result)
47-
self.assertNotIn('js/test/libs/qunit.js', result)
43+
self.assertIn(normpath('js/test/libs/jasmine-djangojs.js'), result)
44+
self.assertIn(normpath('js/test/libs/jasmine-html.js'), result)
45+
self.assertIn(normpath('js/test/libs/jasmine-jquery.js'), result)
46+
self.assertIn(normpath('js/test/libs/qunit-tap.js'), result)
47+
self.assertNotIn(normpath('js/test/libs/jasmine.js'), result)
48+
self.assertNotIn(normpath('js/test/libs/qunit.js'), result)
4849

4950
def test_preserve_order(self):
5051
'''Should preserve declaration order'''
5152
# Orders matters: should not be an alphabeticaly sorted list
5253
files = ['js/test/libs/jasmine.js', 'js/djangojs/django.js', 'js/test/libs/qunit-*.js']
5354
result = StorageGlobber.glob(files)
5455

55-
self.assertEqual(result[0], 'js/test/libs/jasmine.js')
56-
self.assertEqual(result[1], 'js/djangojs/django.js')
56+
self.assertEqual(result[0], normpath('js/test/libs/jasmine.js'))
57+
self.assertEqual(result[1], normpath('js/djangojs/django.js'))
5758

5859
for lib in result[2:]:
59-
self.assertIn('js/test/libs/qunit-', lib)
60+
self.assertIn(normpath('js/test/libs/qunit-'), lib)
6061
self.assertTrue(lib.endswith('.js'))

djangojs/utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,12 @@ def glob(cls, files=None):
5757
'''
5858
files = files or []
5959
if isinstance(files, str):
60+
files = os.path.normpath(files)
6061
matches = lambda path: matches_patterns(path, [files])
6162
return [path for path in cls.get_static_files() if matches(path)]
6263
elif isinstance(files, (list, tuple)):
6364
all_files = cls.get_static_files()
65+
files = [os.path.normpath(f) for f in files]
6466
sorted_result = []
6567
for pattern in files:
6668
sorted_result.extend([f for f in all_files if matches_patterns(f, [pattern])])
@@ -78,5 +80,5 @@ def get_static_files(cls):
7880
prefixed_path = path
7981

8082
if prefixed_path not in files:
81-
files.append(prefixed_path)
83+
files.append(os.path.normpath(prefixed_path))
8284
return files

0 commit comments

Comments
 (0)