podman-compose/tests/integration/build_labels/test_build_labels.py

61 lines
2.0 KiB
Python
Raw Normal View History

# SPDX-License-Identifier: GPL-2.0
import json
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
class TestBuildLabels(unittest.TestCase, RunSubprocessMixin):
def test_build_labels(self):
"""The build context can contain labels which should be added to the resulting image. They
can be either an array or a map.
"""
compose_path = os.path.join(test_path(), "build_labels/docker-compose.yml")
try:
self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"build",
"test_build_labels_map",
"test_build_labels_array",
])
expected_labels = {
"com.example.department": "Finance",
"com.example.description": "Accounting webapp",
"com.example.label-with-empty-value": "",
}
out, _ = self.run_subprocess_assert_returncode([
"podman",
"inspect",
"my-busybox-build-labels-map",
"my-busybox-build-labels-array",
])
images = json.loads(out)
self.assertEqual(len(images), 2)
labels_map = images[0].get("Config", {}).get("Labels", {})
labels_array = images[1].get("Config", {}).get("Labels", {})
for k, v in expected_labels.items():
self.assertIn(k, labels_map)
self.assertEqual(labels_map[k], v)
self.assertIn(k, labels_array)
self.assertEqual(labels_array[k], v)
finally:
self.run_subprocess_assert_returncode([
"podman",
"rmi",
"my-busybox-build-labels-map",
"my-busybox-build-labels-array",
])