[commit: ghc] master: Switched out optparse for argparse in runtests.py (5e940bd)
git at git.haskell.org
git at git.haskell.org
Fri Jul 28 16:37:06 UTC 2017
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/5e940bd3d554729ce650008a72b4f82a78578a7b/ghc
>---------------------------------------------------------------
commit 5e940bd3d554729ce650008a72b4f82a78578a7b
Author: Jared Weakly <jweakly at pdx.edu>
Date: Thu Jul 27 14:33:16 2017 -0400
Switched out optparse for argparse in runtests.py
Tangentially related to my prior work on trac ticket #12758.
Signed-off-by: Jared Weakly <jweakly at pdx.edu>
Reviewers: austin, bgamari
Subscribers: rwbarton, thomie
Differential Revision: https://phabricator.haskell.org/D3792
>---------------------------------------------------------------
5e940bd3d554729ce650008a72b4f82a78578a7b
testsuite/driver/runtests.py | 134 ++++++++++++++++++-------------------------
testsuite/mk/test.mk | 6 +-
2 files changed, 60 insertions(+), 80 deletions(-)
diff --git a/testsuite/driver/runtests.py b/testsuite/driver/runtests.py
index 7e4f375..f7064a5 100644
--- a/testsuite/driver/runtests.py
+++ b/testsuite/driver/runtests.py
@@ -6,11 +6,11 @@
from __future__ import print_function
+import argparse
import signal
import sys
import os
import string
-import getopt
import shutil
import tempfile
import time
@@ -41,81 +41,61 @@ def signal_handler(signal, frame):
# -----------------------------------------------------------------------------
# cmd-line options
-long_options = [
- "configfile=", # config file
- "config=", # config field
- "rootdir=", # root of tree containing tests (default: .)
- "summary-file=", # file in which to save the (human-readable) summary
- "no-print-summary=", # should we print the summary?
- "only=", # just this test (can be give multiple --only= flags)
- "way=", # just this way
- "skipway=", # skip this way
- "threads=", # threads to run simultaneously
- "check-files-written", # check files aren't written by multiple tests
- "verbose=", # verbose (0,1,2 so far)
- "skip-perf-tests", # skip performance tests
- ]
-
-opts, args = getopt.getopt(sys.argv[1:], "e:", long_options)
-
-for opt,arg in opts:
- if opt == '--configfile':
- exec(open(arg).read())
-
- # -e is a string to execute from the command line. For example:
- # testframe -e 'config.compiler=ghc-5.04'
- if opt == '-e':
- exec(arg)
-
- if opt == '--config':
- field, value = arg.split('=', 1)
- setattr(config, field, value)
-
- if opt == '--rootdir':
- config.rootdirs.append(arg)
-
- if opt == '--summary-file':
- config.summary_file = arg
-
- if opt == '--no-print-summary':
- config.no_print_summary = True
-
- if opt == '--only':
- config.run_only_some_tests = True
- config.only.add(arg)
-
- if opt == '--way':
- if (arg not in config.run_ways and arg not in config.compile_ways and arg not in config.other_ways):
- sys.stderr.write("ERROR: requested way \'" +
- arg + "\' does not exist\n")
- sys.exit(1)
- config.cmdline_ways = [arg] + config.cmdline_ways
- if (arg in config.other_ways):
- config.run_ways = [arg] + config.run_ways
- config.compile_ways = [arg] + config.compile_ways
-
- if opt == '--skipway':
- if (arg not in config.run_ways and arg not in config.compile_ways and arg not in config.other_ways):
- sys.stderr.write("ERROR: requested way \'" +
- arg + "\' does not exist\n")
- sys.exit(1)
- config.other_ways = [w for w in config.other_ways if w != arg]
- config.run_ways = [w for w in config.run_ways if w != arg]
- config.compile_ways = [w for w in config.compile_ways if w != arg]
-
- if opt == '--threads':
- config.threads = int(arg)
- config.use_threads = 1
-
- if opt == '--skip-perf-tests':
- config.skip_perf_tests = True
-
- if opt == '--verbose':
- if arg not in ["0","1","2","3","4","5"]:
- sys.stderr.write("ERROR: requested verbosity %s not supported, use 0,1,2,3,4 or 5" % arg)
- sys.exit(1)
- config.verbose = int(arg)
-
+parser = argparse.ArgumentParser(description="GHC's testsuite driver",
+ allow_abbrev=False)
+
+parser.add_argument("-e", action='append', help="A string to execute from the command line.")
+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: .)")
+parser.add_argument("--summary-file", help="file in which to save the (human-readable) summary")
+parser.add_argument("--no-print-summary", action="store_true", help="should we print the summary?")
+parser.add_argument("--only", action="append", help="just this test (can be give multiple --only= flags)")
+parser.add_argument("--way", choices=config.run_ways+config.compile_ways+config.other_ways, help="just this way")
+parser.add_argument("--skipway", action="append", choices=config.run_ways+config.compile_ways+config.other_ways, help="skip this way")
+parser.add_argument("--threads", type=int, help="threads to run simultaneously")
+parser.add_argument("--check-files-written", help="check files aren't written by multiple tests") # NOTE: This doesn't seem to exist?
+parser.add_argument("--verbose", type=int, choices=[0,1,2,3,4,5], help="verbose (Values 0 through 5 accepted)")
+parser.add_argument("--skip-perf-tests", action="store_true", help="skip performance tests")
+
+args = parser.parse_args()
+
+for e in args.e:
+ exec(e)
+
+for arg in args.config_file:
+ exec(open(arg).read())
+
+for arg in args.config:
+ field, value = arg.split('=', 1)
+ setattr(config, field, value)
+
+config.rootdirs = args.rootdir
+config.summary_file = args.summary_file
+config.no_print_summary = args.no_print_summary
+
+if args.only:
+ config.only = args.only
+ config.run_only_some_tests = True
+
+if args.way:
+ config.cmdline_ways = [args.way] + config.cmdline_ways
+ if (args.way in config.other_ways):
+ config.run_ways = [args.way] + config.run_ways
+ config.compile_ways = [args.way] + config.compile_ways
+
+if args.skipway:
+ config.other_ways = [w for w in config.other_ways if w != args.skipway]
+ config.run_ways = [w for w in config.run_ways if w != args.skipway]
+ config.compile_ways = [w for w in config.compile_ways if w != args.skipway]
+
+if args.threads:
+ config.threads = args.threads
+ config.use_threads = True
+
+if args.verbose:
+ config.verbose = args.verbose
+config.skip_perf_tests = args.skip_perf_tests
config.cygwin = False
config.msys = False
@@ -326,7 +306,7 @@ else:
summary(t, sys.stdout, config.no_print_summary)
- if config.summary_file != '':
+ if config.summary_file:
with open(config.summary_file, 'w') as file:
summary(t, file)
diff --git a/testsuite/mk/test.mk b/testsuite/mk/test.mk
index a44e200..6c39636 100644
--- a/testsuite/mk/test.mk
+++ b/testsuite/mk/test.mk
@@ -73,7 +73,7 @@ else
dllext = .so
endif
-RUNTEST_OPTS += -e ghc_compiler_always_flags="'$(TEST_HC_OPTS)'"
+RUNTEST_OPTS += -e "ghc_compiler_always_flags='$(TEST_HC_OPTS)'"
RUNTEST_OPTS += -e config.compiler_debugged=$(GhcDebugged)
@@ -214,7 +214,7 @@ endif
RUNTEST_OPTS += \
--rootdir=. \
- --configfile=$(CONFIG) \
+ --config-file=$(CONFIG) \
-e 'config.confdir="$(CONFIGDIR)"' \
-e 'config.platform="$(TARGETPLATFORM)"' \
-e 'config.os="$(TargetOS_CPP)"' \
@@ -252,7 +252,7 @@ RUNTEST_OPTS += \
endif
ifeq "$(NO_PRINT_SUMMARY)" "YES"
RUNTEST_OPTS += \
- --no-print-summary 1
+ --no-print-summary
endif
RUNTEST_OPTS += \
More information about the ghc-commits
mailing list