Files
podman-compose/tests/integration/no_recreate/test_podman_compose_no_recreate.py
2025-07-04 23:27:50 -06:00

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",
])