Skip to content

Commit

Permalink
Fix and test the build/test targets in the CoprBuildHandler
Browse files Browse the repository at this point in the history
Signed-off-by: Frantisek Lachman <flachman@redhat.com>
  • Loading branch information
lachmanfrantisek committed Jan 13, 2020
1 parent f37a635 commit c492d83
Show file tree
Hide file tree
Showing 2 changed files with 127 additions and 5 deletions.
17 changes: 12 additions & 5 deletions packit_service/worker/copr_build.py
Expand Up @@ -128,12 +128,19 @@ def build_chroots(self) -> List[str]:
1. If the job is not defined, use the test_chroots.
2. If the job is defined, but not the targets, use "fedora-stable" alias otherwise.
"""
if not self.job_copr_build:
if (
(not self.job_copr_build or "targets" not in self.job_copr_build.metadata)
and self.job_tests
and "targets" in self.job_tests.metadata
):
return self.tests_chroots
configured_targets = self.job_copr_build.metadata.get(
"targets", ["fedora-stable"]
)
return list(get_build_targets(*configured_targets))

if not self.job_copr_build:
raw_targets = ["fedora-stable"]
else:
raw_targets = self.job_copr_build.metadata.get("targets", ["fedora-stable"])

return list(get_build_targets(*raw_targets))

@property
def tests_chroots(self) -> List[str]:
Expand Down
115 changes: 115 additions & 0 deletions tests/unit/test_copr_build_handler.py
@@ -0,0 +1,115 @@
import pytest
from flexmock import flexmock
from packit.config import PackageConfig, JobConfig, JobType, JobTriggerType

from packit_service.worker.copr_build import CoprBuildHandler


@pytest.mark.parametrize(
"jobs,build_targets,test_targets",
[
pytest.param(
[
JobConfig(
job=JobType.copr_build,
trigger=JobTriggerType.pull_request,
metadata={"targets": ["fedora-29", "fedora-31"]},
)
],
{"fedora-29-x86_64", "fedora-31-x86_64"},
set(),
id="build_with_targets",
),
pytest.param(
[
JobConfig(
job=JobType.copr_build,
trigger=JobTriggerType.pull_request,
metadata={},
)
],
{"fedora-30-x86_64", "fedora-31-x86_64"},
set(),
id="build_without_targets",
),
pytest.param(
[
JobConfig(
job=JobType.tests, trigger=JobTriggerType.pull_request, metadata={},
)
],
{"fedora-30-x86_64", "fedora-31-x86_64"},
{"fedora-30-x86_64", "fedora-31-x86_64"},
id="test_without_targets",
),
pytest.param(
[
JobConfig(
job=JobType.tests,
trigger=JobTriggerType.pull_request,
metadata={"targets": ["fedora-29", "fedora-31"]},
)
],
{"fedora-29-x86_64", "fedora-31-x86_64"},
{"fedora-29-x86_64", "fedora-31-x86_64"},
id="test_with_targets",
),
pytest.param(
[
JobConfig(
job=JobType.copr_build,
trigger=JobTriggerType.pull_request,
metadata={},
),
JobConfig(
job=JobType.tests, trigger=JobTriggerType.pull_request, metadata={},
),
],
{"fedora-30-x86_64", "fedora-31-x86_64"},
{"fedora-30-x86_64", "fedora-31-x86_64"},
id="build_without_target&test_without_targets",
),
pytest.param(
[
JobConfig(
job=JobType.copr_build,
trigger=JobTriggerType.pull_request,
metadata={"targets": ["fedora-29", "fedora-31"]},
),
JobConfig(
job=JobType.tests, trigger=JobTriggerType.pull_request, metadata={},
),
],
{"fedora-29-x86_64", "fedora-31-x86_64"},
{"fedora-29-x86_64", "fedora-31-x86_64"},
id="build_with_target&test_without_targets",
),
pytest.param(
[
JobConfig(
job=JobType.copr_build,
trigger=JobTriggerType.pull_request,
metadata={},
),
JobConfig(
job=JobType.tests,
trigger=JobTriggerType.pull_request,
metadata={"targets": ["fedora-29", "fedora-31"]},
),
],
{"fedora-29-x86_64", "fedora-31-x86_64"},
{"fedora-29-x86_64", "fedora-31-x86_64"},
id="build_without_target&test_with_targets",
),
],
)
def test_targets(jobs, build_targets, test_targets):
copr_build_handler = CoprBuildHandler(
config=flexmock(),
package_config=PackageConfig(jobs=jobs),
project=flexmock(),
event=flexmock(),
)

assert set(copr_build_handler.build_chroots) == build_targets
assert set(copr_build_handler.tests_chroots) == test_targets

0 comments on commit c492d83

Please sign in to comment.