def test_check_copr_build_not_ended(): flexmock(CoprBuildModel).should_receive("get_all_by_build_id").with_args( 1).and_return([flexmock()]) flexmock(Client).should_receive("create_from_config_file").and_return( flexmock(build_proxy=flexmock().should_receive("get").with_args( 1).and_return(flexmock(ended_on=False)).mock())) assert not check_copr_build(build_id=1)
def test_check_copr_build_already_successful(): flexmock(CoprBuildModel).should_receive("get_all_by_build_id").with_args( 1).and_return([flexmock(status="success")]) flexmock(Client).should_receive("create_from_config_file").and_return( flexmock(build_proxy=flexmock().should_receive( "get").with_args(1).and_return( flexmock(ended_on="timestamp", state="completed")).mock())) assert check_copr_build(build_id=1)
def test_check_copr_build_updated(): flexmock(CoprBuildModel).should_receive("get_by_build_id").and_return() flexmock(CoprBuildModel).should_receive("get_all_by_build_id").with_args( 1).and_return([ flexmock( status="pending", target="the-target", owner="the-owner", project_name="the-project-name", commit_sha="123456", job_trigger=flexmock(type=JobTriggerModelType.pull_request). should_receive("get_trigger_object").and_return( flexmock( project=flexmock( repo_name="repo_name", namespace="the-namespace", project_url= "https://github.com/the-namespace/repo_name", ), pr_id=5, job_config_trigger_type=JobConfigTriggerType. pull_request, id=123, )).mock(), srpm_build=flexmock(url=None).should_receive( "set_url").with_args("https://some.host/my.srpm").mock(), ) ]) flexmock(Client).should_receive("create_from_config_file").and_return( flexmock( build_proxy=flexmock().should_receive("get").with_args( 1).and_return( flexmock( ended_on=True, state="completed", source_package={ "name": "source_package_name", "url": "https://some.host/my.srpm", }, )).mock(), build_chroot_proxy=flexmock().should_receive("get").with_args( 1, "the-target").and_return( flexmock(ended_on="timestamp", state="completed")).mock(), )) flexmock(AbstractCoprBuildEvent).should_receive( "get_package_config").and_return( PackageConfig(jobs=[ JobConfig(type=JobType.build, trigger=JobConfigTriggerType.pull_request) ])) flexmock(CoprBuildEndHandler).should_receive("run").and_return().once() assert check_copr_build(build_id=1)
def babysit_copr_build(self, build_id: int): """ check status of a copr build and update it in DB """ if not check_copr_build(build_id=build_id): self.retry()
def test_check_copr_build(clean_before_and_after, packit_build_752): flexmock(Client).should_receive("create_from_config_file").and_return( Client(None)) flexmock(AbstractCoprBuildEvent).should_receive( "get_package_config").and_return( PackageConfig(jobs=[ JobConfig( type=JobType.copr_build, trigger=JobConfigTriggerType.pull_request, metadata=JobMetadataConfig(_targets=[ "fedora-30-x86_64", "fedora-rawhide-x86_64", "fedora-31-x86_64", "fedora-32-x86_64", ]), ) ])) coprs_response = Munch({ "chroots": [ "fedora-30-x86_64", "fedora-rawhide-x86_64", "fedora-31-x86_64", "fedora-32-x86_64", ], "ended_on": 1583916564, "id": 1300329, "ownername": "packit", "project_dirname": "packit-service-packit-752", "projectname": "packit-service-packit-752", "repo_url": ("https://download.copr.fedorainfracloud.org/" "results/packit/packit-service-packit-752"), "source_package": { "name": "packit", "url": ("https://download.copr.fedorainfracloud.org/" "results/packit/packit-service-packit-752/" "srpm-builds/01300329/packit-0.8.2.dev122g64ebb47-1.fc31.src.rpm" ), "version": "0.8.2.dev122+g64ebb47-1.fc31", }, "started_on": 1583916315, "state": "succeeded", "submitted_on": 1583916261, "submitter": "packit", }) flexmock(BuildProxy).should_receive("get").and_return(coprs_response) copr_response_built_packages = Munch({ "packages": [ { "arch": "noarch", "epoch": 0, "name": "python3-packit", "release": "1.20210930124525726166.main.0.g0b7b36b.fc36", "version": "0.38.0", }, { "arch": "src", "epoch": 0, "name": "packit", "release": "1.20210930124525726166.main.0.g0b7b36b.fc36", "version": "0.38.0", }, { "arch": "noarch", "epoch": 0, "name": "packit", "release": "1.20210930124525726166.main.0.g0b7b36b.fc36", "version": "0.38.0", }, ], }) flexmock(BuildChrootProxy).should_receive("get_built_packages").with_args( BUILD_ID, "fedora-rawhide-x86_64").and_return(copr_response_built_packages) chroot_response = Munch({ "ended_on": 1583916564, "name": "fedora-rawhide-x86_64", "result_url": "https://download.copr.fedorainfracloud.org/" "results/packit/packit-service-packit-752/fedora-rawhide-x86_64/" "01300329-packit/", "started_on": 1583916315, "state": "succeeded", }) flexmock(BuildChrootProxy).should_receive("get").with_args( BUILD_ID, "fedora-rawhide-x86_64").and_return(chroot_response) pr = flexmock(source_project=flexmock(), target_branch="main") pr.should_receive("get_comments").and_return([]) pr.should_receive("comment").and_return() # Reporting flexmock(GithubProject).should_receive("get_pr").and_return(pr) flexmock(GithubProject).should_receive( "create_check_run").and_return().once() flexmock(GithubProject).should_receive("get_git_urls").and_return( {"git": "https://github.com/packit-service/packit.git"}) flexmock(packit_service.worker.build.copr_build).should_receive( "get_valid_build_targets").and_return({ "fedora-33-x86_64", "fedora-32-x86_64", "fedora-31-x86_64", "fedora-rawhide-x86_64", }) check_copr_build(BUILD_ID) assert packit_build_752.status == PG_BUILD_STATUS_SUCCESS
def test_check_copr_build_no_build(): flexmock(CoprBuildModel).should_receive("get_all_by_build_id").with_args( 1).and_return([]) assert check_copr_build(build_id=1)
def test_check_copr_build(clean_before_and_after, packit_build_752): flexmock(Client).should_receive("create_from_config_file").and_return( Client(None)) flexmock(CoprBuildEvent).should_receive("get_package_config").and_return( PackageConfig(jobs=[ JobConfig( type=JobType.copr_build, trigger=JobConfigTriggerType.pull_request, metadata=JobMetadataConfig(targets=[ "fedora-30-x86_64", "fedora-rawhide-x86_64", "fedora-31-x86_64", "fedora-32-x86_64", ]), ) ])) coprs_response = Munch({ "chroots": [ "fedora-30-x86_64", "fedora-rawhide-x86_64", "fedora-31-x86_64", "fedora-32-x86_64", ], "ended_on": 1583916564, "id": 1300329, "ownername": "packit", "project_dirname": "packit-service-packit-752", "projectname": "packit-service-packit-752", "repo_url": ("https://download.copr.fedorainfracloud.org/" "results/packit/packit-service-packit-752"), "source_package": { "name": "packit", "url": ("https://download.copr.fedorainfracloud.org/" "results/packit/packit-service-packit-752/" "srpm-builds/01300329/packit-0.8.2.dev122g64ebb47-1.fc31.src.rpm" ), "version": "0.8.2.dev122+g64ebb47-1.fc31", }, "started_on": 1583916315, "state": "succeeded", "submitted_on": 1583916261, "submitter": "packit", }) flexmock(BuildProxy).should_receive("get").and_return(coprs_response) chroot_response = Munch({ "ended_on": 1583916564, "name": "fedora-rawhide-x86_64", "result_url": "https://download.copr.fedorainfracloud.org/" "results/packit/packit-service-packit-752/fedora-rawhide-x86_64/" "01300329-packit/", "started_on": 1583916315, "state": "succeeded", }) flexmock(BuildChrootProxy).should_receive("get").with_args( BUILD_ID, "fedora-rawhide-x86_64").and_return(chroot_response) # Reporting flexmock(GithubProject).should_receive("get_pr").and_return(flexmock()) flexmock(GithubProject).should_receive("get_pr_comments").and_return([]) flexmock(GithubProject).should_receive("pr_comment").and_return() flexmock(GithubProject).should_receive( "set_commit_status").and_return().once() check_copr_build(BUILD_ID) assert packit_build_752.status == PG_COPR_BUILD_STATUS_SUCCESS