[llvm] r283152 - [lit] Use argparse instead of optparse

Chris Bieneman via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 3 15:12:42 PDT 2016


Author: cbieneman
Date: Mon Oct  3 17:12:42 2016
New Revision: 283152

URL: http://llvm.org/viewvc/llvm-project?rev=283152&view=rev
Log:
[lit] Use argparse instead of optparse

Summary:
optparse is deprecated in Python 2.7, which is the minimum version of
Python required to run the LLVM test suite. Replace its usage in lit
with argparse, optparse's 2.7 replacement module.

argparse has several benefits over optparse, but this commit does not
make use of those benefits yet. Instead, it simply uses the new API,
and attempts to keep the number of changes to a minimum.

Confirmed that lit's test suite, as well as LLVM's regression test suite,
still pass with these changes.

Patch By Brian Gesiak!

Reviewers: ddunbar, echristo, beanz, delcypher

Subscribers: llvm-commits, mehdi_amini

Differential Revision: https://reviews.llvm.org/D25173

Modified:
    llvm/trunk/utils/lit/lit/main.py
    llvm/trunk/utils/lit/tests/usage.py

Modified: llvm/trunk/utils/lit/lit/main.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/main.py?rev=283152&r1=283151&r2=283152&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/main.py (original)
+++ llvm/trunk/utils/lit/lit/main.py Mon Oct  3 17:12:42 2016
@@ -13,6 +13,7 @@ import random
 import re
 import sys
 import time
+import argparse
 import tempfile
 import shutil
 
@@ -164,123 +165,121 @@ def main(builtinParameters = {}):
             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__,))

Modified: llvm/trunk/utils/lit/tests/usage.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/usage.py?rev=283152&r1=283151&r2=283152&view=diff
==============================================================================
--- llvm/trunk/utils/lit/tests/usage.py (original)
+++ llvm/trunk/utils/lit/tests/usage.py Mon Oct  3 17:12:42 2016
@@ -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]




More information about the llvm-commits mailing list