summaryrefslogtreecommitdiff
path: root/runtests.py
diff options
context:
space:
mode:
Diffstat (limited to 'runtests.py')
-rwxr-xr-xruntests.py31
1 files changed, 27 insertions, 4 deletions
diff --git a/runtests.py b/runtests.py
index 7a72ca517..976a0cbbf 100755
--- a/runtests.py
+++ b/runtests.py
@@ -13,6 +13,7 @@ Examples::
$ python runtests.py --ipython
$ python runtests.py --python somescript.py
$ python runtests.py --bench
+ $ python runtests.py --timer 20
Run a debugger:
@@ -77,6 +78,8 @@ def main(argv):
parser.add_argument("--coverage", action="store_true", default=False,
help=("report coverage of project code. HTML output goes "
"under build/coverage"))
+ parser.add_argument("--timer", action="store", default=0, type=int,
+ help=("Time N slowest test"))
parser.add_argument("--gcov", action="store_true", default=False,
help=("enable C code coverage via gcov (requires GCC). "
"gcov output goes to build/**/*.gc*"))
@@ -112,11 +115,22 @@ def main(argv):
"Note that you need to commit your changes first!"))
parser.add_argument("--raise-warnings", default=None, type=str,
choices=('develop', 'release'),
- help="if 'develop', warnings are treated as errors")
+ help=("if 'develop', warnings are treated as errors; "
+ "defaults to 'develop' in development versions."))
parser.add_argument("args", metavar="ARGS", default=[], nargs=REMAINDER,
help="Arguments to pass to Nose, Python or shell")
args = parser.parse_args(argv)
+ if args.timer == 0:
+ timer = False
+ elif args.timer == -1:
+ timer = True
+ elif args.timer > 0:
+ timer = int(args.timer)
+ else:
+ raise ValueError("--timer value should be an integer, -1 or >0")
+ args.timer = timer
+
if args.bench_compare:
args.bench = True
args.no_build = True # ASV does the building
@@ -143,6 +157,9 @@ def main(argv):
sys.path.insert(0, site_dir)
sys.path.insert(0, site_dir_noarch)
os.environ['PYTHONPATH'] = site_dir + os.pathsep + site_dir_noarch
+ else:
+ _temp = __import__(PROJECT_MODULE)
+ site_dir = os.path.sep.join(_temp.__file__.split(os.path.sep)[:-2])
extra_argv = args.args[:]
if extra_argv and extra_argv[0] == '--':
@@ -259,8 +276,7 @@ def main(argv):
def fix_test_path(x):
# fix up test path
p = x.split(':')
- p[0] = os.path.relpath(os.path.abspath(p[0]),
- test_dir)
+ p[0] = os.path.join(site_dir, p[0])
return ':'.join(p)
tests = [fix_test_path(x) for x in args.tests]
@@ -269,7 +285,13 @@ def main(argv):
extra_argv = kw.pop('extra_argv', ())
extra_argv = extra_argv + tests[1:]
kw['extra_argv'] = extra_argv
+ import numpy as np
from numpy.testing import Tester
+ if kw["raise_warnings"] is None:
+ if hasattr(np, "__version__") and ".dev0" in np.__version__:
+ kw["raise_warnings"] = "develop"
+ else:
+ kw["raise_warnings"] = "release"
return Tester(tests[0]).test(*a, **kw)
else:
__import__(PROJECT_MODULE)
@@ -293,7 +315,8 @@ def main(argv):
extra_argv=extra_argv,
doctests=args.doctests,
raise_warnings=args.raise_warnings,
- coverage=args.coverage)
+ coverage=args.coverage,
+ timer=args.timer)
finally:
os.chdir(cwd)