mirror of
https://github.com/containers/podman-compose.git
synced 2025-07-15 11:55:07 +02:00
76 lines
2.4 KiB
Python
76 lines
2.4 KiB
Python
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
import os
|
|
import unittest
|
|
|
|
from tests.integration.test_utils import RunSubprocessMixin
|
|
from tests.integration.test_utils import podman_compose_path
|
|
from tests.integration.test_utils import test_path
|
|
|
|
|
|
def compose_yaml_path(version: str = '1') -> str:
|
|
return os.path.join(os.path.join(test_path(), "no_recreate"), f"compose{version}.yaml")
|
|
|
|
|
|
class TestComposeNoRecreate(unittest.TestCase, RunSubprocessMixin):
|
|
def test_no_recreate(self) -> None:
|
|
def up(args: list[str] = [], version: str = '1') -> None:
|
|
self.run_subprocess_assert_returncode(
|
|
[
|
|
podman_compose_path(),
|
|
"-f",
|
|
compose_yaml_path(version),
|
|
"up",
|
|
"-t",
|
|
"0",
|
|
"-d",
|
|
*args,
|
|
],
|
|
)
|
|
|
|
def get_container_id() -> bytes:
|
|
return self.run_subprocess_assert_returncode([
|
|
podman_compose_path(),
|
|
"-f",
|
|
compose_yaml_path(),
|
|
"ps",
|
|
"--format",
|
|
'{{.ID}}',
|
|
])[0]
|
|
|
|
try:
|
|
up()
|
|
|
|
container_id = get_container_id()
|
|
|
|
self.assertGreater(len(container_id), 0)
|
|
|
|
# Default behavior - up with same compose file should not recreate the container
|
|
up()
|
|
self.assertEqual(get_container_id(), container_id)
|
|
|
|
# Default behavior - up with modified compose file should recreate the container
|
|
up(version='2')
|
|
self.assertNotEqual(get_container_id(), container_id)
|
|
|
|
container_id = get_container_id()
|
|
|
|
# Using --no-recreate should not recreate the container
|
|
# even if the compose file is modified
|
|
up(["--no-recreate"], version='1')
|
|
self.assertEqual(get_container_id(), container_id)
|
|
|
|
# Using --force-recreate should recreate the container
|
|
# even if the compose file is not modified
|
|
up(["--force-recreate"], version='1')
|
|
self.assertNotEqual(get_container_id(), container_id)
|
|
finally:
|
|
self.run_subprocess_assert_returncode([
|
|
podman_compose_path(),
|
|
"-f",
|
|
compose_yaml_path(),
|
|
"down",
|
|
"-t",
|
|
"0",
|
|
])
|