Skip to content

Commit

Permalink
Introduce scripts to run all possible tests
Browse files Browse the repository at this point in the history
In 6e7d089 we added better travis continuous integration tests. This is nice,
but has two problems:
- We run only a subset of interesting tests.
- The travis builds can take hours to give us back results (especially on OS X).

This adds scripts/gen_run_tests.py, and its output, run_tests.sh, which builds
and runs a larger portion of possible configurations on the local machine.

While a travis run takes several hours to complete , I can run these scripts on
my (OS X) latop and (Linux) devserve, and get a more exhaustive set of results
back in around 10 minutes.
  • Loading branch information
davidtgoldblatt committed Jan 31, 2017
1 parent 6e7d089 commit 5260d9c
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
1 change: 1 addition & 0 deletions run_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$(dirname "$)")/scripts/gen_run_tests.py | bash
44 changes: 44 additions & 0 deletions scripts/gen_run_tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/usr/bin/env python

from itertools import combinations

def powerset(items):
result = []
for i in xrange(len(items) + 1):
result += combinations(items, i)
return result

MAKE_J_VAL = 32

possible_compilers = [('gcc', 'g++'), ('clang', 'clang++')]
possible_compiler_opts = [
'-m32',
]
possible_config_opts = [
'--enable-debug',
'--enable-prof',
'--disable-stats',
'--disable-tcache',
]

print 'set -e'
print 'autoconf'
print 'unamestr=`uname`'

for cc, cxx in possible_compilers:
for compiler_opts in powerset(possible_compiler_opts):
for config_opts in powerset(possible_config_opts):
config_line = (
'./configure '
+ 'CC="{} {}" '.format(cc, " ".join(compiler_opts))
+ 'CXX="{} {}" '.format(cxx, " ".join(compiler_opts))
+ " ".join(config_opts)
)
# Heap profiling is not supported on OS X.
if '--enable-prof' in config_opts:
print 'if [[ "$unamestr" != "Darwin" ]]; then'
print config_line
print "make clean"
print "make -j" + str(MAKE_J_VAL) + " check"
if '--enable-prof' in config_opts:
print 'fi'

0 comments on commit 5260d9c

Please sign in to comment.