Fix bundler tool failures on Windows

* Normalize to system path separator format
* Fix hardcoded separators
* Fix hardcoded test paths
This commit is contained in:
Peter Parente 2016-08-26 22:36:31 -04:00
parent 513b4c0a57
commit 925709b5b4
No known key found for this signature in database
GPG Key ID: 14CB6BFF90F9941F
2 changed files with 40 additions and 28 deletions

View File

@ -84,12 +84,12 @@ b/
def test_glob_dir(self):
'''Should expand to single file in the resources/ subfolder.'''
self.assertIn('resources/empty.ipynb',
self.assertIn(os.path.join('resources', 'empty.ipynb'),
tools.expand_references(HERE, ['resources/empty.ipynb']))
def test_glob_subdir(self):
'''Should expand to all files in the resources/ subfolder.'''
self.assertIn('resources/empty.ipynb',
self.assertIn(os.path.join('resources', 'empty.ipynb'),
tools.expand_references(HERE, ['resources/']))
def test_glob_splat(self):
@ -101,24 +101,24 @@ b/
def test_glob_splatsplat_in_middle(self):
'''Should expand to test_file.txt deep under this test/ directory.'''
globs = tools.expand_references(HERE, ['resources/**/test_file.txt'])
self.assertIn('resources/subdir/test_file.txt', globs, globs)
self.assertIn(os.path.join('resources', 'subdir', 'test_file.txt'), globs, globs)
def test_glob_splatsplat_trailing(self):
'''Should expand to all descendants of this test/ directory.'''
'''Should expand to all descendants of this test/ directory.'''
globs = tools.expand_references(HERE, ['resources/**'])
self.assertIn('resources/empty.ipynb', globs, globs)
self.assertIn('resources/subdir/test_file.txt', globs, globs)
self.assertIn(os.path.join('resources', 'empty.ipynb'), globs, globs)
self.assertIn(os.path.join('resources', 'subdir', 'test_file.txt'), globs, globs)
def test_glob_splatsplat_leading(self):
'''Should expand to test_file.txt under any path.'''
globs = tools.expand_references(HERE, ['**/test_file.txt'])
self.assertIn('resources/subdir/test_file.txt', globs, globs)
self.assertIn('resources/another_subdir/test_file.txt', globs, globs)
self.assertIn(os.path.join('resources', 'subdir', 'test_file.txt'), globs, globs)
self.assertIn(os.path.join('resources', 'another_subdir', 'test_file.txt'), globs, globs)
def test_copy_filelist(self):
'''Should copy select files from source to destination'''
globs = tools.expand_references(HERE, ['**/test_file.txt'])
tools.copy_filelist(HERE, self.tmp, globs)
self.assertTrue(os.path.isfile(os.path.join(self.tmp, 'resources/subdir/test_file.txt')))
self.assertTrue(os.path.isfile(os.path.join(self.tmp, 'resources/another_subdir/test_file.txt')))
self.assertFalse(os.path.isfile(os.path.join(self.tmp, 'resources/empty.ipynb')))
self.assertTrue(os.path.isfile(os.path.join(self.tmp, 'resources', 'subdir', 'test_file.txt')))
self.assertTrue(os.path.isfile(os.path.join(self.tmp, 'resources', 'another_subdir', 'test_file.txt')))
self.assertFalse(os.path.isfile(os.path.join(self.tmp, 'resources', 'empty.ipynb')))

View File

@ -11,8 +11,8 @@ import glob
def get_file_references(abs_nb_path, version):
"""Gets a list of files referenced either in Markdown fenced code blocks
or in HTML comments from the notebook. Expands patterns expressed in
gitignore syntax (https://git-scm.com/docs/gitignore). Returns the
or in HTML comments from the notebook. Expands patterns expressed in
gitignore syntax (https://git-scm.com/docs/gitignore). Returns the
fully expanded list of filenames relative to the notebook dirname.
Parameters
@ -21,7 +21,7 @@ def get_file_references(abs_nb_path, version):
Absolute path of the notebook on disk
version: int
Version of the notebook document format to use
Returns
-------
list
@ -41,7 +41,7 @@ def get_reference_patterns(abs_nb_path, version):
Absolute path of the notebook on disk
version: int
Version of the notebook document format to use
Returns
-------
list
@ -66,7 +66,7 @@ def get_cell_reference_patterns(cell):
!foo/bar
```
or
or
<!--associate:
some.csv
@ -78,7 +78,7 @@ def get_cell_reference_patterns(cell):
----------
cell: dict
Notebook cell object
Returns
-------
list
@ -113,29 +113,41 @@ def get_cell_reference_patterns(cell):
def expand_references(root_path, references):
"""Expands a set of reference patterns by evaluating them against the
given root directory. Expansions are performed against patterns
expressed in the same manner as in gitignore
given root directory. Expansions are performed against patterns
expressed in the same manner as in gitignore
(https://git-scm.com/docs/gitignore).
NOTE: Temporarily changes the current working directory when called.
Parameters
----------
root_path: str
root_path: str
Assumed root directory for the patterns
references: list
Reference patterns from get_reference_patterns
Reference patterns from get_reference_patterns expressed with
forward-slash directory separators
Returns
-------
list
Filename strings relative to the root path
"""
# Use normpath to convert to platform specific slashes, but be sure
# to retain a trailing slash which normpath pulls off
normalized_references = []
for ref in references:
normalized_ref = os.path.normpath(ref)
# un-normalized separator
if ref.endswith('/'):
normalized_ref += os.sep
normalized_references.append(normalized_ref)
references = normalized_references
globbed = []
negations = []
must_walk = []
for pattern in references:
if pattern and pattern.find('/') < 0:
if pattern and pattern.find(os.sep) < 0:
# simple shell glob
cwd = os.getcwd()
os.chdir(root_path)
@ -156,7 +168,7 @@ def expand_references(root_path, references):
for root, _, filenames in os.walk(root_path):
for filename in filenames:
joined = os.path.join(root[len(root_path) + 1:], filename)
if testpattern.endswith('/'):
if testpattern.endswith(os.sep):
if joined.startswith(testpattern):
if pattern_is_negation:
negations.append(joined)
@ -194,9 +206,9 @@ def copy_filelist(src, dst, src_relative_filenames):
Parameters
----------
src: str
src: str
Root of the source directory
dst: str
dst: str
Root of the destination directory
src_relative_filenames: list
Filenames relative to src
@ -215,4 +227,4 @@ def copy_filelist(src, dst, src_relative_filenames):
pass
else:
raise exc
shutil.copy2(os.path.join(src, filename), os.path.join(dst, filename))
shutil.copy2(os.path.join(src, filename), os.path.join(dst, filename))