diff options
author | GHC GitLab CI <ghc-ci@gitlab-haskell.org> | 2020-06-26 17:22:15 +0000 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2021-12-09 11:53:12 -0500 |
commit | c718d55b2bd3f6016901ccf0706e36311df79b81 (patch) | |
tree | 692e5dca1ac79fa0efb4af478ed8bbcc1fee0afd | |
parent | c9529c97db31a354b8aa5d5ae58591f5eb2cdd50 (diff) | |
download | haskell-c718d55b2bd3f6016901ccf0706e36311df79b81.tar.gz |
testsuite: Add --top flag to driver
This allows us to make `config.top` a proper Path. Previously it was a
str, which caused the Ghostscript detection logic to break.
(cherry picked from commit 4ce2f7d6e6a516173750b1d740f345e90992ffce)
-rw-r--r-- | hadrian/src/Settings/Builders/RunTest.hs | 2 | ||||
-rw-r--r-- | testsuite/driver/runtests.py | 7 | ||||
-rw-r--r-- | testsuite/driver/testglobals.py | 2 | ||||
-rw-r--r-- | testsuite/driver/testlib.py | 2 | ||||
-rw-r--r-- | testsuite/mk/test.mk | 4 |
5 files changed, 11 insertions, 6 deletions
diff --git a/hadrian/src/Settings/Builders/RunTest.hs b/hadrian/src/Settings/Builders/RunTest.hs index 6e04e56c34..2bbe805d9b 100644 --- a/hadrian/src/Settings/Builders/RunTest.hs +++ b/hadrian/src/Settings/Builders/RunTest.hs @@ -102,6 +102,7 @@ runTestBuilderArgs = builder RunTest ? do -- TODO: set CABAL_MINIMAL_BUILD/CABAL_PLUGIN_BUILD mconcat [ arg $ "testsuite/driver/runtests.py" , pure [ "--rootdir=" ++ testdir | testdir <- rootdirs ] + , arg "--top", arg (top -/- "testsuite") , arg "-e", arg $ "windows=" ++ show windowsHost , arg "-e", arg $ "darwin=" ++ show osxHost , arg "-e", arg $ "config.local=False" @@ -129,7 +130,6 @@ runTestBuilderArgs = builder RunTest ? do , arg "-e", arg $ "config.ghc_dynamic_by_default=" ++ show hasDynamicByDefault , arg "-e", arg $ "config.ghc_dynamic=" ++ show hasDynamic - , arg "-e", arg $ "config.top=" ++ show (top -/- "testsuite") , arg "-e", arg $ "config.wordsize=" ++ show wordsize , arg "-e", arg $ "config.os=" ++ show os , arg "-e", arg $ "config.arch=" ++ show arch diff --git a/testsuite/driver/runtests.py b/testsuite/driver/runtests.py index c1a31f8b13..f7650d9184 100644 --- a/testsuite/driver/runtests.py +++ b/testsuite/driver/runtests.py @@ -14,6 +14,7 @@ import tempfile import time import re import traceback +from pathlib import Path # We don't actually need subprocess in runtests.py, but: # * We do need it in testlibs.py @@ -56,6 +57,7 @@ parser = argparse.ArgumentParser(description="GHC's testsuite driver") perf_group = parser.add_mutually_exclusive_group() parser.add_argument("-e", action='append', help="A string to execute from the command line.") +parser.add_argument("--top", type=Path, help="path to top of testsuite/ tree") parser.add_argument("--config-file", action="append", help="config file") parser.add_argument("--config", action='append', help="config field") parser.add_argument("--rootdir", action='append', help="root of tree containing tests (default: .)") @@ -104,6 +106,9 @@ config.summary_file = args.summary_file config.no_print_summary = args.no_print_summary config.baseline_commit = args.perf_baseline +if args.top: + config.top = args.top + if args.only: config.only = args.only config.run_only_some_tests = True @@ -274,7 +279,7 @@ testopts_local.x = TestOptions() # if timeout == -1 then we try to calculate a sensible value if config.timeout == -1: - config.timeout = int(read_no_crs(config.top + '/timeout/calibrate.out')) + config.timeout = int(read_no_crs(config.top / 'timeout' / 'calibrate.out')) print('Timeout is ' + str(config.timeout)) print('Known ways: ' + ', '.join(config.other_ways)) diff --git a/testsuite/driver/testglobals.py b/testsuite/driver/testglobals.py index d762fee278..012ebf0672 100644 --- a/testsuite/driver/testglobals.py +++ b/testsuite/driver/testglobals.py @@ -22,7 +22,7 @@ class TestConfig: def __init__(self): # Where the testsuite root is - self.top = '' + self.top = Path('.') # Directories below which to look for test description files (foo.T) self.rootdirs = [] diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py index 6c066a3644..abfaa4f04d 100644 --- a/testsuite/driver/testlib.py +++ b/testsuite/driver/testlib.py @@ -1110,7 +1110,7 @@ def do_test(name: TestName, dst_makefile = in_testdir('Makefile') if src_makefile.exists(): makefile = src_makefile.read_text(encoding='UTF-8') - makefile = re.sub('TOP=.*', 'TOP=' + config.top, makefile, 1) + makefile = re.sub('TOP=.*', 'TOP=%s' % config.top, makefile, 1) dst_makefile.write_text(makefile, encoding='UTF-8') if opts.pre_cmd: diff --git a/testsuite/mk/test.mk b/testsuite/mk/test.mk index 9bfd861463..d65d4fbe8d 100644 --- a/testsuite/mk/test.mk +++ b/testsuite/mk/test.mk @@ -250,13 +250,13 @@ endif RUNTEST_OPTS += \ --rootdir=. \ --config-file=$(CONFIG) \ + --top="$(TOP_ABS)" \ -e 'config.platform="$(TARGETPLATFORM)"' \ -e 'config.os="$(TargetOS_CPP)"' \ -e 'config.arch="$(TargetARCH_CPP)"' \ -e 'config.wordsize="$(WORDSIZE)"' \ -e 'config.timeout=int($(TIMEOUT)) or config.timeout' \ - -e 'config.exeext="$(exeext)"' \ - -e 'config.top="$(TOP_ABS)"' + -e 'config.exeext="$(exeext)"' # Wrap non-empty program paths in quotes, because they may contain spaces. Do # it here, so we don't have to (and don't forget to do it) in the .T test |