示例#1
0
def default_parent_revision(default_author, default_repo, default_revision):
    return factories.RevisionFactory(
        author=default_author,
        repository=default_repo,
        parents=[default_revision.sha],
        sha='adba8d362c656c7f97f5da9fa4e644be1b72a449',
    )
示例#2
0
def default_revision(default_repo, default_author):
    return factories.RevisionFactory(
        repository=default_repo,
        authors=[default_author],
        sha="884ea9e17b53933febafd7e02d8bd28f3c9d479d",
        message=
        "ref: Remove outdated comment\n\nThis removes an outdated comment.",
    )
def test_repo_build_list_mine_without_match(client, default_login,
                                            default_repo, default_repo_access):
    revision = factories.RevisionFactory(repository=default_repo)
    factories.BuildFactory(revision=revision, authors=revision.authors)
    resp = client.get("/api/repos/{}/builds?user=me".format(
        default_repo.get_full_name()))
    assert resp.status_code == 200
    data = resp.json()
    assert len(data) == 0
示例#4
0
def test_repo_build_list_mine_without_match(client, default_login,
                                            default_repo, default_repo_access):
    revision = factories.RevisionFactory(repository=default_repo)
    source = factories.SourceFactory(revision=revision)
    factories.BuildFactory(source=source)
    resp = client.get('/api/repos/{}/builds?show=mine'.format(
        default_repo.get_full_name()))
    assert resp.status_code == 200
    data = resp.json()
    assert len(data) == 0
示例#5
0
def test_upsert_change_request_different_repos(
    client,
    db_session,
    default_repo,
    default_revision,
    default_change_request,
    default_user,
    mocker,
):
    """
    Check that two change requests from different repos can have the same external id
    """
    new_repo = factories.RepositoryFactory(public=True)

    auth.set_current_tenant(
        auth.Tenant(access={
            default_repo.id: Permission.write,
            new_repo.id: Permission.write
        }))

    default_change_request.external_id = "id"
    default_change_request.provider = RepositoryProvider.github.value
    db_session.add(default_change_request)
    db_session.commit()

    mock_identify_revision = mocker.patch(
        "zeus.utils.revisions.identify_revision")
    mock_identify_revision.return_value = factories.RevisionFactory(
        repository=new_repo, sha="1234567")
    assert ChangeRequest.query.count() == 1

    cr = upsert_change_request(
        new_repo,
        default_change_request.provider,
        default_change_request.external_id,
        data={
            "message": "Hello",
            "parent_revision_sha": default_revision.sha
        },
    ).json()

    assert ChangeRequest.query.count() == 2
    new_change_request = ChangeRequest.query.filter(
        ChangeRequest.id != default_change_request.id).first()
    assert cr["id"] == str(new_change_request.id)
示例#6
0
def default_revision(default_repo, default_author):
    return factories.RevisionFactory(
        repository=default_repo,
        author=default_author,
        sha='884ea9e17b53933febafd7e02d8bd28f3c9d479d',
    )
示例#7
0
def test_failure_origin(default_repo):
    auth.set_current_tenant(
        auth.Tenant(access={default_repo.id: Permission.read}))

    new_revision = factories.RevisionFactory(repository=default_repo)
    new_source = factories.SourceFactory(revision=new_revision)
    new_build = factories.BuildFactory(source=new_source, failed=True)
    new_job = factories.JobFactory(build=new_build, failed=True)
    new_testcase = factories.TestCaseFactory(job=new_job, failed=True)
    new_testcase2 = factories.TestCaseFactory(job=new_job, passed=True)

    old_revision = factories.RevisionFactory(
        repository=default_repo,
        date_created=new_revision.date_created - timedelta(hours=1),
    )
    old_source = factories.SourceFactory(revision=old_revision,
                                         date_created=new_source.date_created -
                                         timedelta(hours=1))
    old_build = factories.BuildFactory(
        source=old_source,
        failed=True,
        date_created=new_build.date_created - timedelta(hours=1),
    )
    old_job = factories.JobFactory(
        build=old_build,
        failed=True,
        date_created=new_job.date_created - timedelta(hours=1),
    )
    factories.TestCaseFactory(job=old_job, failed=True, name=new_testcase.name)

    oldold_revision = factories.RevisionFactory(
        repository=default_repo,
        date_created=old_revision.date_created - timedelta(hours=1),
    )
    oldold_source = factories.SourceFactory(
        revision=oldold_revision,
        date_created=old_source.date_created - timedelta(hours=1),
    )
    factories.BuildFactory(
        source=oldold_source,
        passed=True,
        date_created=old_build.date_created - timedelta(hours=1),
    )

    schema = AggregateTestCaseSummarySchema(many=True,
                                            strict=True,
                                            context={"build": new_build})
    result = schema.dump([
        AggregateTestCase(
            hash=new_testcase.hash,
            name=new_testcase.name,
            runs=[[
                str(new_testcase.id),
                str(new_testcase.job_id),
                new_testcase.duration,
                int(new_testcase.result),
            ]],
        ),
        AggregateTestCase(
            hash=new_testcase2.hash,
            name=new_testcase2.name,
            runs=[[
                str(new_testcase2.id),
                str(new_testcase2.job_id),
                new_testcase2.duration,
                int(new_testcase2.result),
            ]],
        ),
    ]).data
    assert len(result) == 2
    assert result[0]["hash"] == new_testcase.hash
    assert result[0]["name"] == new_testcase.name
    assert result[0]["origin_build"]["id"] == str(old_build.id)
    assert result[1]["hash"] == new_testcase2.hash
    assert result[1]["name"] == new_testcase2.name
    assert result[1]["origin_build"] is None