示例#1
0
def get_lead_time(release: release.Release,
                  repo: repository.Repository) -> timedelta:

    if len(repo.get_releases()) == 1:
        commit_times = [
            datetime.timestamp(c.get_date()) -
            datetime.timestamp(repo.get_creation_time())
            for c in repo.get_commits()
        ]
    else:
        releases = repo.get_releases()
        release_index = None
        for index, r in enumerate(releases):
            if r.get_id() == release.get_id():
                release_index = index
                break
        if release_index != None:
            if release_index < len(releases) - 1:
                prev_release = releases[release_index + 1]
            else:
                return timedelta(seconds=0)
        else:
            return timedelta(seconds=0)
        commits = get_commits_between_releases(release, prev_release, repo)
        commit_times = [
            datetime.timestamp(c.get_date()) -
            datetime.timestamp(prev_release.get_creation_time())
            for c in commits
        ]
    # Stop disvision by zero
    if len(commit_times) == 0:
        return timedelta(seconds=sum(commit_times))
    return timedelta(seconds=sum(commit_times) / len(commit_times))
def test_get_creation_time():
    repo = Repository(session, DATA_OBJECT)
    # assert len(repo.get_commits()) == COMMITS_IN_PROJECT, "Commit's count doesnt match the expected value. " \
    #                                                          "(Remember, the github api may at max fetch 30 commits. " \
    #                                                          "Ensure the configured project has less commits to test"
    assert repo.get_creation_time() == EXPECTED_DATE, "get_creation_time output did not match"