From 7f5739dc025af101e939b1403cf46a68fbc2dc97 Mon Sep 17 00:00:00 2001 From: Joffrey F Date: Tue, 15 Aug 2017 14:54:53 -0700 Subject: [PATCH] Leading slash in .dockerignore should be ignored Signed-off-by: Joffrey F --- docker/utils/build.py | 1 + tests/unit/utils_test.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/docker/utils/build.py b/docker/utils/build.py index 79b72495..d4223e74 100644 --- a/docker/utils/build.py +++ b/docker/utils/build.py @@ -26,6 +26,7 @@ def exclude_paths(root, patterns, dockerfile=None): if dockerfile is None: dockerfile = 'Dockerfile' + patterns = [p.lstrip('/') for p in patterns] exceptions = [p for p in patterns if p.startswith('!')] include_patterns = [p[1:] for p in exceptions] diff --git a/tests/unit/utils_test.py b/tests/unit/utils_test.py index 7045d23c..4a391fac 100644 --- a/tests/unit/utils_test.py +++ b/tests/unit/utils_test.py @@ -768,6 +768,11 @@ class ExcludePathsTest(unittest.TestCase): self.all_paths - set(['foo/a.py']) ) + def test_single_subdir_single_filename_leading_slash(self): + assert self.exclude(['/foo/a.py']) == convert_paths( + self.all_paths - set(['foo/a.py']) + ) + def test_single_subdir_with_path_traversal(self): assert self.exclude(['foo/whoops/../a.py']) == convert_paths( self.all_paths - set(['foo/a.py'])