Skip to content

Commit

Permalink
Do not show build status in manual test checks
Browse files Browse the repository at this point in the history
Unless there are failures or errors.

This can be improved having a real dependency
between tests and builds.

Showing a neutral state for a successful build
message is not working on gitlab and either on
github is not working always
(my test falls back on commit statuses and
they don't have a neutral state).
  • Loading branch information
majamassarini committed Mar 18, 2024
1 parent 623c117 commit c058580
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 15 deletions.
11 changes: 10 additions & 1 deletion packit_service/worker/helpers/build/build_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -652,6 +652,9 @@ def report_status_to_all_test_jobs(
for test_job in self.job_tests_all:
if test_job.skip_build:
continue
elif test_job.manual_trigger:
if state not in (BaseCommitStatus.error, BaseCommitStatus.failure):
continue
check_names = self.test_check_names_for_test_job(test_job)
self._report(
description=description,
Expand Down Expand Up @@ -696,7 +699,13 @@ def report_status_to_all_test_jobs_for_chroot(
update_feedback_time: Callable = None,
) -> None:
for test_job in self.job_tests_all:
if not test_job.skip_build and chroot in self.build_targets_for_test_job(
report_build_status = True
if test_job.skip_build:
report_build_status = False
elif test_job.manual_trigger:
if state not in (BaseCommitStatus.error, BaseCommitStatus.failure):
report_build_status = False
if report_build_status and chroot in self.build_targets_for_test_job(
test_job
):
test_targets = self.build_target2test_targets_for_test_job(
Expand Down
49 changes: 35 additions & 14 deletions tests/integration/test_listen_to_fedmsg.py
Original file line number Diff line number Diff line change
Expand Up @@ -1018,7 +1018,16 @@ def test_copr_build_end_testing_farm_different_pr_branch(copr_build_end, copr_bu
)


def test_copr_build_end_testing_farm_manual_trigger(copr_build_end, copr_build_pr):
@pytest.mark.parametrize(
"build_status,report_manual_triggered_times",
(
(BuildStatus.success, 0),
(BuildStatus.failure, 1),
),
)
def test_copr_build_end_testing_farm_manual_trigger(
copr_build_end, copr_build_pr, build_status, report_manual_triggered_times
):
ServiceConfig.get_service_config().testing_farm_api_url = (
"https://api.dev.testing-farm.io/v0.1/"
)
Expand Down Expand Up @@ -1090,32 +1099,43 @@ def test_copr_build_end_testing_farm_manual_trigger(copr_build_end, copr_build_p
copr_build_pr
)
flexmock(CoprBuildTargetModel).should_receive("get_by_id").and_return(copr_build_pr)
copr_build_pr.should_call("set_status").with_args(BuildStatus.success).once()
copr_build_pr.should_call("set_status").with_args(build_status).once()
copr_build_pr.should_receive("set_end_time").once()
copr_build_pr.should_receive("get_package_name").and_return(None)
flexmock(requests).should_receive("get").and_return(requests.Response())
flexmock(requests.Response).should_receive("raise_for_status").and_return(None)
# check if packit-service set correct PR status
url = get_copr_build_info_url(1)
flexmock(StatusReporter).should_receive("report").with_args(
state=BaseCommitStatus.success,
description="RPMs were built successfully.",
url=url,
check_names=EXPECTED_BUILD_CHECK_NAME,
markdown_content=None,
links_to_external_services=None,
update_feedback_time=object,
).once()
if build_status == BuildStatus.success:
flexmock(StatusReporter).should_receive("report").with_args(
state=BaseCommitStatus.success,
description="RPMs were built successfully.",
url=url,
check_names=EXPECTED_BUILD_CHECK_NAME,
markdown_content=None,
links_to_external_services=None,
update_feedback_time=object,
).once()
else:
flexmock(StatusReporter).should_receive("report").with_args(
description="RPMs failed to be built.",
state=BaseCommitStatus.failure,
url=url,
check_names=EXPECTED_BUILD_CHECK_NAME,
markdown_content=None,
links_to_external_services=None,
update_feedback_time=object,
).once()

flexmock(StatusReporter).should_receive("report").with_args(
state=BaseCommitStatus.pending,
description="RPMs were built successfully.",
state=BaseCommitStatus.failure,
description="RPMs failed to be built.",
url=url,
check_names=EXPECTED_TESTING_FARM_CHECK_NAME,
markdown_content=None,
links_to_external_services=None,
update_feedback_time=object,
).once()
).times(report_manual_triggered_times)

flexmock(GithubProject).should_receive("get_web_url").and_return(
"https://github.com/foo/bar"
Expand All @@ -1137,6 +1157,7 @@ def test_copr_build_end_testing_farm_manual_trigger(copr_build_end, copr_build_p

flexmock(Pushgateway).should_receive("push").times(2).and_return()

copr_build_end["status"] = 1 if build_status == BuildStatus.success else 0
processing_results = SteveJobs().process_message(copr_build_end)
event_dict, job, job_config, package_config = get_parameters_from_results(
processing_results
Expand Down

0 comments on commit c058580

Please sign in to comment.