Skip to content

Commit

Permalink
feat(unit) add unit tests for dev-package-managers flag
Browse files Browse the repository at this point in the history
- STONEBLD-1750

Signed-off-by: Ben Alkov <[email protected]>
  • Loading branch information
ben-alkov committed Nov 10, 2023
1 parent 14b7dbb commit 8aced2a
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 1 deletion.
7 changes: 7 additions & 0 deletions tests/unit/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -532,6 +532,13 @@ def test_invalid_packages(
"force-gomod-tidy",
},
),
(
[
'{"packages": [{"type":"gomod"}]}',
"--dev-package-managers",
],
{"dev-package-managers"},
),
],
)
def test_specify_flags(
Expand Down
77 changes: 76 additions & 1 deletion tests/unit/test_resolver.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import re
from pathlib import Path
from typing import Callable
from unittest import mock

import pytest

from cachi2.core import resolver
from cachi2.core.errors import UnsupportedFeature
from cachi2.core.models.input import Request
from cachi2.core.models.output import EnvironmentVariable, ProjectFile, RequestOutput
from cachi2.core.models.output import BuildConfig, EnvironmentVariable, ProjectFile, RequestOutput
from cachi2.core.models.sbom import Component

GOMOD_OUTPUT = RequestOutput.from_obj_list(
Expand Down Expand Up @@ -93,3 +97,74 @@ def fetch(req: Request) -> RequestOutput:
assert resolver.resolve_packages(request) == COMBINED_OUTPUT

assert calls_by_pkgtype == ["gomod", "npm", "pip"]


@pytest.mark.parametrize(
"flags",
[
pytest.param(["dev-package-managers"], id="dev-package-managers-true"),
pytest.param([], id="dev-package-managers-false"),
],
)
def test_dev_mode(flags: list[str]) -> None:
mock_resolver = mock.Mock()
mock_resolver.return_value = RequestOutput.empty()
with (
mock.patch.dict(
resolver._package_managers,
values={"gomod": mock_resolver},
clear=True,
),
mock.patch.dict(
resolver._dev_package_managers,
values={"shrubbery": mock_resolver},
clear=True,
),
):
dev_package_input = mock.Mock()
dev_package_input.type = "shrubbery"

request = mock.Mock()
request.flags = flags
request.packages = [dev_package_input]

if flags:
assert resolver.resolve_packages(request) == RequestOutput(
components=[], build_config=BuildConfig(environment_variables=[], project_files=[])
)
else:
expected_error = re.escape("Package manager(s) not yet supported: shrubbery")
with pytest.raises(UnsupportedFeature, match=expected_error):
resolver.resolve_packages(request)


def test_resolve_with_released_and_dev_package_managers() -> None:
mock_resolve_gomod = mock.Mock(return_value=RequestOutput.empty())
mock_resolve_pip = mock.Mock(return_value=RequestOutput.empty())

with (
mock.patch.dict(
resolver._package_managers,
values={"gomod": mock_resolve_gomod},
clear=True,
),
mock.patch.dict(
resolver._dev_package_managers,
values={"pip": mock_resolve_pip},
clear=True,
),
):
dev_package_input = mock.Mock()
dev_package_input.type = "pip"

released_package_input = mock.Mock()
released_package_input.type = "gomod"

request = mock.Mock()
request.flags = ["dev-package-managers"]
request.packages = [released_package_input, dev_package_input]

resolver.resolve_packages(request)

mock_resolve_gomod.assert_has_calls([mock.call(request)])
mock_resolve_pip.assert_has_calls([mock.call(request)])

0 comments on commit 8aced2a

Please sign in to comment.