Skip to content

Commit 45e9d7d

Browse files
committed
Fix gardenlinux_epoch value of S3 artifact metadata and add test for it
Signed-off-by: Tobias Wolf <wolf@b1-systems.de> On-behalf-of: SAP <tobias.wolf@sap.com>
1 parent 1f66a76 commit 45e9d7d

File tree

4 files changed

+85
-20
lines changed

4 files changed

+85
-20
lines changed

src/gardenlinux/s3/s3_artifacts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ def upload_from_directory(
180180
"base_image": None,
181181
"build_committish": commit_id_or_hash,
182182
"build_timestamp": datetime.fromtimestamp(release_timestamp).isoformat(),
183-
"gardenlinux_epoch": {version_epoch},
183+
"gardenlinux_epoch": version_epoch,
184184
"logs": None,
185185
"modifiers": cname_object.feature_set,
186186
"require_uefi": require_uefi,

tests/s3/constants.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# -*- coding: utf-8 -*-
2+
3+
RELEASE_DATA = """
4+
GARDENLINUX_CNAME="container-amd64-1234.1-abc123lo"
5+
GARDENLINUX_VERSION=1234.1
6+
GARDENLINUX_COMMIT_ID="abc123lo"
7+
GARDENLINUX_COMMIT_ID_LONG="abc123long"
8+
GARDENLINUX_FEATURES="_usi,_trustedboot"
9+
GARDENLINUX_FEATURES_ELEMENTS=
10+
GARDENLINUX_FEATURES_FLAGS="_usi,_trustedboot"
11+
GARDENLINUX_FEATURES_PLATFORMS="container"
12+
"""
13+
14+
S3_METADATA = """
15+
platform: container
16+
architecture: amd64
17+
base_image: null
18+
build_committish: abc123lo
19+
build_timestamp: '{build_timestamp}'
20+
gardenlinux_epoch: '1234'
21+
logs: null
22+
modifiers: _usi,_trustedboot
23+
require_uefi: true
24+
secureboot: true
25+
published_image_metadata: null
26+
s3_bucket: test-bucket
27+
s3_key: meta/singles/container-amd64-1234.1-abc123lo
28+
test_result: null
29+
version: '1234.1'
30+
paths:
31+
- name: container-amd64-1234.1-abc123lo.release
32+
s3_bucket_name: test-bucket
33+
s3_key: objects/container-amd64-1234.1-abc123lo/container-amd64-1234.1-abc123lo.release
34+
suffix: container-amd64-1234.1-abc123lo
35+
md5sum: {md5sum}
36+
sha256sum: {sha256sum}
37+
""".strip()

tests/s3/test_main.py

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
import re
12
import sys
23
from typing import Any, Dict, List
34
from unittest.mock import MagicMock, patch
45

56
import pytest
67

78
import gardenlinux.s3.__main__ as s3m
9+
from .conftest import S3Env
10+
from .constants import RELEASE_DATA, S3_METADATA
811

912

1013
@pytest.mark.parametrize(
@@ -48,14 +51,49 @@ def test_main_calls_correct_artifacts(
4851
expected_args: List[Any],
4952
expected_kwargs: Dict[str, Any],
5053
) -> None:
51-
with patch.object(sys, "argv", argv):
52-
with patch.object(s3m, "S3Artifacts") as mock_s3_cls:
53-
mock_instance = MagicMock()
54-
mock_s3_cls.return_value = mock_instance
54+
with (
55+
patch.object(sys, "argv", argv),
56+
patch.object(s3m, "S3Artifacts") as mock_s3_cls,
57+
):
58+
mock_instance = MagicMock()
59+
mock_s3_cls.return_value = mock_instance
5560

56-
s3m.main()
61+
s3m.main()
5762

58-
method = getattr(mock_instance, expected_method)
59-
method.assert_called_once_with(*expected_args, **expected_kwargs)
63+
method = getattr(mock_instance, expected_method)
64+
method.assert_called_once_with(*expected_args, **expected_kwargs)
6065

61-
mock_s3_cls.assert_called_once_with("test-bucket")
66+
mock_s3_cls.assert_called_once_with("test-bucket")
67+
68+
69+
def test_main_with_expected_result(s3_setup: S3Env, capsys: pytest.CaptureFixture[str]) -> None:
70+
env = s3_setup
71+
72+
# Arrange
73+
with (
74+
patch.object(
75+
sys,
76+
"argv",
77+
[
78+
"__main__.py",
79+
"--dry-run",
80+
"--bucket",
81+
env.bucket_name,
82+
"--path",
83+
str(env.tmp_path),
84+
"upload-artifacts-to-bucket",
85+
"--artifact-name",
86+
env.cname,
87+
],
88+
)
89+
):
90+
release_path = env.tmp_path / f"{env.cname}.release"
91+
release_path.write_text(RELEASE_DATA)
92+
93+
s3m.main()
94+
95+
result = capsys.readouterr().out.strip()
96+
result = re.sub("^(.*)build_timestamp\\: '.+'$", "\\1build_timestamp: '{build_timestamp}'", result, flags = re.M)
97+
result = re.sub("^(.*)(md5sum|sha256sum)\\: .+$", "\\1\\2: {\\2}", result, flags = re.M)
98+
99+
assert result == S3_METADATA

tests/s3/test_s3_artifacts.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,7 @@
99
from gardenlinux.s3.s3_artifacts import S3Artifacts
1010

1111
from .conftest import S3Env
12-
13-
RELEASE_DATA = """
14-
GARDENLINUX_CNAME="container-amd64-1234.1-abc123lo"
15-
GARDENLINUX_VERSION=1234.1
16-
GARDENLINUX_COMMIT_ID="abc123lo"
17-
GARDENLINUX_COMMIT_ID_LONG="abc123long"
18-
GARDENLINUX_FEATURES="_usi,_trustedboot"
19-
GARDENLINUX_FEATURES_ELEMENTS=
20-
GARDENLINUX_FEATURES_FLAGS="_usi,_trustedboot"
21-
GARDENLINUX_FEATURES_PLATFORMS="container"
22-
"""
12+
from .constants import RELEASE_DATA
2313

2414

2515
def test_s3artifacts_init_success(s3_setup: S3Env) -> None:

0 commit comments

Comments
 (0)