Skip to content

Commit

Permalink
Merge pull request docker#2230 from dnephin/lowercase_windows_drive
Browse files Browse the repository at this point in the history
Lowercase windows drive letter
  • Loading branch information
mnowster committed Oct 21, 2015
2 parents 5ed9f9b + 5523c3d commit 44e1fc3
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 20 deletions.
22 changes: 10 additions & 12 deletions compose/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -943,23 +943,21 @@ def build_volume_binding(volume_spec):


def normalize_paths_for_engine(external_path, internal_path):
"""
Windows paths, c:\my\path\shiny, need to be changed to be compatible with
"""Windows paths, c:\my\path\shiny, need to be changed to be compatible with
the Engine. Volume paths are expected to be linux style /c/my/path/shiny/
"""
if IS_WINDOWS_PLATFORM:
if external_path:
drive, tail = os.path.splitdrive(external_path)
if not IS_WINDOWS_PLATFORM:
return external_path, internal_path

if drive:
reformatted_drive = "/{}".format(drive.replace(":", ""))
external_path = reformatted_drive + tail
if external_path:
drive, tail = os.path.splitdrive(external_path)

external_path = "/".join(external_path.split("\\"))
if drive:
external_path = '/' + drive.lower().rstrip(':') + tail

return external_path, "/".join(internal_path.split("\\"))
else:
return external_path, internal_path
external_path = external_path.replace('\\', '/')

return external_path, internal_path.replace('\\', '/')


def parse_volume_spec(volume_config):
Expand Down
16 changes: 8 additions & 8 deletions tests/unit/config/config_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -537,8 +537,8 @@ def test_absolute_posix_path_does_not_expand(self):
self.assertEqual(d['volumes'], ['/var/lib/data:/data'])

def test_absolute_windows_path_does_not_expand(self):
d = make_service_dict('foo', {'build': '.', 'volumes': ['C:\\data:/data']}, working_dir='.')
self.assertEqual(d['volumes'], ['C:\\data:/data'])
d = make_service_dict('foo', {'build': '.', 'volumes': ['c:\\data:/data']}, working_dir='.')
self.assertEqual(d['volumes'], ['c:\\data:/data'])

@pytest.mark.skipif(IS_WINDOWS_PLATFORM, reason='posix paths')
def test_relative_path_does_expand_posix(self):
Expand All @@ -553,14 +553,14 @@ def test_relative_path_does_expand_posix(self):

@pytest.mark.skipif(not IS_WINDOWS_PLATFORM, reason='windows paths')
def test_relative_path_does_expand_windows(self):
d = make_service_dict('foo', {'build': '.', 'volumes': ['./data:/data']}, working_dir='C:\\Users\\me\\myproject')
self.assertEqual(d['volumes'], ['C:\\Users\\me\\myproject\\data:/data'])
d = make_service_dict('foo', {'build': '.', 'volumes': ['./data:/data']}, working_dir='c:\\Users\\me\\myproject')
self.assertEqual(d['volumes'], ['c:\\Users\\me\\myproject\\data:/data'])

d = make_service_dict('foo', {'build': '.', 'volumes': ['.:/data']}, working_dir='C:\\Users\\me\\myproject')
self.assertEqual(d['volumes'], ['C:\\Users\\me\\myproject:/data'])
d = make_service_dict('foo', {'build': '.', 'volumes': ['.:/data']}, working_dir='c:\\Users\\me\\myproject')
self.assertEqual(d['volumes'], ['c:\\Users\\me\\myproject:/data'])

d = make_service_dict('foo', {'build': '.', 'volumes': ['../otherproject:/data']}, working_dir='C:\\Users\\me\\myproject')
self.assertEqual(d['volumes'], ['C:\\Users\\me\\otherproject:/data'])
d = make_service_dict('foo', {'build': '.', 'volumes': ['../otherproject:/data']}, working_dir='c:\\Users\\me\\myproject')
self.assertEqual(d['volumes'], ['c:\\Users\\me\\otherproject:/data'])

@mock.patch.dict(os.environ)
def test_home_directory_with_driver_does_not_expand(self):
Expand Down

0 comments on commit 44e1fc3

Please sign in to comment.