Skip to content

Commit e73655f

Browse files
committed
Adapt unit tests for GardenLinux feature changes
Signed-off-by: Tobias Wolf <[email protected]> On-behalf-of: SAP <[email protected]>
1 parent f930e54 commit e73655f

File tree

7 files changed

+80
-74
lines changed

7 files changed

+80
-74
lines changed

test-data/gardenlinux

Submodule gardenlinux updated 757 files

tests/features/test_features_parser.py

Lines changed: 53 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,32 +12,76 @@
1212
"aws-gardener_prod",
1313
{
1414
"platform": ["aws"],
15-
"element": ["log", "sap", "ssh", "base", "server", "cloud", "gardener"],
16-
"flag": ["_boot", "_nopkg", "_prod", "_slim"],
15+
"element": [
16+
"log",
17+
"sap",
18+
"ssh",
19+
"base",
20+
"server",
21+
"cloud",
22+
"multipath",
23+
"iscsi",
24+
"nvme",
25+
"gardener",
26+
],
27+
"flag": ["_fwcfg", "_legacy", "_nopkg", "_prod", "_slim"],
1728
},
1829
),
1930
(
2031
"gcp-gardener_prod",
2132
{
2233
"platform": ["gcp"],
23-
"element": ["log", "sap", "ssh", "base", "server", "cloud", "gardener"],
24-
"flag": ["_boot", "_nopkg", "_prod", "_slim"],
34+
"element": [
35+
"log",
36+
"sap",
37+
"ssh",
38+
"base",
39+
"server",
40+
"cloud",
41+
"multipath",
42+
"iscsi",
43+
"nvme",
44+
"gardener",
45+
],
46+
"flag": ["_fwcfg", "_legacy", "_nopkg", "_prod", "_slim"],
2547
},
2648
),
2749
(
2850
"azure-gardener_prod",
2951
{
3052
"platform": ["azure"],
31-
"element": ["log", "sap", "ssh", "base", "server", "cloud", "gardener"],
32-
"flag": ["_boot", "_nopkg", "_prod", "_slim"],
53+
"element": [
54+
"log",
55+
"sap",
56+
"ssh",
57+
"base",
58+
"server",
59+
"cloud",
60+
"multipath",
61+
"iscsi",
62+
"nvme",
63+
"gardener",
64+
],
65+
"flag": ["_fwcfg", "_legacy", "_nopkg", "_prod", "_slim"],
3366
},
3467
),
3568
(
3669
"ali-gardener_prod",
3770
{
3871
"platform": ["ali"],
39-
"element": ["log", "sap", "ssh", "base", "server", "cloud", "gardener"],
40-
"flag": ["_boot", "_nopkg", "_prod", "_slim"],
72+
"element": [
73+
"log",
74+
"sap",
75+
"ssh",
76+
"base",
77+
"server",
78+
"cloud",
79+
"multipath",
80+
"iscsi",
81+
"nvme",
82+
"gardener",
83+
],
84+
"flag": ["_fwcfg", "_legacy", "_nopkg", "_prod", "_slim"],
4185
},
4286
),
4387
(
@@ -54,7 +98,7 @@
5498
"chost",
5599
"khost",
56100
],
57-
"flag": ["_boot", "_dev", "_selinux", "_slim"],
101+
"flag": ["_dev", "_fwcfg", "_legacy", "_selinux", "_slim"],
58102
},
59103
),
60104
],

tests/features/test_main.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -402,10 +402,7 @@ def test_main_with_exclude_cname_print_elements(monkeypatch, capsys):
402402
# Assert
403403
captured = capsys.readouterr().out.strip()
404404

405-
assert (
406-
"log,sap,ssh,base,server,gardener"
407-
== captured
408-
)
405+
assert "log,sap,ssh,base,server,multipath,iscsi,nvme,gardener" == captured
409406

410407

411408
def test_main_with_exclude_cname_print_features(monkeypatch, capsys):
@@ -420,7 +417,7 @@ def test_main_with_exclude_cname_print_features(monkeypatch, capsys):
420417
"--cname",
421418
"kvm-gardener_prod",
422419
"--ignore",
423-
"cloud",
420+
"log",
424421
"--arch",
425422
"amd64",
426423
"--version",
@@ -438,6 +435,6 @@ def test_main_with_exclude_cname_print_features(monkeypatch, capsys):
438435
captured = capsys.readouterr().out.strip()
439436

440437
assert (
441-
"log,sap,ssh,_boot,_ignite,kvm,_nopkg,_prod,_slim,base,server,gardener"
438+
"sap,ssh,_fwcfg,_ignite,_legacy,_nopkg,_prod,_slim,base,server,cloud,kvm,multipath,iscsi,nvme,gardener"
442439
== captured
443440
)

tests/features/test_metadata_main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def get_container_amd64_release_metadata(version, commit_hash):
2626
BUG_REPORT_URL="{GL_BUG_REPORT_URL}"
2727
GARDENLINUX_CNAME="container-amd64-today-local"
2828
GARDENLINUX_FEATURES="_slim,base,container"
29-
GARDENLINUX_FEATURES_PLATFORMS="container"
29+
GARDENLINUX_FEATURES_PLATFORM="container"
3030
GARDENLINUX_FEATURES_ELEMENTS="base"
3131
GARDENLINUX_FEATURES_FLAGS="_slim"
3232
GARDENLINUX_VERSION="today"

tests/s3/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class S3Env:
2222

2323

2424
def make_cname(
25-
flavor: str = "kvm-container",
25+
flavor: str = "container",
2626
arch: str = "amd64",
2727
version: str = "1234.1",
2828
commit: str = "abc123",

tests/s3/test_main.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
@pytest.mark.parametrize(
10-
"argv,expected_method",
10+
"argv, expected_method, expected_args, expected_kwargs",
1111
[
1212
(
1313
[
@@ -21,6 +21,8 @@
2121
"download-artifacts-from-bucket",
2222
],
2323
"download_to_directory",
24+
["test-cname", "some/path"],
25+
{},
2426
),
2527
(
2628
[
@@ -34,10 +36,14 @@
3436
"upload-artifacts-to-bucket",
3537
],
3638
"upload_from_directory",
39+
["test-cname", "some/path"],
40+
{"dry_run": False},
3741
),
3842
],
3943
)
40-
def test_main_calls_correct_artifacts(argv, expected_method):
44+
def test_main_calls_correct_artifacts(
45+
argv, expected_method, expected_args, expected_kwargs
46+
):
4147
with patch.object(sys, "argv", argv):
4248
with patch.object(s3m, "S3Artifacts") as mock_s3_cls:
4349
mock_instance = MagicMock()
@@ -46,6 +52,6 @@ def test_main_calls_correct_artifacts(argv, expected_method):
4652
s3m.main()
4753

4854
method = getattr(mock_instance, expected_method)
49-
method.assert_called_once_with("test-cname", "some/path")
55+
method.assert_called_once_with(*expected_args, **expected_kwargs)
5056

5157
mock_s3_cls.assert_called_once_with("test-bucket")

tests/s3/test_s3_artifacts.py

Lines changed: 12 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@
99
from gardenlinux.s3.s3_artifacts import S3Artifacts
1010

1111
RELEASE_DATA = """
12+
GARDENLINUX_CNAME = container-amd64-1234.1-abc123
1213
GARDENLINUX_VERSION = 1234.1
1314
GARDENLINUX_COMMIT_ID = abc123
1415
GARDENLINUX_COMMIT_ID_LONG = abc123long
1516
GARDENLINUX_FEATURES = _usi,_trustedboot
17+
GARDENLINUX_FEATURES_ELEMENTS =
18+
GARDENLINUX_FEATURES_FLAGS = _usi,_trustedboot
19+
GARDENLINUX_FEATURES_PLATFORM = container
1620
"""
1721

1822

@@ -101,7 +105,7 @@ def test_upload_from_directory_success(s3_setup):
101105
release_path = env.tmp_path / f"{env.cname}.release"
102106
release_path.write_text(RELEASE_DATA)
103107

104-
for filename in [f"{env.cname}-file1", f"{env.cname}-file2"]:
108+
for filename in [f"{env.cname}-file1", f"{env.cname}-file2", "container"]:
105109
(env.tmp_path / filename).write_bytes(b"dummy content")
106110

107111
# Act
@@ -124,7 +128,7 @@ def test_upload_from_directory_success(s3_setup):
124128
Bucket=env.bucket_name, Key=f"objects/{env.cname}/{env.cname}-file1"
125129
)
126130
tags = {tag["Key"]: tag["Value"] for tag in raw_tags_response["TagSet"]}
127-
assert tags["platform"] == "container+kvm"
131+
assert tags["platform"] == "container"
128132

129133

130134
def test_upload_from_directory_with_delete(s3_setup):
@@ -160,30 +164,6 @@ def test_upload_from_directory_with_delete(s3_setup):
160164
assert f"meta/singles/{env.cname}" in keys
161165

162166

163-
def test_upload_from_directory_arch_none_raises(monkeypatch, s3_setup):
164-
"""Raise RuntimeError when CName has no arch"""
165-
# Arrange
166-
env = s3_setup
167-
release_path = env.tmp_path / f"{env.cname}.release"
168-
release_path.write_text(RELEASE_DATA)
169-
170-
# Monkeypatch CName to simulate missing architecture
171-
import gardenlinux.s3.s3_artifacts as s3art
172-
173-
class DummyCName:
174-
arch = None
175-
176-
def __init__(self, cname):
177-
pass
178-
179-
monkeypatch.setattr(s3art, "CName", DummyCName)
180-
181-
# Act / Assert
182-
artifacts = S3Artifacts(env.bucket_name)
183-
with pytest.raises(RuntimeError, match="Architecture could not be determined"):
184-
artifacts.upload_from_directory(env.cname, env.tmp_path)
185-
186-
187167
def test_upload_from_directory_invalid_dir_raises(s3_setup):
188168
"""Raise RuntimeError if artifacts_dir is invalid"""
189169
env = s3_setup
@@ -204,41 +184,20 @@ def test_upload_from_directory_version_mismatch_raises(s3_setup):
204184
artifacts = S3Artifacts(env.bucket_name)
205185

206186
# Act / Assert
207-
with pytest.raises(RuntimeError, match="Version"):
187+
with pytest.raises(RuntimeError, match="failed consistency check"):
208188
artifacts.upload_from_directory(env.cname, env.tmp_path)
209189

210190

211-
def test_upload_from_directory_none_version_raises(monkeypatch, s3_setup):
191+
def test_upload_from_directory_succeeds_because_of_release_file(monkeypatch, s3_setup):
212192
"""
213193
Raise RuntimeError if CName.version is None.
214194
"""
215195
# Arrange
216196
env = s3_setup
217-
(env.tmp_path / f"{env.cname}.release").write_text(RELEASE_DATA)
218-
219-
import gardenlinux.s3.s3_artifacts as s3art
220-
221-
# Monkeypatch CName to force Cname.version to be None and avoid
222-
# class internal error checks
223-
class DummyCName:
224-
arch = "amd64"
225-
version = None
226-
commit_id = "abc123"
227-
platform = "aws"
228-
229-
def __init__(self, cname):
230-
pass
197+
(env.tmp_path / f"container.release").write_text(RELEASE_DATA)
231198

232-
monkeypatch.setattr(s3art, "CName", DummyCName)
233-
234-
artifacts = s3art.S3Artifacts(env.bucket_name)
235-
236-
# Act / Assert
237-
with pytest.raises(
238-
RuntimeError,
239-
match="Release file data and given cname conflict detected: Version None",
240-
):
241-
artifacts.upload_from_directory(env.cname, env.tmp_path)
199+
artifacts = S3Artifacts(env.bucket_name)
200+
artifacts.upload_from_directory("container", env.tmp_path)
242201

243202

244203
def test_upload_from_directory_invalid_artifact_name(s3_setup):
@@ -273,7 +232,7 @@ def test_upload_from_directory_commit_mismatch_raises(s3_setup):
273232
artifacts = S3Artifacts(env.bucket_name)
274233

275234
# Act / Assert
276-
with pytest.raises(RuntimeError, match="Commit ID"):
235+
with pytest.raises(RuntimeError, match="failed consistency check"):
277236
artifacts.upload_from_directory(env.cname, env.tmp_path)
278237

279238

0 commit comments

Comments
 (0)