Kaydet (Commit) 73d8097b authored tarafından Joffrey F's avatar Joffrey F

Fix test issues

Signed-off-by: 's avatarJoffrey F <joffrey@docker.com>
üst 7fa30a71
version: '{branch}-{build}' version: '{branch}-{build}'
install: install:
......
import os import os
from ..constants import IS_WINDOWS_PLATFORM
from .fnmatch import fnmatch from .fnmatch import fnmatch
from .utils import create_archive from .utils import create_archive
...@@ -39,7 +40,7 @@ def exclude_paths(root, patterns, dockerfile=None): ...@@ -39,7 +40,7 @@ def exclude_paths(root, patterns, dockerfile=None):
# If the Dockerfile is in a subdirectory that is excluded, get_paths # If the Dockerfile is in a subdirectory that is excluded, get_paths
# will not descend into it and the file will be skipped. This ensures # will not descend into it and the file will be skipped. This ensures
# it doesn't happen. # it doesn't happen.
set([dockerfile]) set([dockerfile.replace('/', os.path.sep)])
if os.path.exists(os.path.join(root, dockerfile)) else set() if os.path.exists(os.path.join(root, dockerfile)) else set()
) )
...@@ -130,9 +131,12 @@ def match_path(path, pattern): ...@@ -130,9 +131,12 @@ def match_path(path, pattern):
if pattern: if pattern:
pattern = os.path.relpath(pattern) pattern = os.path.relpath(pattern)
if '**' not in pattern:
pattern_components = pattern.split(os.path.sep) pattern_components = pattern.split(os.path.sep)
if len(pattern_components) == 1 and IS_WINDOWS_PLATFORM:
pattern_components = pattern.split('/')
if '**' not in pattern:
path_components = path.split(os.path.sep)[:len(pattern_components)] path_components = path.split(os.path.sep)[:len(pattern_components)]
else: else:
path_components = path.split(os.path.sep) path_components = path.split(os.path.sep)
return fnmatch('/'.join(path_components), pattern) return fnmatch('/'.join(path_components), '/'.join(pattern_components))
...@@ -39,15 +39,13 @@ def fnmatch(name, pat): ...@@ -39,15 +39,13 @@ def fnmatch(name, pat):
If you don't want this, use fnmatchcase(FILENAME, PATTERN). If you don't want this, use fnmatchcase(FILENAME, PATTERN).
""" """
import os name = name.lower()
name = os.path.normcase(name) pat = pat.lower()
pat = os.path.normcase(pat)
return fnmatchcase(name, pat) return fnmatchcase(name, pat)
def fnmatchcase(name, pat): def fnmatchcase(name, pat):
"""Test whether FILENAME matches PATTERN, including case. """Test whether FILENAME matches PATTERN, including case.
This is a version of fnmatch() which doesn't case-normalize This is a version of fnmatch() which doesn't case-normalize
its arguments. its arguments.
""" """
...@@ -67,7 +65,6 @@ def translate(pat): ...@@ -67,7 +65,6 @@ def translate(pat):
There is no way to quote meta-characters. There is no way to quote meta-characters.
""" """
recursive_mode = False recursive_mode = False
i, n = 0, len(pat) i, n = 0, len(pat)
res = '' res = ''
...@@ -100,7 +97,7 @@ def translate(pat): ...@@ -100,7 +97,7 @@ def translate(pat):
stuff = '\\' + stuff stuff = '\\' + stuff
res = '%s[%s]' % (res, stuff) res = '%s[%s]' % (res, stuff)
elif recursive_mode and c == '/': elif recursive_mode and c == '/':
res = res + '/?' res = res + re.escape(c) + '?'
else: else:
res = res + re.escape(c) res = res + re.escape(c)
return res + '\Z(?ms)' return res + '\Z(?ms)'
...@@ -618,9 +618,11 @@ class PortsTest(unittest.TestCase): ...@@ -618,9 +618,11 @@ class PortsTest(unittest.TestCase):
def convert_paths(collection): def convert_paths(collection):
if not IS_WINDOWS_PLATFORM: return set(map(convert_path, collection))
return collection
return set(map(lambda x: x.replace('/', '\\'), collection))
def convert_path(path):
return path.replace('/', os.path.sep)
class ExcludePathsTest(unittest.TestCase): class ExcludePathsTest(unittest.TestCase):
...@@ -685,12 +687,12 @@ class ExcludePathsTest(unittest.TestCase): ...@@ -685,12 +687,12 @@ class ExcludePathsTest(unittest.TestCase):
set(['Dockerfile.alt', '.dockerignore']) set(['Dockerfile.alt', '.dockerignore'])
assert self.exclude(['*'], dockerfile='foo/Dockerfile3') == \ assert self.exclude(['*'], dockerfile='foo/Dockerfile3') == \
set(['foo/Dockerfile3', '.dockerignore']) convert_paths(set(['foo/Dockerfile3', '.dockerignore']))
def test_exclude_dockerfile_child(self): def test_exclude_dockerfile_child(self):
includes = self.exclude(['foo/'], dockerfile='foo/Dockerfile3') includes = self.exclude(['foo/'], dockerfile='foo/Dockerfile3')
assert 'foo/Dockerfile3' in includes assert convert_path('foo/Dockerfile3') in includes
assert 'foo/a.py' not in includes assert convert_path('foo/a.py') not in includes
def test_single_filename(self): def test_single_filename(self):
assert self.exclude(['a.py']) == convert_paths( assert self.exclude(['a.py']) == convert_paths(
...@@ -917,6 +919,7 @@ class TarTest(unittest.TestCase): ...@@ -917,6 +919,7 @@ class TarTest(unittest.TestCase):
sorted(tar_data.getnames()), ['bar', 'bar/foo', 'foo'] sorted(tar_data.getnames()), ['bar', 'bar/foo', 'foo']
) )
@pytest.mark.skipif(IS_WINDOWS_PLATFORM, reason='No UNIX sockets on Win32')
def test_tar_socket_file(self): def test_tar_socket_file(self):
base = tempfile.mkdtemp() base = tempfile.mkdtemp()
self.addCleanup(shutil.rmtree, base) self.addCleanup(shutil.rmtree, base)
...@@ -945,63 +948,54 @@ class ShouldCheckDirectoryTest(unittest.TestCase): ...@@ -945,63 +948,54 @@ class ShouldCheckDirectoryTest(unittest.TestCase):
] ]
def test_should_check_directory_not_excluded(self): def test_should_check_directory_not_excluded(self):
self.assertTrue( assert should_check_directory(
should_check_directory('not_excluded', self.exclude_patterns, 'not_excluded', self.exclude_patterns, self.include_patterns
self.include_patterns)
) )
assert should_check_directory(
self.assertTrue( convert_path('dir/with'), self.exclude_patterns,
should_check_directory('dir/with', self.exclude_patterns, self.include_patterns
self.include_patterns)
) )
def test_shoud_check_parent_directories_of_excluded(self): def test_shoud_check_parent_directories_of_excluded(self):
self.assertTrue( assert should_check_directory(
should_check_directory('dir', self.exclude_patterns, 'dir', self.exclude_patterns, self.include_patterns
self.include_patterns)
) )
self.assertTrue( assert should_check_directory(
should_check_directory('dir/with', self.exclude_patterns, convert_path('dir/with'), self.exclude_patterns,
self.include_patterns) self.include_patterns
) )
def test_should_not_check_excluded_directories_with_no_exceptions(self): def test_should_not_check_excluded_directories_with_no_exceptions(self):
self.assertFalse( assert not should_check_directory(
should_check_directory('exclude_rather_large_directory', 'exclude_rather_large_directory', self.exclude_patterns,
self.exclude_patterns, self.include_patterns self.include_patterns
)
)
self.assertFalse(
should_check_directory('dir/with/subdir_excluded',
self.exclude_patterns, self.include_patterns
) )
assert not should_check_directory(
convert_path('dir/with/subdir_excluded'), self.exclude_patterns,
self.include_patterns
) )
def test_should_check_excluded_directory_with_exceptions(self): def test_should_check_excluded_directory_with_exceptions(self):
self.assertTrue( assert should_check_directory(
should_check_directory('dir/with/exceptions', convert_path('dir/with/exceptions'), self.exclude_patterns,
self.exclude_patterns, self.include_patterns self.include_patterns
)
)
self.assertTrue(
should_check_directory('dir/with/exceptions/in',
self.exclude_patterns, self.include_patterns
) )
assert should_check_directory(
convert_path('dir/with/exceptions/in'), self.exclude_patterns,
self.include_patterns
) )
def test_should_not_check_siblings_of_exceptions(self): def test_should_not_check_siblings_of_exceptions(self):
self.assertFalse( assert not should_check_directory(
should_check_directory('dir/with/exceptions/but_not_here', convert_path('dir/with/exceptions/but_not_here'),
self.exclude_patterns, self.include_patterns self.exclude_patterns, self.include_patterns
) )
)
def test_should_check_subdirectories_of_exceptions(self): def test_should_check_subdirectories_of_exceptions(self):
self.assertTrue( assert should_check_directory(
should_check_directory('dir/with/exceptions/like_this_one/subdir', convert_path('dir/with/exceptions/like_this_one/subdir'),
self.exclude_patterns, self.include_patterns self.exclude_patterns, self.include_patterns
) )
)
class FormatEnvironmentTest(unittest.TestCase): class FormatEnvironmentTest(unittest.TestCase):
......
...@@ -5,7 +5,7 @@ skipsdist=True ...@@ -5,7 +5,7 @@ skipsdist=True
[testenv] [testenv]
usedevelop=True usedevelop=True
commands = commands =
py.test --cov=docker {posargs:tests/unit} py.test -v --cov=docker {posargs:tests/unit}
deps = deps =
-r{toxinidir}/test-requirements.txt -r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt -r{toxinidir}/requirements.txt
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment