Skip to content

Commit

Permalink
Merge pull request docker#6234 from zasca/tilda_src_paths
Browse files Browse the repository at this point in the history
Improved expanding source paths of volumes
  • Loading branch information
shin- authored Oct 8, 2018
2 parents 7107431 + 9d7202d commit 9018511
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
2 changes: 1 addition & 1 deletion compose/config/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -1281,7 +1281,7 @@ def resolve_volume_paths(working_dir, service_dict):

def resolve_volume_path(working_dir, volume):
if isinstance(volume, dict):
if volume.get('source', '').startswith('.') and volume['type'] == 'bind':
if volume.get('source', '').startswith(('.', '~')) and volume['type'] == 'bind':
volume['source'] = expand_path(working_dir, volume['source'])
return volume

Expand Down
23 changes: 23 additions & 0 deletions tests/unit/config/config_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -1323,6 +1323,29 @@ def test_load_bind_mount_relative_path(self):
assert mount.type == 'bind'
assert mount.source == expected_source

def test_load_bind_mount_relative_path_with_tilde(self):
base_file = config.ConfigFile(
'base.yaml', {
'version': '3.4',
'services': {
'web': {
'image': 'busybox:latest',
'volumes': [
{'type': 'bind', 'source': '~/web', 'target': '/web'},
],
},
},
},
)

details = config.ConfigDetails('.', [base_file])
config_data = config.load(details)
mount = config_data.services[0].get('volumes')[0]
assert mount.target == '/web'
assert mount.type == 'bind'
assert (not mount.source.startswith('~')
and mount.source.endswith('{}web'.format(os.path.sep)))

def test_config_invalid_ipam_config(self):
with pytest.raises(ConfigurationError) as excinfo:
config.load(
Expand Down

0 comments on commit 9018511

Please sign in to comment.