mirror of
https://github.com/containers/podman-compose.git
synced 2025-01-08 15:09:17 +01:00
Merge pull request #949 from mokibit/multiline-env-file
Add support for multi-line environment files
This commit is contained in:
commit
d905a7c638
@ -1072,7 +1072,11 @@ async def container_to_args(compose, cnt, detached=True):
|
|||||||
if not required:
|
if not required:
|
||||||
continue
|
continue
|
||||||
raise ValueError("Env file at {} does not exist".format(i))
|
raise ValueError("Env file at {} does not exist".format(i))
|
||||||
podman_args.extend(["--env-file", i])
|
dotenv_dict = {}
|
||||||
|
dotenv_dict = dotenv_to_dict(i)
|
||||||
|
env = norm_as_list(dotenv_dict)
|
||||||
|
for e in env:
|
||||||
|
podman_args.extend(["-e", e])
|
||||||
env = norm_as_list(cnt.get("environment", {}))
|
env = norm_as_list(cnt.get("environment", {}))
|
||||||
for e in env:
|
for e in env:
|
||||||
podman_args.extend(["-e", e])
|
podman_args.extend(["-e", e])
|
||||||
|
@ -251,8 +251,12 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase):
|
|||||||
[
|
[
|
||||||
"--name=project_name_service_name1",
|
"--name=project_name_service_name1",
|
||||||
"-d",
|
"-d",
|
||||||
"--env-file",
|
"-e",
|
||||||
env_file,
|
"ZZVAR1=podman-rocks-123",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR2=podman-rocks-124",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR3=podman-rocks-125",
|
||||||
"--network=bridge",
|
"--network=bridge",
|
||||||
"--network-alias=service_name",
|
"--network-alias=service_name",
|
||||||
"busybox",
|
"busybox",
|
||||||
@ -268,7 +272,7 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase):
|
|||||||
with self.assertRaises(ValueError):
|
with self.assertRaises(ValueError):
|
||||||
await container_to_args(c, cnt)
|
await container_to_args(c, cnt)
|
||||||
|
|
||||||
async def test_env_file_str_arr(self):
|
async def test_env_file_str_array_one_path(self):
|
||||||
c = create_compose_mock()
|
c = create_compose_mock()
|
||||||
|
|
||||||
cnt = get_minimal_container()
|
cnt = get_minimal_container()
|
||||||
@ -281,8 +285,42 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase):
|
|||||||
[
|
[
|
||||||
"--name=project_name_service_name1",
|
"--name=project_name_service_name1",
|
||||||
"-d",
|
"-d",
|
||||||
"--env-file",
|
"-e",
|
||||||
env_file,
|
"ZZVAR1=podman-rocks-123",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR2=podman-rocks-124",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR3=podman-rocks-125",
|
||||||
|
"--network=bridge",
|
||||||
|
"--network-alias=service_name",
|
||||||
|
"busybox",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
async def test_env_file_str_array_two_paths(self):
|
||||||
|
c = create_compose_mock()
|
||||||
|
|
||||||
|
cnt = get_minimal_container()
|
||||||
|
env_file = path.realpath('tests/env-file-tests/env-files/project-1.env')
|
||||||
|
env_file_2 = path.realpath('tests/env-file-tests/env-files/project-2.env')
|
||||||
|
cnt['env_file'] = [env_file, env_file_2]
|
||||||
|
|
||||||
|
args = await container_to_args(c, cnt)
|
||||||
|
self.assertEqual(
|
||||||
|
args,
|
||||||
|
[
|
||||||
|
"--name=project_name_service_name1",
|
||||||
|
"-d",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR1=podman-rocks-123",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR2=podman-rocks-124",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR3=podman-rocks-125",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR1=podman-rocks-223",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR2=podman-rocks-224",
|
||||||
"--network=bridge",
|
"--network=bridge",
|
||||||
"--network-alias=service_name",
|
"--network-alias=service_name",
|
||||||
"busybox",
|
"busybox",
|
||||||
@ -302,14 +340,27 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase):
|
|||||||
[
|
[
|
||||||
"--name=project_name_service_name1",
|
"--name=project_name_service_name1",
|
||||||
"-d",
|
"-d",
|
||||||
"--env-file",
|
"-e",
|
||||||
env_file,
|
"ZZVAR1=podman-rocks-123",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR2=podman-rocks-124",
|
||||||
|
"-e",
|
||||||
|
"ZZVAR3=podman-rocks-125",
|
||||||
"--network=bridge",
|
"--network=bridge",
|
||||||
"--network-alias=service_name",
|
"--network-alias=service_name",
|
||||||
"busybox",
|
"busybox",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def test_env_file_obj_required_non_existent_path(self):
|
||||||
|
c = create_compose_mock()
|
||||||
|
|
||||||
|
cnt = get_minimal_container()
|
||||||
|
cnt['env_file'] = {'path': 'not-exists', 'required': True}
|
||||||
|
|
||||||
|
with self.assertRaises(ValueError):
|
||||||
|
await container_to_args(c, cnt)
|
||||||
|
|
||||||
async def test_env_file_obj_optional(self):
|
async def test_env_file_obj_optional(self):
|
||||||
c = create_compose_mock()
|
c = create_compose_mock()
|
||||||
|
|
||||||
|
@ -1 +1,3 @@
|
|||||||
ZZVAR1=podman-rocks-123
|
ZZVAR1=podman-rocks-123
|
||||||
|
ZZVAR2=podman-rocks-124
|
||||||
|
ZZVAR3=podman-rocks-125
|
||||||
|
2
tests/env-file-tests/env-files/project-2.env
Normal file
2
tests/env-file-tests/env-files/project-2.env
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
ZZVAR1=podman-rocks-223
|
||||||
|
ZZVAR2=podman-rocks-224
|
Loading…
Reference in New Issue
Block a user