runtests script

This commit is contained in:
Mike McLean 2017-11-22 15:27:29 -05:00
parent c0dbda3bda
commit 824d27935c
2 changed files with 45 additions and 1 deletions

View file

@ -80,7 +80,7 @@ test3:
tests/test_lib tests/test_cli
coverage report
coverage html
@echo Full coverage report in htmlcov/index.html
@echo Full coverage report at file://${PWD}/htmlcov/index.html
test-tarball:
@rm -rf .koji-$(VERSION)

44
runtests Executable file
View file

@ -0,0 +1,44 @@
#!/usr/bin/python
from multiprocessing import Pool
import subprocess
import tempfile
def explode_ref(ref, dest):
"""Write contents from ref to dest dir"""
p1 = subprocess.Popen(['git', 'archive', ref], stdout=subprocess.PIPE)
p2 = subprocess.Popen(['tar', '-x'], cwd=dest, stdin=p1.stdout)
p1.stdout.close()
p2.communicate()
def checkout_run(cmd, ref='HEAD'):
"""Run command in a fresh checkout of ref and return output"""
tempdir = tempfile.mkdtemp()
explode_ref(ref, tempdir)
output = subprocess.check_output(cmd, cwd=tempdir,
stderr=subprocess.STDOUT)
return output
def run_test():
return checkout_run(['make', 'test'])
def run_test3():
return checkout_run(['make', 'test3'])
def main():
"""Run our test targets in parallel using fresh checkouts of HEAD"""
print("Running tests...")
p = Pool(2)
results = [p.apply_async(f) for f in [run_test, run_test3]]
for r in results:
print(r.get().decode('utf-8'))
p.close()
if __name__ == '__main__':
main()