Skip to content

Commit

Permalink
Add a script to test multiple commits
Browse files Browse the repository at this point in the history
  • Loading branch information
vitaut committed Jul 16, 2024
1 parent 9228f34 commit 8757f1f
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions support/check-commits
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/env python3

"""Compile source on a range of commits
Usage:
check-commits <start> <source>
"""

import docopt, os, sys, tempfile
from subprocess import check_call, check_output, run

args = docopt.docopt(__doc__)
start = args.get('<start>')
source = args.get('<source>')

cwd = os.getcwd()

with tempfile.TemporaryDirectory() as work_dir:
check_call(['git', 'clone', 'https://github.com/fmtlib/fmt.git'],
cwd=work_dir)
repo_dir = os.path.join(work_dir, 'fmt')
commits = check_output(
['git', 'rev-list', f'{start}..HEAD', '--abbrev-commit',
'--', 'include', 'src'],
text=True, cwd=repo_dir).rstrip().split('\n')
commits.reverse()
print('Time\tCommit')
for commit in commits:
check_call(['git', '-c', 'advice.detachedHead=false', 'checkout', commit],
cwd=repo_dir)
return_code = run(
['c++', '-std=c++11', '-O3', '-DNDEBUG', '-I', 'include',
'src/format.cc', os.path.join(cwd, source)], cwd=repo_dir).return_code
if return_code != 0:
continue
times = []
for i in range(5):
output = check_output([os.path.join(repo_dir, 'a.out')], text=True)
times.append(float(output))
message = check_output(['git', 'log', '-1', '--pretty=format:%s', commit],
cwd=repo_dir, text=True)
print(f'{min(times)}\t{commit} {message[:40]}')
sys.stdout.flush()

0 comments on commit 8757f1f

Please sign in to comment.