blob: b7ad7dd16521d8b1d039d8a8d864bb0684f4b645 [file] [log] [blame]
Jae Hoon Kimbb0ddf02023-07-21 04:23:12 +00001# Copyright 2023 The ChromiumOS Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Unit tests for cros_generate_dlc_artifacts."""
6
Jae Hoon Kimbb0ddf02023-07-21 04:23:12 +00007from unittest import mock
8
9import pytest
10
11from chromite.lib import dlc_lib
12from chromite.scripts import cros_generate_dlc_artifacts
13
14
15@pytest.mark.parametrize("dry_run", ((False), (True)))
16def test_upload_dlc_artifacts(dry_run):
17 """Tests out UploadDlcArtifacts with dry_run option"""
18 artifact_mock = mock.Mock()
19 cros_generate_dlc_artifacts.UploadDlcArtifacts(
20 artifact_mock, dry_run=dry_run
21 )
22 artifact_mock.Upload.assert_called_with(dry_run=dry_run)
23
24
25@pytest.mark.parametrize("dlc_id", ("some-dlc-id",))
26@pytest.mark.parametrize("preallocated_blocks", (123,))
27@pytest.mark.parametrize("name", ((""), ("<some-name>")))
28@pytest.mark.parametrize("description", ((""), ("<some-description>")))
29@pytest.mark.parametrize("version", ("<some-version>",))
Jae Hoon Kim553a5d02023-09-20 04:38:40 +000030@pytest.mark.parametrize("powerwash_safety", (True, False))
Jae Hoon Kimbb0ddf02023-07-21 04:23:12 +000031@mock.patch.object(dlc_lib, "EbuildParams")
32def test_generate_dlc_params(
33 mock_ebuild_params,
34 dlc_id,
35 preallocated_blocks,
36 name,
37 description,
38 version,
Jae Hoon Kim553a5d02023-09-20 04:38:40 +000039 powerwash_safety,
Jae Hoon Kimbb0ddf02023-07-21 04:23:12 +000040 tmp_path,
41):
42 """Tests out GenerateDlcParams"""
43 tmpfile = tmp_path / "license"
44 tmpfile.touch()
45 argv = [
46 "--src-dir",
47 ".",
48 "--license",
49 str(tmpfile),
50 *(["--id", f"{dlc_id}"] if dlc_id else []),
51 *(
52 ["--preallocated-blocks", f"{preallocated_blocks}"]
53 if preallocated_blocks
54 else []
55 ),
56 *(["--name", f"{name}"] if name else []),
57 *(["--description", f"{description}"] if description else []),
58 *(["--version", f"{version}"] if version else []),
Jae Hoon Kim553a5d02023-09-20 04:38:40 +000059 "--powerwash-safety" if powerwash_safety else "--no-powerwash-safety",
Jae Hoon Kimbb0ddf02023-07-21 04:23:12 +000060 ]
61 opts = cros_generate_dlc_artifacts.ParseArguments(argv)
62 cros_generate_dlc_artifacts.GenerateDlcParams(opts)
63 mock_ebuild_params.assert_called_with(
64 dlc_id=dlc_id,
65 dlc_package="package",
66 fs_type=dlc_lib.SQUASHFS_TYPE,
67 pre_allocated_blocks=preallocated_blocks,
68 version=version,
69 name=name,
70 description=description,
71 preload=False,
72 used_by="",
73 mount_file_required=False,
74 fullnamerev="",
75 scaled=True,
76 loadpin_verity_digest=False,
Jae Hoon Kim553a5d02023-09-20 04:38:40 +000077 powerwash_safe=powerwash_safety,
Jae Hoon Kimbb0ddf02023-07-21 04:23:12 +000078 )