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
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)
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
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
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))
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)