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"