mirror of https://github.com/docker/compose.git
Merge pull request #4721 from shin-/4376-unicode_file_paths
Convert paths to unicode in get_config_path_from_options if needed
This commit is contained in:
commit
ae2cc6b5b8
|
@ -49,14 +49,17 @@ def get_config_from_options(base_dir, options):
|
|||
|
||||
|
||||
def get_config_path_from_options(base_dir, options, environment):
|
||||
def unicode_paths(paths):
|
||||
return [p.decode('utf-8') if isinstance(p, six.binary_type) else p for p in paths]
|
||||
|
||||
file_option = options.get('--file')
|
||||
if file_option:
|
||||
return file_option
|
||||
return unicode_paths(file_option)
|
||||
|
||||
config_files = environment.get('COMPOSE_FILE')
|
||||
if config_files:
|
||||
pathsep = environment.get('COMPOSE_PATH_SEPARATOR', os.pathsep)
|
||||
return config_files.split(pathsep)
|
||||
return unicode_paths(config_files.split(pathsep))
|
||||
return None
|
||||
|
||||
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
# ~*~ encoding: utf-8 ~*~
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import os
|
||||
|
||||
import pytest
|
||||
import six
|
||||
|
||||
from compose.cli.command import get_config_path_from_options
|
||||
from compose.config.environment import Environment
|
||||
|
@ -55,3 +57,20 @@ class TestGetConfigPathFromOptions(object):
|
|||
def test_no_path(self):
|
||||
environment = Environment.from_env_file('.')
|
||||
assert not get_config_path_from_options('.', {}, environment)
|
||||
|
||||
def test_unicode_path_from_options(self):
|
||||
paths = [b'\xe5\xb0\xb1\xe5\x90\x83\xe9\xa5\xad/docker-compose.yml']
|
||||
opts = {'--file': paths}
|
||||
environment = Environment.from_env_file('.')
|
||||
assert get_config_path_from_options(
|
||||
'.', opts, environment
|
||||
) == ['就吃饭/docker-compose.yml']
|
||||
|
||||
@pytest.mark.skipif(six.PY3, reason='Env values in Python 3 are already Unicode')
|
||||
def test_unicode_path_from_env(self):
|
||||
with mock.patch.dict(os.environ):
|
||||
os.environ['COMPOSE_FILE'] = b'\xe5\xb0\xb1\xe5\x90\x83\xe9\xa5\xad/docker-compose.yml'
|
||||
environment = Environment.from_env_file('.')
|
||||
assert get_config_path_from_options(
|
||||
'.', {}, environment
|
||||
) == ['就吃饭/docker-compose.yml']
|
||||
|
|
Loading…
Reference in New Issue