Ejemplo n.º 1
0
def test_precheck(github_pr_event):
    flexmock(PullRequestModel).should_receive("get_or_create").with_args(
        pr_id=342,
        namespace="packit-service",
        repo_name="packit",
        project_url="https://github.com/packit-service/packit",
    ).and_return(
        flexmock(id=342,
                 job_config_trigger_type=JobConfigTriggerType.pull_request))

    copr_build_handler = CoprBuildHandler(
        package_config=PackageConfig(jobs=[
            JobConfig(
                type=JobType.copr_build,
                trigger=JobConfigTriggerType.pull_request,
            ),
            JobConfig(
                type=JobType.tests,
                trigger=JobConfigTriggerType.pull_request,
            ),
        ]),
        job_config=JobConfig(
            type=JobType.copr_build,
            trigger=JobConfigTriggerType.pull_request,
        ),
        event=github_pr_event.get_dict(),
    )
    assert copr_build_handler.pre_check()
Ejemplo n.º 2
0
def test_precheck_skip_tests_when_build_defined(pull_request_event):
    flexmock(AbstractGithubCoprBuildHandler).should_receive(
        "get_package_config_from_repo").and_return(
            PackageConfig(jobs=[
                JobConfig(
                    type=JobType.copr_build,
                    trigger=JobConfigTriggerType.pull_request,
                    metadata={},
                ),
                JobConfig(
                    type=JobType.tests,
                    trigger=JobConfigTriggerType.pull_request,
                    metadata={},
                ),
            ]))
    copr_build_handler = AbstractGithubCoprBuildHandler(
        config=flexmock(),
        job_config=JobConfig(
            type=JobType.tests,
            trigger=JobConfigTriggerType.pull_request,
            metadata={},
        ),
        event=pull_request_event,
    )
    assert not copr_build_handler.pre_check()
Ejemplo n.º 3
0
def test_job_config_blah():
    with pytest.raises(PackitInvalidConfigException) as ex:
        JobConfig.get_from_dict({
            "job": "asdqwe",
            "trigger": "salt",
            "notify": []
        })
    assert "'asdqwe' is not one of " in str(ex.value)
Ejemplo n.º 4
0
def get_default_job_config(**kwargs):
    """ pass kwargs to JobConfig constructor """
    return [
        JobConfig(type=JobType.tests,
                  trigger=JobConfigTriggerType.pull_request,
                  metadata=JobMetadataConfig(targets=["fedora-stable"]),
                  **kwargs),
        JobConfig(type=JobType.propose_downstream,
                  trigger=JobConfigTriggerType.release,
                  metadata=JobMetadataConfig(dist_git_branches=["fedora-all"]),
                  **kwargs),
    ]
Ejemplo n.º 5
0
def test_package_config_equal():
    assert PackageConfig(
        specfile_path="fedora/package.spec",
        synced_files=["a", "b"],
        jobs=[JobConfig(trigger=TriggerType.release, release_to=["f28"], metadata={})],
        metadata={"c": "d"},
    ) == PackageConfig(
        specfile_path="fedora/package.spec",
        synced_files=["a", "b"],
        jobs=[JobConfig(trigger=TriggerType.release, release_to=["f28"], metadata={})],
        metadata={"c": "d"},
    )
Ejemplo n.º 6
0
def get_default_job_config():
    return [
        JobConfig(
            type=JobType.tests,
            trigger=JobConfigTriggerType.pull_request,
            metadata={"targets": ["fedora-stable"]},
        ),
        JobConfig(
            type=JobType.propose_downstream,
            trigger=JobConfigTriggerType.release,
            metadata={"dist-git-branch": ["fedora-all"]},
        ),
    ]
Ejemplo n.º 7
0
def build_handler(metadata=None, trigger=None):
    if not metadata:
        metadata = {
            "owner": "nobody",
            "targets": [
                "fedora-29-x86_64",
                "fedora-30-x86_64",
                "fedora-31-x86_64",
                "fedora-rawhide-x86_64",
            ],
        }
    jobs = [
        JobConfig(
            job=JobType.copr_build,
            trigger=trigger or JobTriggerType.pull_request,
            metadata=metadata,
        )
    ]
    pkg_conf = PackageConfig(jobs=jobs, downstream_package_name="dummy")
    event = Parser.parse_pr_event(pull_request())
    handler = CoprBuildHandler(
        config=ServiceConfig(),
        package_config=pkg_conf,
        project=GitProject("", GitService(), ""),
        event=event,
    )
    handler._api = PackitAPI(ServiceConfig, pkg_conf)
    return handler
def build_helper(
    event: Union[PullRequestEvent, PullRequestCommentEvent, CoprBuildEvent,
                 PushGitHubEvent, ReleaseEvent, ],
    metadata=None,
    trigger=None,
    jobs=None,
):
    if not metadata:
        metadata = {
            "owner":
            "nobody",
            "targets": [
                "fedora-29-x86_64",
                "fedora-30-x86_64",
                "fedora-31-x86_64",
                "fedora-rawhide-x86_64",
            ],
        }
    jobs = jobs or []
    jobs.append(
        JobConfig(
            type=JobType.copr_build,
            trigger=trigger or JobConfigTriggerType.pull_request,
            metadata=metadata,
        ))
    pkg_conf = PackageConfig(jobs=jobs, downstream_package_name="dummy")
    handler = CoprBuildJobHelper(
        config=ServiceConfig(),
        package_config=pkg_conf,
        project=GitProject("", GitService(), ""),
        event=event,
    )
    handler._api = PackitAPI(ServiceConfig(), pkg_conf)
    return handler
Ejemplo n.º 9
0
def test_create_source_script_with_job_config():
    test_job_config = JobConfig(
        type=JobType.copr_build,
        trigger=JobConfigTriggerType.release,
        metadata=JobMetadataConfig(project="example1"),
    )
    expected_command = (
        'packit -d prepare-sources --result-dir "$resultdir" '
        f"--job-config {JobConfigSchema().dumps(test_job_config)!r}"
        f" https://github.com/packit/ogr"
    )
    assert (
        create_source_script(
            job_config=test_job_config, url="https://github.com/packit/ogr"
        )
        == f"""
#!/bin/sh

git config --global user.email "*****@*****.**"
git config --global user.name "Packit"
resultdir=$PWD
{expected_command}

"""
    )
Ejemplo n.º 10
0
def test_distro2compose_for_aarch64(distro, arch, compose, use_internal_tf):
    job_helper = TFJobHelper(
        service_config=flexmock(
            testing_farm_api_url="xyz",
        ),
        package_config=flexmock(jobs=[]),
        project=flexmock(),
        metadata=flexmock(),
        db_trigger=flexmock(),
        job_config=JobConfig(
            type=JobType.tests,
            trigger=JobConfigTriggerType.pull_request,
            metadata=JobMetadataConfig(use_internal_tf=use_internal_tf),
        ),
    )
    job_helper = flexmock(job_helper)

    response = flexmock(
        status_code=200, json=lambda: {"composes": [{"name": "Fedora-33"}]}
    )
    job_helper.should_receive("send_testing_farm_request").and_return(response).times(
        0 if use_internal_tf else 1
    )

    assert job_helper.distro2compose(distro, arch=arch) == compose
Ejemplo n.º 11
0
def get_job_config_full():
    return JobConfig(
        job=JobType.propose_downstream,
        trigger=JobTriggerType.pull_request,
        notify=[JobNotifyType.pull_request_status],
        metadata={"a": "b"},
    )
Ejemplo n.º 12
0
def get_job_config_build_for_branch(**kwargs):
    """ pass kwargs to JobConfig constructor """
    return JobConfig(type=JobType.copr_build,
                     trigger=JobConfigTriggerType.commit,
                     metadata=JobMetadataConfig(branch="build-branch",
                                                scratch=True),
                     **kwargs)
Ejemplo n.º 13
0
def test_copr_build_for_release(release_event):
    # status is set for each build-target (4x):
    #  - Building SRPM ...
    #  - Building RPM ...
    branch_build_job = JobConfig(
        type=JobType.build,
        trigger=JobConfigTriggerType.release,
        metadata={
            "branch": "build-branch",
            "owner": "nobody",
            "targets": [
                "fedora-29-x86_64",
                "fedora-30-x86_64",
                "fedora-31-x86_64",
                "fedora-rawhide-x86_64",
            ],
        },
    )
    helper = build_helper(jobs=[branch_build_job], event=release_event)
    flexmock(GitProject).should_receive("set_commit_status").and_return().times(8)
    flexmock(RedisCoprBuild).should_receive("create").and_return(FakeCoprBuildModel())
    flexmock(SRPMBuild).should_receive("create").and_return(SRPMBuild())
    flexmock(CoprBuild).should_receive("get_or_create").and_return(CoprBuild(id=1))
    flexmock(PackitAPI).should_receive("run_copr_build").and_return(1, None).once()
    assert helper.run_copr_build()["success"]
Ejemplo n.º 14
0
def test_copr_build_for_release(release_event):
    # status is set for each build-target (4x):
    #  - Building SRPM ...
    #  - Building RPM ...
    branch_build_job = JobConfig(
        type=JobType.build,
        trigger=JobConfigTriggerType.release,
        metadata=JobMetadataConfig(
            targets=[
                "fedora-29-x86_64",
                "fedora-30-x86_64",
                "fedora-31-x86_64",
                "fedora-rawhide-x86_64",
            ],
            owner="nobody",
            dist_git_branches=["build-branch"],
        ),
    )
    flexmock(AddReleaseDbTrigger).should_receive("db_trigger").and_return(
        flexmock(job_config_trigger_type=JobConfigTriggerType.release)
    )
    helper = build_helper(jobs=[branch_build_job], event=release_event)
    flexmock(ReleaseEvent).should_receive("get_project").and_return(helper.project)
    flexmock(GitProject).should_receive("set_commit_status").and_return().times(8)
    flexmock(GitProject).should_receive("get_sha_from_tag").and_return("123456").once()
    flexmock(SRPMBuildModel).should_receive("create").and_return(SRPMBuildModel())
    flexmock(CoprBuildModel).should_receive("get_or_create").and_return(
        CoprBuildModel(id=1)
    )
    flexmock(PackitAPI).should_receive("run_copr_build").and_return(1, None).once()
    flexmock(Celery).should_receive("send_task").once()
    assert helper.run_copr_build()["success"]
Ejemplo n.º 15
0
def test_handler_cleanup(tmp_path, trick_p_s_with_k8s):
    tmp_path.joinpath("a").mkdir()
    tmp_path.joinpath("b").write_text("a")
    tmp_path.joinpath("c").symlink_to("b")
    tmp_path.joinpath("d").symlink_to("a", target_is_directory=True)
    tmp_path.joinpath("e").symlink_to("nope", target_is_directory=False)
    tmp_path.joinpath("f").symlink_to("nopez", target_is_directory=True)
    tmp_path.joinpath(".g").write_text("g")
    tmp_path.joinpath(".h").symlink_to(".g", target_is_directory=False)

    c = ServiceConfig()
    pc = flexmock(PackageConfig)
    c.command_handler_work_dir = tmp_path
    jc = JobConfig(
        type=JobType.copr_build,
        trigger=JobConfigTriggerType.pull_request,
        metadata=JobMetadataConfig(),
    )
    j = JobHandler(
        package_config=pc,
        job_config=jc,
        event={},
    )

    flexmock(j).should_receive("service_config").and_return(c)

    j._clean_workplace()

    assert len(list(tmp_path.iterdir())) == 0
Ejemplo n.º 16
0
def pc_tests():
    return PackageConfig(jobs=[
        JobConfig(
            type=JobType.tests,
            trigger=JobConfigTriggerType.pull_request,
            metadata={"targets": ["fedora-all"]},
        )
    ])
Ejemplo n.º 17
0
def pc_build_push():
    return PackageConfig(jobs=[
        JobConfig(
            type=JobType.copr_build,
            trigger=JobConfigTriggerType.commit,
            metadata=JobMetadataConfig(_targets=["fedora-all"]),
        )
    ])
Ejemplo n.º 18
0
def pc_build_release():
    return PackageConfig(jobs=[
        JobConfig(
            type=JobType.copr_build,
            trigger=JobConfigTriggerType.release,
            metadata={"targets": ["fedora-all"]},
        )
    ])
Ejemplo n.º 19
0
def get_job_config_full(**kwargs):
    """ pass kwargs to JobConfig constructor """
    return JobConfig(
        type=JobType.propose_downstream,
        trigger=JobConfigTriggerType.pull_request,
        metadata=JobMetadataConfig(dist_git_branches=["master"]),
        **kwargs
    )
Ejemplo n.º 20
0
def pc_build():
    return PackageConfig(jobs=[
        JobConfig(
            job=JobType.copr_build,
            trigger=JobTriggerType.pull_request,
            metadata={"targets": ["fedora-all"]},
        )
    ])
Ejemplo n.º 21
0
def pc_koji_build_pr():
    return PackageConfig(jobs=[
        JobConfig(
            type=JobType.production_build,
            trigger=JobConfigTriggerType.pull_request,
            metadata=JobMetadataConfig(_targets=["fedora-all"]),
        )
    ])
Ejemplo n.º 22
0
def pc_build_pr():
    pc = PackageConfig(jobs=[
        JobConfig(
            type=JobType.copr_build,
            trigger=JobConfigTriggerType.pull_request,
            metadata=JobMetadataConfig(targets=["fedora-all"]),
        )
    ])
    return pc
Ejemplo n.º 23
0
def test_copr_build_for_release(release_event):
    # status is set for each build-target (4x):
    #  - Building SRPM ...
    #  - Starting RPM build...
    branch_build_job = JobConfig(
        type=JobType.build,
        trigger=JobConfigTriggerType.release,
        metadata=JobMetadataConfig(
            targets=[
                "fedora-29-x86_64",
                "fedora-30-x86_64",
                "fedora-31-x86_64",
                "fedora-rawhide-x86_64",
            ],
            owner="nobody",
            dist_git_branches=["build-branch"],
        ),
    )
    trigger = flexmock(job_config_trigger_type=JobConfigTriggerType.release, id=123)
    flexmock(AddReleaseDbTrigger).should_receive("db_trigger").and_return(trigger)
    flexmock(release_event.project).should_receive("get_sha_from_tag").and_return(
        "123456"
    )
    helper = build_helper(
        jobs=[branch_build_job],
        event=release_event,
        db_trigger=trigger,
    )
    flexmock(ReleaseEvent).should_receive("get_project").and_return(helper.project)
    flexmock(GitProject).should_receive("set_commit_status").and_return().times(8)
    flexmock(SRPMBuildModel).should_receive("create").and_return(
        SRPMBuildModel(success=True)
    )
    flexmock(CoprBuildModel).should_receive("get_or_create").and_return(
        CoprBuildModel(id=1)
    )

    flexmock(PackitAPI).should_receive("create_srpm").and_return("my.srpm")

    # copr build
    flexmock(CoprHelper).should_receive("create_copr_project_if_not_exists").and_return(
        None
    )
    flexmock(CoprHelper).should_receive("get_copr_client").and_return(
        flexmock(
            config={"copr_url": "https://copr.fedorainfracloud.org/"},
            build_proxy=flexmock()
            .should_receive("create_from_file")
            .and_return(
                flexmock(id=2, projectname="the-project-name", ownername="the-owner")
            )
            .mock(),
        )
    )

    flexmock(Celery).should_receive("send_task").once()
    assert helper.run_copr_build()["success"]
Ejemplo n.º 24
0
def test_testing_farm_response(
    tests_result, tests_message, tests_tests, status_status, status_message
):
    flexmock(TFResultsHandler).should_receive(
        "get_package_config_from_repo"
    ).and_return(
        flexmock(
            jobs=[
                JobConfig(
                    type=JobType.copr_build,
                    trigger=JobConfigTriggerType.pull_request,
                    metadata={},
                )
            ],
        )
    )
    test_farm_handler = TFResultsHandler(
        config=flexmock(command_handler_work_dir=flexmock()),
        job_config=flexmock(),
        event=TFResultsEvent(
            pipeline_id="id",
            result=tests_result,
            environment=flexmock(),
            message=tests_message,
            log_url="some url",
            copr_repo_name=flexmock(),
            copr_chroot="fedora-rawhide-x86_64",
            tests=tests_tests,
            repo_namespace=flexmock(),
            repo_name=flexmock(),
            git_ref=flexmock(),
            https_url=flexmock(),
            commit_sha=flexmock(),
        ),
    )
    flexmock(StatusReporter).should_receive("report").with_args(
        state=status_status,
        description=status_message,
        url="some url",
        check_names="packit-stg/testing-farm-fedora-rawhide-x86_64",
    )

    tft_test_run_model = flexmock()
    tft_test_run_model.should_receive("set_status").with_args(
        tests_result
    ).and_return().once()
    tft_test_run_model.should_receive("set_web_url").with_args(
        "some url"
    ).and_return().once()

    flexmock(TFTTestRunModel).should_receive("get_by_pipeline_id").and_return(
        tft_test_run_model
    )

    flexmock(LocalProject).should_receive("refresh_the_arguments").and_return(None)
    test_farm_handler.run()
Ejemplo n.º 25
0
def test_precheck_skip_tests_when_build_defined(github_pr_event):
    copr_build_handler = AbstractCoprBuildHandler(
        package_config=PackageConfig(jobs=[
            JobConfig(
                type=JobType.copr_build,
                trigger=JobConfigTriggerType.pull_request,
            ),
            JobConfig(
                type=JobType.tests,
                trigger=JobConfigTriggerType.pull_request,
            ),
        ]),
        job_config=JobConfig(
            type=JobType.tests,
            trigger=JobConfigTriggerType.pull_request,
        ),
        data=EventData.from_event_dict(github_pr_event.get_dict()),
    )
    assert not copr_build_handler.pre_check()
Ejemplo n.º 26
0
def test_precheck_koji_build_non_scratch(github_pr_event):
    flexmock(PullRequestModel).should_receive("get_or_create").with_args(
        pr_id=342,
        namespace="packit-service",
        repo_name="packit",
        project_url="https://github.com/packit-service/packit",
    ).and_return(
        flexmock(
            id=342,
            job_config_trigger_type=JobConfigTriggerType.pull_request,
            job_trigger_model_type=JobTriggerModelType.pull_request,
        ))
    flexmock(JobTriggerModel).should_receive("get_or_create").with_args(
        type=JobTriggerModelType.pull_request, trigger_id=342).and_return(
            flexmock(id=2, type=JobTriggerModelType.pull_request))
    flexmock(StatusReporterGithubChecks).should_receive(
        "set_status").with_args(
            state=BaseCommitStatus.neutral,
            description="Non-scratch builds not possible from upstream.",
            check_name="production-build:bright-future",
            url=KOJI_PRODUCTION_BUILDS_ISSUE,
            links_to_external_services=None,
            markdown_content=None,
        ).and_return().once()
    flexmock(GithubProject).should_receive("can_merge_pr").and_return(True)
    koji_build_handler = KojiBuildHandler(
        package_config=PackageConfig(jobs=[
            JobConfig(
                type=JobType.production_build,
                trigger=JobConfigTriggerType.pull_request,
                metadata=JobMetadataConfig(_targets=["bright-future"],
                                           scratch=False),
            ),
        ]),
        job_config=JobConfig(
            type=JobType.production_build,
            trigger=JobConfigTriggerType.pull_request,
            metadata=JobMetadataConfig(_targets=["bright-future"],
                                       scratch=False),
        ),
        event=github_pr_event.get_dict(),
    )
    assert not koji_build_handler.pre_check()
Ejemplo n.º 27
0
def test_precheck_push_to_a_different_branch(github_push_event):
    flexmock(GitBranchModel).should_receive("get_or_create").and_return(
        flexmock(id=1, job_config_trigger_type=JobConfigTriggerType.commit))

    copr_build_handler = CoprBuildHandler(
        package_config=PackageConfig(jobs=[
            JobConfig(
                type=JobType.copr_build,
                trigger=JobConfigTriggerType.commit,
                metadata=JobMetadataConfig(branch="bad-branch"),
            ),
        ]),
        job_config=JobConfig(
            type=JobType.copr_build,
            trigger=JobConfigTriggerType.commit,
            metadata=JobMetadataConfig(branch="bad-branch"),
        ),
        event=github_push_event.get_dict(),
    )
    assert not copr_build_handler.pre_check()
Ejemplo n.º 28
0
def test_repository_cache_invocation():
    copr_build_helper = CoprBuildJobHelper(
        service_config=flexmock(
            repository_cache="/tmp/repository-cache",
            add_repositories_to_repository_cache=False,
            command_handler_work_dir="/tmp/some-dir",
        ),
        package_config=PackageConfig(jobs=[
            JobConfig(
                type=JobType.copr_build,
                trigger=JobConfigTriggerType.pull_request,
                metadata=JobMetadataConfig(_targets=STABLE_VERSIONS),
            )
        ], ),
        job_config=JobConfig(
            type=JobType.copr_build,
            trigger=JobConfigTriggerType.pull_request,
            metadata=JobMetadataConfig(_targets=STABLE_VERSIONS),
        ),
        project=flexmock(
            service=flexmock(),
            get_git_urls=lambda:
            {"git": "https://github.com/some-namespace/some-repo.git"},
            repo=flexmock(),
            namespace=flexmock(),
        ),
        metadata=flexmock(pr_id=None, git_ref=flexmock()),
        db_trigger=flexmock(
            job_config_trigger_type=JobConfigTriggerType.pull_request),
    )

    flexmock(RepositoryCache).should_call("__init__").once()
    flexmock(RepositoryCache).should_receive("get_repo").with_args(
        "https://github.com/some-namespace/some-repo.git",
        directory=Path("/tmp/some-dir"),
    ).and_return(
        flexmock(
            git=flexmock().should_receive("checkout").and_return().mock(),
            commit=lambda: "commit",
        )).once()
    assert copr_build_helper.local_project
Ejemplo n.º 29
0
def test_copr_build_for_branch(branch_push_event):
    # status is set for each build-target (4x):
    #  - Building SRPM ...
    #  - Starting RPM build...
    branch_build_job = JobConfig(
        type=JobType.build,
        trigger=JobConfigTriggerType.commit,
        metadata=JobMetadataConfig(
            targets=DEFAULT_TARGETS,
            owner="nobody",
            dist_git_branches=["build-branch"],
        ),
    )
    trigger = flexmock(job_config_trigger_type=JobConfigTriggerType.commit,
                       id=123)
    flexmock(AddBranchPushDbTrigger).should_receive("db_trigger").and_return(
        trigger)
    helper = build_helper(
        jobs=[branch_build_job],
        event=branch_push_event,
        db_trigger=trigger,
    )
    flexmock(GitProject).should_receive(
        "set_commit_status").and_return().times(8)
    flexmock(SRPMBuildModel).should_receive("create").and_return(
        SRPMBuildModel(success=True))
    flexmock(CoprBuildModel).should_receive("get_or_create").and_return(
        CoprBuildModel(id=1))
    flexmock(PushGitHubEvent).should_receive("db_trigger").and_return(
        flexmock())

    flexmock(PackitAPI).should_receive("create_srpm").and_return("my.srpm")

    # copr build
    flexmock(CoprHelper).should_receive(
        "create_copr_project_if_not_exists").and_return(None)
    flexmock(CoprHelper).should_receive("get_copr_client").and_return(
        flexmock(
            config={"copr_url": "https://copr.fedorainfracloud.org/"},
            build_proxy=flexmock().should_receive(
                "create_from_file").and_return(
                    flexmock(id=2,
                             projectname="the-project-name",
                             ownername="the-owner")).mock(),
            mock_chroot_proxy=flexmock().should_receive("get_list").and_return(
                {target: ""
                 for target in DEFAULT_TARGETS}).mock(),
        ))
    flexmock(Pushgateway).should_receive("push_copr_build_created")

    flexmock(Celery).should_receive("send_task").once()
    assert helper.run_copr_build()["success"]
Ejemplo n.º 30
0
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)