From 5260d9c12f8f83e4f37a28593d197638ad3d4e56 Mon Sep 17 00:00:00 2001 From: David Goldblatt Date: Fri, 27 Jan 2017 13:16:56 -0800 Subject: [PATCH] Introduce scripts to run all possible tests In 6e7d0890 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. --- run_tests.sh | 1 + scripts/gen_run_tests.py | 44 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100755 run_tests.sh create mode 100755 scripts/gen_run_tests.py diff --git a/run_tests.sh b/run_tests.sh new file mode 100755 index 0000000000..b434f15b33 --- /dev/null +++ b/run_tests.sh @@ -0,0 +1 @@ +$(dirname "$)")/scripts/gen_run_tests.py | bash diff --git a/scripts/gen_run_tests.py b/scripts/gen_run_tests.py new file mode 100755 index 0000000000..694685cb2a --- /dev/null +++ b/scripts/gen_run_tests.py @@ -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'