예제 #1
0
def test_generate_git_log():
    """Ensures generate_git_log() works as intended."""

    # Extract logs for the current repository
    logs = generate_git_log('.')
    assert len(logs) > 0
    assert len(logs[0]) == 3
예제 #2
0
def analyze(path, year, out):
    repositories = discover_repositories(os.path.expanduser(path))

    logs = []
    for repo in repositories:
        logs += generate_git_log(repo)

    log_by_year = sort_by_year(logs)

    max_commits = []
    for y in log_by_year:
        data = process_log(log_by_year[y], y)
        max_commits.append(data['max_commits'])

    if not year:
        year = y
    else:
        year = int(year)
    global_max = max(max_commits)
    processed_logs = process_log(log_by_year[year], year)
    logger.info('Generating report for year {}'.format(year))
    if out:
        with open(out, 'w') as fout:
            make_svg_report(processed_logs, global_max, fout)
    else:
        make_svg_report(processed_logs, global_max)
예제 #3
0
def test_process_log():
    """Ensures process_log() works as intended."""

    # Extract logs for the current repository
    logs = generate_git_log('.')
    logs2013 = process_log(logs, 2013)
    assert logs2013['year'] == 2013
    assert logs2013['daily_commits_mine']
    assert logs2013['daily_commits_others'] == {}
    assert logs2013['max_commits'] > 0
예제 #4
0
def test_get_annual_data():
    """Ensures get_annual_data() works as intended."""

    from gitstats import __email__

    # Extract logs for the current repository
    logs = generate_git_log('.')
    logs2013 = get_annual_data(logs, 2013, [__email__])
    assert logs2013['year'] == 2013
    assert logs2013['daily_commits_mine']
    assert logs2013['daily_commits_others'] == {}
    assert logs2013['max_commits'] > 0
예제 #5
0
def analyze(path):
    """Analyzes Git repositories to generate a report in JSON format."""

    repositories = discover_repositories(os.path.expanduser(path))

    gitlogs = []
    for repo in repositories:
        try:
            gitlogs += generate_git_log(repo)
        except RuntimeError:
            log.warn('Not able to generate logs for {}', path)

    print(json.dumps(gitlogs, default=datetime_handler))
예제 #6
0
def test_sort_by_year():
    """Ensures sort_by_year() works as intended."""

    # Extract logs for the current repository
    logs = generate_git_log('.')
    sorted_logs = sort_by_year(logs)
    years = sorted_logs.keys()

    assert 2012 not in years
    assert 2013 in years
    assert 2014 not in years
    assert 2015 in years

    for year in (2013, 2015):
        for row in sorted_logs[year]:
            validate_log_row(row)