Jae Hoon Kim | bb0ddf0 | 2023-07-21 04:23:12 +0000 | [diff] [blame] | 1 | # 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 Kim | bb0ddf0 | 2023-07-21 04:23:12 +0000 | [diff] [blame] | 7 | from unittest import mock |
| 8 | |
| 9 | import pytest |
| 10 | |
| 11 | from chromite.lib import dlc_lib |
| 12 | from chromite.scripts import cros_generate_dlc_artifacts |
| 13 | |
| 14 | |
| 15 | @pytest.mark.parametrize("dry_run", ((False), (True))) |
| 16 | def 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 Kim | 553a5d0 | 2023-09-20 04:38:40 +0000 | [diff] [blame] | 30 | @pytest.mark.parametrize("powerwash_safety", (True, False)) |
Jae Hoon Kim | bb0ddf0 | 2023-07-21 04:23:12 +0000 | [diff] [blame] | 31 | @mock.patch.object(dlc_lib, "EbuildParams") |
| 32 | def test_generate_dlc_params( |
| 33 | mock_ebuild_params, |
| 34 | dlc_id, |
| 35 | preallocated_blocks, |
| 36 | name, |
| 37 | description, |
| 38 | version, |
Jae Hoon Kim | 553a5d0 | 2023-09-20 04:38:40 +0000 | [diff] [blame] | 39 | powerwash_safety, |
Jae Hoon Kim | bb0ddf0 | 2023-07-21 04:23:12 +0000 | [diff] [blame] | 40 | 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 Kim | 553a5d0 | 2023-09-20 04:38:40 +0000 | [diff] [blame] | 59 | "--powerwash-safety" if powerwash_safety else "--no-powerwash-safety", |
Jae Hoon Kim | bb0ddf0 | 2023-07-21 04:23:12 +0000 | [diff] [blame] | 60 | ] |
| 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 Kim | 553a5d0 | 2023-09-20 04:38:40 +0000 | [diff] [blame] | 77 | powerwash_safe=powerwash_safety, |
Jae Hoon Kim | bb0ddf0 | 2023-07-21 04:23:12 +0000 | [diff] [blame] | 78 | ) |