From 0de7e13f1a54a00b5aa7ca1ac956545ec506a204 Mon Sep 17 00:00:00 2001 From: Monika Kairaityte Date: Fri, 13 Sep 2024 11:29:14 +0300 Subject: [PATCH] tests/integration: Automate manual 'multicompose' test Signed-off-by: Monika Kairaityte --- tests/integration/multicompose/README.md | 19 ---- .../test_podman_compose_multicompose.py | 101 ++++++++++++++++++ 2 files changed, 101 insertions(+), 19 deletions(-) delete mode 100644 tests/integration/multicompose/README.md create mode 100644 tests/integration/test_podman_compose_multicompose.py diff --git a/tests/integration/multicompose/README.md b/tests/integration/multicompose/README.md deleted file mode 100644 index 7e2c515..0000000 --- a/tests/integration/multicompose/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Multiple compose files - -to make sure we get results similar to - -``` -docker-compose -f d1/docker-compose.yml -f d2/docker-compose.yml up -d -docker exec -ti d1_web1_1 sh -c 'set' -docker exec -ti d1_web2_1 sh -c 'set' -curl http://${d1_web1_1}:8001/index.txt -curl http://${d1_web1_1}:8002/index.txt -``` - -we need to verify - -- project base directory and project name is `d1` -- `var12='d1/12.env'` which means `enf_file` was appended not replaced (which means that we normalize to array before merge) -- `var2='d1/2.env'` which means that paths inside `d2/docker-compose.yml` directory are relative to `d1` - - diff --git a/tests/integration/test_podman_compose_multicompose.py b/tests/integration/test_podman_compose_multicompose.py new file mode 100644 index 0000000..339292a --- /dev/null +++ b/tests/integration/test_podman_compose_multicompose.py @@ -0,0 +1,101 @@ +# SPDX-License-Identifier: GPL-2.0 + +import os +import unittest + +from tests.integration.test_podman_compose import podman_compose_path +from tests.integration.test_podman_compose import test_path +from tests.integration.test_utils import RunSubprocessMixin + + +def compose_yaml_path(): + return os.path.join(os.path.join(test_path(), "multicompose"), "docker-compose.yml") + + +class TestComposeMulticompose(unittest.TestCase, RunSubprocessMixin): + def test_multicompose(self): + try: + self.run_subprocess_assert_returncode( + [ + podman_compose_path(), + "-f", + os.path.join( + os.path.join(test_path(), "multicompose"), "d1/docker-compose.yml" + ), + "-f", + os.path.join( + os.path.join(test_path(), "multicompose"), "d2/docker-compose.yml" + ), + "up", + "-d", + ], + ) + output, _ = self.run_subprocess_assert_returncode([ + podman_compose_path(), + "-f", + os.path.join(os.path.join(test_path(), "multicompose"), "d1/docker-compose.yml"), + "-f", + os.path.join(os.path.join(test_path(), "multicompose"), "d2/docker-compose.yml"), + "ps", + ]) + self.assertIn(b"d1_web1_1", output) + self.assertIn(b"d1_web2_1", output) + + output, _ = self.run_subprocess_assert_returncode([ + "podman", + "exec", + "-ti", + "d1_web1_1", + "sh", + "-c", + "set", + ]) + # checks if `enf_file` was appended, not replaced + # (which means that we normalize to array before merge) + self.assertIn(b"var12='d1/12.env'", output) + + output, _ = self.run_subprocess_assert_returncode([ + "podman", + "exec", + "-ti", + "d1_web2_1", + "sh", + "-c", + "set", + ]) + # checks if paths inside `d2/docker-compose.yml` directory are relative to `d1` + self.assertIn(b"var2='d1/2.env'", output) + + output, _ = self.run_subprocess_assert_returncode([ + "podman", + "exec", + "-ti", + "d1_web1_1", + "sh", + "-c", + "cat /var/www/html/index.txt", + ]) + self.assertIn(b"var1=d1/1.env", output) + + # check if project base directory and project name is d1 + output, _ = self.run_subprocess_assert_returncode([ + "podman", + "exec", + "-ti", + "d1_web2_1", + "sh", + "-c", + "cat /var/www/html/index.txt", + ]) + self.assertIn(b"var2=d1/2.env", output) + finally: + self.run_subprocess_assert_returncode([ + podman_compose_path(), + "-f", + os.path.join(os.path.join(test_path(), "multicompose"), "d1/docker-compose.yml"), + "-f", + os.path.join(os.path.join(test_path(), "multicompose"), "d2/docker-compose.yml"), + "down", + "-t", + "0", + ])