Index: utils/lit/lit/main.py =================================================================== --- utils/lit/lit/main.py +++ utils/lit/lit/main.py @@ -7,6 +7,7 @@ """ from __future__ import absolute_import +import argparse import math, os, platform, random, re, sys, time import tempfile import shutil @@ -159,123 +160,121 @@ shutil.rmtree(lit_tmp) def main_with_tmp(builtinParameters): - global options - from optparse import OptionParser, OptionGroup - parser = OptionParser("usage: %prog [options] {file-or-path}") + parser = argparse.ArgumentParser() + parser.add_argument('test_paths', + nargs='*', + help='Files or paths to include in the test suite') - parser.add_option("", "--version", dest="show_version", + parser.add_argument("--version", dest="show_version", help="Show version and exit", action="store_true", default=False) - parser.add_option("-j", "--threads", dest="numThreads", metavar="N", + parser.add_argument("-j", "--threads", dest="numThreads", metavar="N", help="Number of testing threads", - type=int, action="store", default=None) - parser.add_option("", "--config-prefix", dest="configPrefix", + type=int, default=None) + parser.add_argument("--config-prefix", dest="configPrefix", metavar="NAME", help="Prefix for 'lit' config files", action="store", default=None) - parser.add_option("-D", "--param", dest="userParameters", + parser.add_argument("-D", "--param", dest="userParameters", metavar="NAME=VAL", help="Add 'NAME' = 'VAL' to the user defined parameters", type=str, action="append", default=[]) - group = OptionGroup(parser, "Output Format") + format_group = parser.add_argument_group("Output Format") # FIXME: I find these names very confusing, although I like the # functionality. - group.add_option("-q", "--quiet", dest="quiet", + format_group.add_argument("-q", "--quiet", help="Suppress no error output", action="store_true", default=False) - group.add_option("-s", "--succinct", dest="succinct", + format_group.add_argument("-s", "--succinct", help="Reduce amount of output", action="store_true", default=False) - group.add_option("-v", "--verbose", dest="showOutput", + format_group.add_argument("-v", "--verbose", dest="showOutput", help="Show test output for failures", action="store_true", default=False) - group.add_option("-a", "--show-all", dest="showAllOutput", + format_group.add_argument("-a", "--show-all", dest="showAllOutput", help="Display all commandlines and output", action="store_true", default=False) - group.add_option("-o", "--output", dest="output_path", + format_group.add_argument("-o", "--output", dest="output_path", help="Write test results to the provided path", - action="store", type=str, metavar="PATH") - group.add_option("", "--no-progress-bar", dest="useProgressBar", + action="store", metavar="PATH") + format_group.add_argument("--no-progress-bar", dest="useProgressBar", help="Do not use curses based progress bar", action="store_false", default=True) - group.add_option("", "--show-unsupported", dest="show_unsupported", + format_group.add_argument("--show-unsupported", help="Show unsupported tests", action="store_true", default=False) - group.add_option("", "--show-xfail", dest="show_xfail", + format_group.add_argument("--show-xfail", help="Show tests that were expected to fail", action="store_true", default=False) - parser.add_option_group(group) - group = OptionGroup(parser, "Test Execution") - group.add_option("", "--path", dest="path", + execution_group = parser.add_argument_group("Test Execution") + execution_group.add_argument("--path", help="Additional paths to add to testing environment", action="append", type=str, default=[]) - group.add_option("", "--vg", dest="useValgrind", + execution_group.add_argument("--vg", dest="useValgrind", help="Run tests under valgrind", action="store_true", default=False) - group.add_option("", "--vg-leak", dest="valgrindLeakCheck", + execution_group.add_argument("--vg-leak", dest="valgrindLeakCheck", help="Check for memory leaks under valgrind", action="store_true", default=False) - group.add_option("", "--vg-arg", dest="valgrindArgs", metavar="ARG", + execution_group.add_argument("--vg-arg", dest="valgrindArgs", metavar="ARG", help="Specify an extra argument for valgrind", type=str, action="append", default=[]) - group.add_option("", "--time-tests", dest="timeTests", + execution_group.add_argument("--time-tests", dest="timeTests", help="Track elapsed wall time for each test", action="store_true", default=False) - group.add_option("", "--no-execute", dest="noExecute", + execution_group.add_argument("--no-execute", dest="noExecute", help="Don't execute any tests (assume PASS)", action="store_true", default=False) - group.add_option("", "--xunit-xml-output", dest="xunit_output_file", + execution_group.add_argument("--xunit-xml-output", dest="xunit_output_file", help=("Write XUnit-compatible XML test reports to the" " specified file"), default=None) - group.add_option("", "--timeout", dest="maxIndividualTestTime", + execution_group.add_argument("--timeout", dest="maxIndividualTestTime", help="Maximum time to spend running a single test (in seconds)." "0 means no time limit. [Default: 0]", type=int, default=None) - group.add_option("", "--max-failures", dest="maxFailures", + execution_group.add_argument("--max-failures", dest="maxFailures", help="Stop execution after the given number of failures.", action="store", type=int, default=None) - parser.add_option_group(group) - group = OptionGroup(parser, "Test Selection") - group.add_option("", "--max-tests", dest="maxTests", metavar="N", + selection_group = parser.add_argument_group("Test Selection") + selection_group.add_argument("--max-tests", dest="maxTests", metavar="N", help="Maximum number of tests to run", action="store", type=int, default=None) - group.add_option("", "--max-time", dest="maxTime", metavar="N", + selection_group.add_argument("--max-time", dest="maxTime", metavar="N", help="Maximum time to spend testing (in seconds)", action="store", type=float, default=None) - group.add_option("", "--shuffle", dest="shuffle", + selection_group.add_argument("--shuffle", help="Run tests in random order", action="store_true", default=False) - group.add_option("-i", "--incremental", dest="incremental", + selection_group.add_argument("-i", "--incremental", help="Run modified and failing tests first (updates " "mtimes)", action="store_true", default=False) - group.add_option("", "--filter", dest="filter", metavar="REGEX", + selection_group.add_argument("--filter", metavar="REGEX", help=("Only run tests with paths matching the given " "regular expression"), action="store", default=None) - parser.add_option_group(group) - group = OptionGroup(parser, "Debug and Experimental Options") - group.add_option("", "--debug", dest="debug", + debug_group = parser.add_argument_group("Debug and Experimental Options") + debug_group.add_argument("--debug", help="Enable debugging (for 'lit' development)", action="store_true", default=False) - group.add_option("", "--show-suites", dest="showSuites", + debug_group.add_argument("--show-suites", dest="showSuites", help="Show discovered test suites", action="store_true", default=False) - group.add_option("", "--show-tests", dest="showTests", + debug_group.add_argument("--show-tests", dest="showTests", help="Show all discovered tests", action="store_true", default=False) - group.add_option("", "--use-processes", dest="useProcesses", + debug_group.add_argument("--use-processes", dest="useProcesses", help="Run tests in parallel with processes (not threads)", action="store_true", default=True) - group.add_option("", "--use-threads", dest="useProcesses", + debug_group.add_argument("--use-threads", dest="useProcesses", help="Run tests in parallel with threads (not processes)", action="store_false", default=True) - parser.add_option_group(group) - (opts, args) = parser.parse_args() + opts = parser.parse_args() + args = opts.test_paths if opts.show_version: print("lit %s" % (lit.__version__,)) Index: utils/lit/tests/usage.py =================================================================== --- utils/lit/tests/usage.py +++ utils/lit/tests/usage.py @@ -3,4 +3,4 @@ # RUN: %{lit} --help > %t.out # RUN: FileCheck < %t.out %s # -# CHECK: Usage: lit.py [options] {file-or-path} +# CHECK: usage: lit.py [-h]