blob: 94f2855d6cd854a7f8e372a68f285adff544e203 [file] [log] [blame]
# Copyright 2023 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unit tests for cros_generate_dlc_artifacts."""
from unittest import mock
import pytest
from chromite.lib import dlc_lib
from chromite.scripts import cros_generate_dlc_artifacts
@pytest.mark.parametrize("dry_run", ((False), (True)))
def test_upload_dlc_artifacts(dry_run) -> None:
"""Tests out UploadDlcArtifacts with dry_run option"""
artifact_mock = mock.Mock()
cros_generate_dlc_artifacts.UploadDlcArtifacts(
artifact_mock, dry_run=dry_run
)
artifact_mock.Upload.assert_called_with(dry_run=dry_run)
@pytest.mark.parametrize("dlc_id", ("some-dlc-id",))
@pytest.mark.parametrize("preallocated_blocks", (123,))
@pytest.mark.parametrize("name", ((""), ("<some-name>")))
@pytest.mark.parametrize("description", ((""), ("<some-description>")))
@pytest.mark.parametrize("version", ("<some-version>",))
@pytest.mark.parametrize("powerwash_safety", (True, False))
@mock.patch.object(dlc_lib, "EbuildParams")
def test_generate_dlc_params(
mock_ebuild_params,
dlc_id,
preallocated_blocks,
name,
description,
version,
powerwash_safety,
tmp_path,
) -> None:
"""Tests out GenerateDlcParams"""
tmpfile = tmp_path / "license"
tmpfile.touch()
argv = [
"--src-dir",
".",
"--license",
str(tmpfile),
*(["--id", f"{dlc_id}"] if dlc_id else []),
*(
["--preallocated-blocks", f"{preallocated_blocks}"]
if preallocated_blocks
else []
),
*(["--name", f"{name}"] if name else []),
*(["--description", f"{description}"] if description else []),
*(["--version", f"{version}"] if version else []),
"--powerwash-safety" if powerwash_safety else "--no-powerwash-safety",
]
opts = cros_generate_dlc_artifacts.ParseArguments(argv)
cros_generate_dlc_artifacts.GenerateDlcParams(opts)
mock_ebuild_params.assert_called_with(
dlc_id=dlc_id,
dlc_package="package",
fs_type=dlc_lib.SQUASHFS_TYPE,
pre_allocated_blocks=preallocated_blocks,
version=version,
name=name,
description=description,
preload=False,
used_by="",
mount_file_required=False,
fullnamerev="",
scaled=True,
loadpin_verity_digest=False,
powerwash_safe=powerwash_safety,
use_logical_volume=True,
)