[Lldb-commits] [lldb] r237602 - Refactored dotest arg parser so that it's accessible from dosep

Vince Harron vince at nethacker.com
Fri May 22 07:56:24 PDT 2015


Up for review

http://reviews.llvm.org/D9937

On Thu, May 21, 2015 at 4:17 PM, Vince Harron <vince at nethacker.com> wrote:

> Yeah, on it.
>
> On Thu, May 21, 2015 at 4:03 PM, Zachary Turner <zturner at google.com>
> wrote:
>
>> This breaks dotest.py --help, and many other command line options.
>>
>> Would you mind fixing this?  I took a stab at it but it turns out to be a
>> little more involved than I have time for.
>>
>> On Mon, May 18, 2015 at 12:45 PM Vince Harron <vince at nethacker.com>
>> wrote:
>>
>>> Author: vharron
>>> Date: Mon May 18 14:40:54 2015
>>> New Revision: 237602
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=237602&view=rev
>>> Log:
>>> Refactored dotest arg parser so that it's accessible from dosep
>>>
>>> This allows dosep to understand an act on dotest arguments
>>>
>>> Differential Revision: http://reviews.llvm.org/D9820
>>>
>>>
>>> Added:
>>>     lldb/trunk/test/dotest_args.py
>>> Modified:
>>>     lldb/trunk/test/dosep.py
>>>     lldb/trunk/test/dotest.py
>>>
>>> Modified: lldb/trunk/test/dosep.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/dosep.py?rev=237602&r1=237601&r2=237602&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/test/dosep.py (original)
>>> +++ lldb/trunk/test/dosep.py Mon May 18 14:40:54 2015
>>> @@ -25,6 +25,7 @@ import multiprocessing
>>>  import os
>>>  import platform
>>>  import re
>>> +import dotest_args
>>>  import shlex
>>>  import subprocess
>>>  import sys
>>> @@ -152,16 +153,16 @@ def walk_and_invoke(test_directory, test
>>>
>>>      return (timed_out, failed, passed)
>>>
>>> -def getExpectedTimeouts(dotest_options):
>>> +def getExpectedTimeouts(platform_name):
>>>      # returns a set of test filenames that might timeout
>>>      # are we running against a remote target?
>>> -    m = re.search('\sremote-(\w+)', dotest_options)
>>> -    if m:
>>> -        target = m.group(1)
>>> -        remote = True
>>> -    else:
>>> +    if platform_name is None:
>>>          target = sys.platform
>>>          remote = False
>>> +    else:
>>> +        m = re.search('remote-(\w+)', platform_name)
>>> +        target = m.group(1)
>>> +        remote = True
>>>
>>>      expected_timeout = set()
>>>
>>> @@ -225,7 +226,10 @@ Run lldb test suite using a separate pro
>>>                        help="""The number of threads to use when running
>>> tests separately.""")
>>>
>>>      opts, args = parser.parse_args()
>>> -    dotest_options = opts.dotest_options
>>> +    dotest_option_string = opts.dotest_options
>>> +
>>> +    dotest_argv = shlex.split(dotest_option_string)
>>> +    dotest_options = dotest_args.getArguments(dotest_argv)
>>>
>>>      # The root directory was specified on the command line
>>>      if len(args) == 0:
>>> @@ -245,13 +249,13 @@ Run lldb test suite using a separate pro
>>>          num_threads = 1
>>>
>>>      system_info = " ".join(platform.uname())
>>> -    (timed_out, failed, passed) = walk_and_invoke(test_directory,
>>> test_subdir, dotest_options,
>>> +    (timed_out, failed, passed) = walk_and_invoke(test_directory,
>>> test_subdir, dotest_option_string,
>>>                                                    num_threads)
>>>      timed_out = set(timed_out)
>>>      num_tests = len(failed) + len(passed)
>>>
>>>      # remove expected timeouts from failures
>>> -    expected_timeout = getExpectedTimeouts(dotest_options)
>>> +    expected_timeout =
>>> getExpectedTimeouts(dotest_options.lldb_platform_name)
>>>      for xtime in expected_timeout:
>>>          if xtime in timed_out:
>>>              timed_out.remove(xtime)
>>>
>>> Modified: lldb/trunk/test/dotest.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/dotest.py?rev=237602&r1=237601&r2=237602&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/test/dotest.py (original)
>>> +++ lldb/trunk/test/dotest.py Mon May 18 14:40:54 2015
>>> @@ -22,6 +22,7 @@ for available options.
>>>
>>>  import commands
>>>  import os
>>> +import dotest_args
>>>  import errno
>>>  import platform
>>>  import progress
>>> @@ -34,26 +35,6 @@ import inspect
>>>  import unittest2
>>>  import lldbtest_config
>>>
>>> -if sys.version_info >= (2, 7):
>>> -    argparse = __import__('argparse')
>>> -else:
>>> -    argparse = __import__('argparse_compat')
>>> -
>>> -def parse_args(parser):
>>> -    """ Returns an argument object. LLDB_TEST_ARGUMENTS environment
>>> variable can
>>> -        be used to pass additional arguments if a compatible (>=2.7)
>>> argparse
>>> -        library is available.
>>> -    """
>>> -    if sys.version_info >= (2, 7):
>>> -        args = ArgParseNamespace()
>>> -
>>> -        if ('LLDB_TEST_ARGUMENTS' in os.environ):
>>> -            print "Arguments passed through environment: '%s'" %
>>> os.environ['LLDB_TEST_ARGUMENTS']
>>> -            args =
>>> parser.parse_args([sys.argv[0]].__add__(os.environ['LLDB_TEST_ARGUMENTS'].split()),namespace=args)
>>> -
>>> -        return parser.parse_args(namespace=args)
>>> -    else:
>>> -        return parser.parse_args()
>>>
>>>  def is_exe(fpath):
>>>      """Returns true if fpath is an executable."""
>>> @@ -388,9 +369,6 @@ def unique_string_match(yourentry,list):
>>>                         candidate = item
>>>         return candidate
>>>
>>> -class ArgParseNamespace(object):
>>> -    pass
>>> -
>>>  def validate_categories(categories):
>>>      """For each category in categories, ensure that it's a valid
>>> category (or a prefix thereof).
>>>         If a category is invalid, print a message and quit.
>>> @@ -513,93 +491,7 @@ def parseOptionsAndInitTestdirs():
>>>      platform_system = platform.system()
>>>      platform_machine = platform.machine()
>>>
>>> -    parser = argparse.ArgumentParser(description='description',
>>> prefix_chars='+-', add_help=False)
>>> -    group = None
>>> -
>>> -    # Helper function for boolean options (group will point to the
>>> current group when executing X)
>>> -    X = lambda optstr, helpstr, **kwargs: group.add_argument(optstr,
>>> help=helpstr, action='store_true', **kwargs)
>>> -
>>> -    group = parser.add_argument_group('Help')
>>> -    group.add_argument('-h', '--help', dest='h', action='store_true',
>>> help="Print this help message and exit.  Add '-v' for more detailed help.")
>>> -
>>> -    # C and Python toolchain options
>>> -    group = parser.add_argument_group('Toolchain options')
>>> -    group.add_argument('-A', '--arch', metavar='arch', action='append',
>>> dest='archs', help=textwrap.dedent('''Specify the architecture(s) to test.
>>> This option can be specified more than once'''))
>>> -    group.add_argument('-C', '--compiler', metavar='compiler',
>>> dest='compilers', action='append', help=textwrap.dedent('''Specify the
>>> compiler(s) used to build the inferior executables. The compiler path can
>>> be an executable basename or a full path to a compiler executable. This
>>> option can be specified multiple times.'''))
>>> -    if platform_system == 'Darwin':
>>> -        group.add_argument('--apple-sdk', metavar='apple_sdk',
>>> dest='apple_sdk', help=textwrap.dedent('''Specify the name of the Apple SDK
>>> (macosx, macosx.internal, iphoneos, iphoneos.internal, or path to SDK) and
>>> use the appropriate tools from that SDK's toolchain.'''))
>>> -    # FIXME? This won't work for different extra flags according to
>>> each arch.
>>> -    group.add_argument('-E', metavar='extra-flags',
>>> help=textwrap.dedent('''Specify the extra flags to be passed to the
>>> toolchain when building the inferior programs to be debugged
>>> -                                                           suggestions:
>>> do not lump the "-A arch1 -A arch2" together such that the -E option
>>> applies to only one of the architectures'''))
>>> -    X('-D', 'Dump the Python sys.path variable')
>>> -
>>> -    # Test filtering options
>>> -    group = parser.add_argument_group('Test filtering options')
>>> -    group.add_argument('-N', choices=['dwarf', 'dsym'], help="Don't do
>>> test cases marked with the @dsym decorator by passing 'dsym' as the option
>>> arg, or don't do test cases marked with the @dwarf decorator by passing
>>> 'dwarf' as the option arg")
>>> -    X('-a', "Don't do lldb Python API tests")
>>> -    X('+a', "Just do lldb Python API tests. Do not specify along with
>>> '-a'", dest='plus_a')
>>> -    X('+b', 'Just do benchmark tests', dest='plus_b')
>>> -    group.add_argument('-b', metavar='blacklist', help='Read a
>>> blacklist file specified after this option')
>>> -    group.add_argument('-f', metavar='filterspec', action='append',
>>> help='Specify a filter, which consists of the test class name, a dot,
>>> followed by the test method, to only admit such test into the test suite')
>>> # FIXME: Example?
>>> -    X('-g', 'If specified, the filterspec by -f is not exclusive, i.e.,
>>> if a test module does not match the filterspec (testclass.testmethod), the
>>> whole module is still admitted to the test suite')
>>> -    X('-l', "Don't skip long running tests")
>>> -    X('-m', "Don't do lldb-mi tests")
>>> -    X('+m', "Just do lldb-mi tests. Do not specify along with '-m'",
>>> dest='plus_m')
>>> -    group.add_argument('-p', metavar='pattern', help='Specify a regexp
>>> filename pattern for inclusion in the test suite')
>>> -    group.add_argument('-X', metavar='directory', help="Exclude a
>>> directory from consideration for test discovery. -X types => if 'types'
>>> appear in the pathname components of a potential testfile, it will be
>>> ignored")
>>> -    group.add_argument('-G', '--category', metavar='category',
>>> action='append', dest='categoriesList', help=textwrap.dedent('''Specify
>>> categories of test cases of interest. Can be specified more than once.'''))
>>> -    group.add_argument('--skip-category', metavar='category',
>>> action='append', dest='skipCategories', help=textwrap.dedent('''Specify
>>> categories of test cases to skip. Takes precedence over -G. Can be
>>> specified more than once.'''))
>>> -
>>> -    # Configuration options
>>> -    group = parser.add_argument_group('Configuration options')
>>> -    group.add_argument('-c', metavar='config-file', help='Read a config
>>> file specified after this option')  # FIXME: additional doc.
>>> -    group.add_argument('--framework', metavar='framework-path',
>>> help='The path to LLDB.framework')
>>> -    group.add_argument('--executable', metavar='executable-path',
>>> help='The path to the lldb executable')
>>> -    group.add_argument('--libcxx', metavar='directory', help='The path
>>> to custom libc++ library')
>>> -    group.add_argument('-e', metavar='benchmark-exe', help='Specify the
>>> full path of an executable used for benchmark purposes (see also: -x)')
>>> -    group.add_argument('-k', metavar='command', action='append',
>>> help="Specify a runhook, which is an lldb command to be executed by the
>>> debugger; The option can occur multiple times. The commands are executed
>>> one after the other to bring the debugger to a desired state, so that, for
>>> example, further benchmarking can be done")
>>> -    group.add_argument('-R', metavar='dir', help='Specify a directory
>>> to relocate the tests and their intermediate files to. BE WARNED THAT the
>>> directory, if exists, will be deleted before running this test driver. No
>>> cleanup of intermediate test files is performed in this case')
>>> -    group.add_argument('-r', metavar='dir', help="Similar to '-R',
>>> except that the directory must not exist before running this test driver")
>>> -    group.add_argument('-s', metavar='name', help='Specify the name of
>>> the dir created to store the session files of tests with errored or failed
>>> status. If not specified, the test driver uses the timestamp as the session
>>> dir name')
>>> -    group.add_argument('-x', metavar='breakpoint-spec', help='Specify
>>> the breakpoint specification for the benchmark executable')
>>> -    group.add_argument('-y', type=int, metavar='count', help="Specify
>>> the iteration count used to collect our benchmarks. An example is the
>>> number of times to do 'thread step-over' to measure stepping speed.")
>>> -    group.add_argument('-#', type=int, metavar='sharp', dest='sharp',
>>> help='Repeat the test suite for a specified number of times')
>>> -    group.add_argument('--channel', metavar='channel', dest='channels',
>>> action='append', help=textwrap.dedent("Specify the log channels (and
>>> optional categories) e.g. 'lldb all' or 'gdb-remote packets' if no
>>> categories are specified, 'default' is used"))
>>> -    group.add_argument('--log-success', dest='log_success',
>>> action='store_true', help="Leave logs/traces even for successful test runs
>>> (useful for creating reference log files during debugging.)")
>>> -
>>> -    # Configuration options
>>> -    group = parser.add_argument_group('Remote platform options')
>>> -    group.add_argument('--platform-name', dest='lldb_platform_name',
>>> metavar='platform-name', help='The name of a remote platform to use')
>>> -    group.add_argument('--platform-url', dest='lldb_platform_url',
>>> metavar='platform-url', help='A LLDB platform URL to use when connecting to
>>> a remote platform to run the test suite')
>>> -    group.add_argument('--platform-working-dir',
>>> dest='lldb_platform_working_dir', metavar='platform-working-dir', help='The
>>> directory to use on the remote platform.')
>>> -
>>> -    # Test-suite behaviour
>>> -    group = parser.add_argument_group('Runtime behaviour options')
>>> -    X('-d', 'Suspend the process after launch to wait indefinitely for
>>> a debugger to attach')
>>> -    X('-F', 'Fail fast. Stop the test suite on the first error/failure')
>>> -    X('-i', "Ignore (don't bailout) if 'lldb.py' module cannot be
>>> located in the build tree relative to this script; use PYTHONPATH to locate
>>> the module")
>>> -    X('-n', "Don't print the headers like build dir, lldb version, and
>>> svn info at all")
>>> -    X('-P', "Use the graphic progress bar.")
>>> -    X('-q', "Don't print extra output from this script.")
>>> -    X('-S', "Skip the build and cleanup while running the test. Use
>>> this option with care as you would need to build the inferior(s) by hand
>>> and build the executable(s) with the correct name(s). This can be used with
>>> '-# n' to stress test certain test cases for n number of times")
>>> -    X('-t', 'Turn on tracing of lldb command and other detailed test
>>> executions')
>>> -    group.add_argument('-u', dest='unset_env_varnames',
>>> metavar='variable', action='append', help='Specify an environment variable
>>> to unset before running the test cases. e.g., -u DYLD_INSERT_LIBRARIES -u
>>> MallocScribble')
>>> -    group.add_argument('--env', dest='set_env_vars',
>>> metavar='variable', action='append', help='Specify an environment variable
>>> to set to the given value before running the test cases e.g.: --env
>>> CXXFLAGS=-O3 --env DYLD_INSERT_LIBRARIES')
>>> -    X('-v', 'Do verbose mode of unittest framework (print out each test
>>> case invocation)')
>>> -    X('-w', 'Insert some wait time (currently 0.5 sec) between
>>> consecutive test cases')
>>> -    X('-T', 'Obtain and dump svn information for this checkout of LLDB
>>> (off by default)')
>>> -    group.add_argument('--enable-crash-dialog',
>>> dest='disable_crash_dialog', action='store_false', help='(Windows only)
>>> When LLDB crashes, display the Windows crash dialog.')
>>> -    group.add_argument('--show-inferior-console',
>>> dest='hide_inferior_console', action='store_false', help='(Windows only)
>>> When launching an inferior, dont hide its console window.')
>>> -    group.set_defaults(disable_crash_dialog=True)
>>> -    group.set_defaults(hide_inferior_console=True)
>>> -
>>> -    # Remove the reference to our helper function
>>> -    del X
>>> -
>>> -    group = parser.add_argument_group('Test directories')
>>> -    group.add_argument('args', metavar='test-dir', nargs='*',
>>> help='Specify a list of directory names to search for test modules named
>>> after Test*.py (test discovery). If empty, search from the current working
>>> directory instead.')
>>> -
>>> -    args = parse_args(parser)
>>> +    args = dotest_args.getArguments(sys.argv[1:])
>>>
>>>      if args.unset_env_varnames:
>>>          for env_var in args.unset_env_varnames:
>>>
>>> Added: lldb/trunk/test/dotest_args.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/dotest_args.py?rev=237602&view=auto
>>>
>>> ==============================================================================
>>> --- lldb/trunk/test/dotest_args.py (added)
>>> +++ lldb/trunk/test/dotest_args.py Mon May 18 14:40:54 2015
>>> @@ -0,0 +1,117 @@
>>> +import sys
>>> +import os
>>> +import textwrap
>>> +
>>> +if sys.version_info >= (2, 7):
>>> +    argparse = __import__('argparse')
>>> +else:
>>> +    argparse = __import__('argparse_compat')
>>> +
>>> +class ArgParseNamespace(object):
>>> +    pass
>>> +
>>> +def parse_args(parser, argv):
>>> +    """ Returns an argument object. LLDB_TEST_ARGUMENTS environment
>>> variable can
>>> +        be used to pass additional arguments if a compatible (>=2.7)
>>> argparse
>>> +        library is available.
>>> +    """
>>> +    if sys.version_info >= (2, 7):
>>> +        args = ArgParseNamespace()
>>> +
>>> +        if ('LLDB_TEST_ARGUMENTS' in os.environ):
>>> +            print "Arguments passed through environment: '%s'" %
>>> os.environ['LLDB_TEST_ARGUMENTS']
>>> +            args =
>>> parser.parse_args([sys.argv[0]].__add__(os.environ['LLDB_TEST_ARGUMENTS'].split()),namespace=args)
>>> +
>>> +        return parser.parse_args(args=argv, namespace=args)
>>> +    else:
>>> +        return parser.parse_args(args=argv)
>>> +
>>> +def getArguments(argv):
>>> +
>>> +    parser = argparse.ArgumentParser(description='description',
>>> prefix_chars='+-', add_help=False)
>>> +    group = None
>>> +
>>> +    # Helper function for boolean options (group will point to the
>>> current group when executing X)
>>> +    X = lambda optstr, helpstr, **kwargs: group.add_argument(optstr,
>>> help=helpstr, action='store_true', **kwargs)
>>> +
>>> +    group = parser.add_argument_group('Help')
>>> +    group.add_argument('-h', '--help', dest='h', action='store_true',
>>> help="Print this help message and exit.  Add '-v' for more detailed help.")
>>> +
>>> +    # C and Python toolchain options
>>> +    group = parser.add_argument_group('Toolchain options')
>>> +    group.add_argument('-A', '--arch', metavar='arch', action='append',
>>> dest='archs', help=textwrap.dedent('''Specify the architecture(s) to test.
>>> This option can be specified more than once'''))
>>> +    group.add_argument('-C', '--compiler', metavar='compiler',
>>> dest='compilers', action='append', help=textwrap.dedent('''Specify the
>>> compiler(s) used to build the inferior executables. The compiler path can
>>> be an executable basename or a full path to a compiler executable. This
>>> option can be specified multiple times.'''))
>>> +    if sys.platform == 'darwin':
>>> +        group.add_argument('--apple-sdk', metavar='apple_sdk',
>>> dest='apple_sdk', help=textwrap.dedent('''Specify the name of the Apple SDK
>>> (macosx, macosx.internal, iphoneos, iphoneos.internal, or path to SDK) and
>>> use the appropriate tools from that SDK's toolchain.'''))
>>> +    # FIXME? This won't work for different extra flags according to
>>> each arch.
>>> +    group.add_argument('-E', metavar='extra-flags',
>>> help=textwrap.dedent('''Specify the extra flags to be passed to the
>>> toolchain when building the inferior programs to be debugged
>>> +                                                           suggestions:
>>> do not lump the "-A arch1 -A arch2" together such that the -E option
>>> applies to only one of the architectures'''))
>>> +    X('-D', 'Dump the Python sys.path variable')
>>> +
>>> +    # Test filtering options
>>> +    group = parser.add_argument_group('Test filtering options')
>>> +    group.add_argument('-N', choices=['dwarf', 'dsym'], help="Don't do
>>> test cases marked with the @dsym decorator by passing 'dsym' as the option
>>> arg, or don't do test cases marked with the @dwarf decorator by passing
>>> 'dwarf' as the option arg")
>>> +    X('-a', "Don't do lldb Python API tests")
>>> +    X('+a', "Just do lldb Python API tests. Do not specify along with
>>> '-a'", dest='plus_a')
>>> +    X('+b', 'Just do benchmark tests', dest='plus_b')
>>> +    group.add_argument('-b', metavar='blacklist', help='Read a
>>> blacklist file specified after this option')
>>> +    group.add_argument('-f', metavar='filterspec', action='append',
>>> help='Specify a filter, which consists of the test class name, a dot,
>>> followed by the test method, to only admit such test into the test suite')
>>> # FIXME: Example?
>>> +    X('-g', 'If specified, the filterspec by -f is not exclusive, i.e.,
>>> if a test module does not match the filterspec (testclass.testmethod), the
>>> whole module is still admitted to the test suite')
>>> +    X('-l', "Don't skip long running tests")
>>> +    X('-m', "Don't do lldb-mi tests")
>>> +    X('+m', "Just do lldb-mi tests. Do not specify along with '-m'",
>>> dest='plus_m')
>>> +    group.add_argument('-p', metavar='pattern', help='Specify a regexp
>>> filename pattern for inclusion in the test suite')
>>> +    group.add_argument('-X', metavar='directory', help="Exclude a
>>> directory from consideration for test discovery. -X types => if 'types'
>>> appear in the pathname components of a potential testfile, it will be
>>> ignored")
>>> +    group.add_argument('-G', '--category', metavar='category',
>>> action='append', dest='categoriesList', help=textwrap.dedent('''Specify
>>> categories of test cases of interest. Can be specified more than once.'''))
>>> +    group.add_argument('--skip-category', metavar='category',
>>> action='append', dest='skipCategories', help=textwrap.dedent('''Specify
>>> categories of test cases to skip. Takes precedence over -G. Can be
>>> specified more than once.'''))
>>> +
>>> +    # Configuration options
>>> +    group = parser.add_argument_group('Configuration options')
>>> +    group.add_argument('-c', metavar='config-file', help='Read a config
>>> file specified after this option')  # FIXME: additional doc.
>>> +    group.add_argument('--framework', metavar='framework-path',
>>> help='The path to LLDB.framework')
>>> +    group.add_argument('--executable', metavar='executable-path',
>>> help='The path to the lldb executable')
>>> +    group.add_argument('--libcxx', metavar='directory', help='The path
>>> to custom libc++ library')
>>> +    group.add_argument('-e', metavar='benchmark-exe', help='Specify the
>>> full path of an executable used for benchmark purposes (see also: -x)')
>>> +    group.add_argument('-k', metavar='command', action='append',
>>> help="Specify a runhook, which is an lldb command to be executed by the
>>> debugger; The option can occur multiple times. The commands are executed
>>> one after the other to bring the debugger to a desired state, so that, for
>>> example, further benchmarking can be done")
>>> +    group.add_argument('-R', metavar='dir', help='Specify a directory
>>> to relocate the tests and their intermediate files to. BE WARNED THAT the
>>> directory, if exists, will be deleted before running this test driver. No
>>> cleanup of intermediate test files is performed in this case')
>>> +    group.add_argument('-r', metavar='dir', help="Similar to '-R',
>>> except that the directory must not exist before running this test driver")
>>> +    group.add_argument('-s', metavar='name', help='Specify the name of
>>> the dir created to store the session files of tests with errored or failed
>>> status. If not specified, the test driver uses the timestamp as the session
>>> dir name')
>>> +    group.add_argument('-x', metavar='breakpoint-spec', help='Specify
>>> the breakpoint specification for the benchmark executable')
>>> +    group.add_argument('-y', type=int, metavar='count', help="Specify
>>> the iteration count used to collect our benchmarks. An example is the
>>> number of times to do 'thread step-over' to measure stepping speed.")
>>> +    group.add_argument('-#', type=int, metavar='sharp', dest='sharp',
>>> help='Repeat the test suite for a specified number of times')
>>> +    group.add_argument('--channel', metavar='channel', dest='channels',
>>> action='append', help=textwrap.dedent("Specify the log channels (and
>>> optional categories) e.g. 'lldb all' or 'gdb-remote packets' if no
>>> categories are specified, 'default' is used"))
>>> +    group.add_argument('--log-success', dest='log_success',
>>> action='store_true', help="Leave logs/traces even for successful test runs
>>> (useful for creating reference log files during debugging.)")
>>> +
>>> +    # Configuration options
>>> +    group = parser.add_argument_group('Remote platform options')
>>> +    group.add_argument('--platform-name', dest='lldb_platform_name',
>>> metavar='platform-name', help='The name of a remote platform to use')
>>> +    group.add_argument('--platform-url', dest='lldb_platform_url',
>>> metavar='platform-url', help='A LLDB platform URL to use when connecting to
>>> a remote platform to run the test suite')
>>> +    group.add_argument('--platform-working-dir',
>>> dest='lldb_platform_working_dir', metavar='platform-working-dir', help='The
>>> directory to use on the remote platform.')
>>> +
>>> +    # Test-suite behaviour
>>> +    group = parser.add_argument_group('Runtime behaviour options')
>>> +    X('-d', 'Suspend the process after launch to wait indefinitely for
>>> a debugger to attach')
>>> +    X('-F', 'Fail fast. Stop the test suite on the first error/failure')
>>> +    X('-i', "Ignore (don't bailout) if 'lldb.py' module cannot be
>>> located in the build tree relative to this script; use PYTHONPATH to locate
>>> the module")
>>> +    X('-n', "Don't print the headers like build dir, lldb version, and
>>> svn info at all")
>>> +    X('-P', "Use the graphic progress bar.")
>>> +    X('-q', "Don't print extra output from this script.")
>>> +    X('-S', "Skip the build and cleanup while running the test. Use
>>> this option with care as you would need to build the inferior(s) by hand
>>> and build the executable(s) with the correct name(s). This can be used with
>>> '-# n' to stress test certain test cases for n number of times")
>>> +    X('-t', 'Turn on tracing of lldb command and other detailed test
>>> executions')
>>> +    group.add_argument('-u', dest='unset_env_varnames',
>>> metavar='variable', action='append', help='Specify an environment variable
>>> to unset before running the test cases. e.g., -u DYLD_INSERT_LIBRARIES -u
>>> MallocScribble')
>>> +    group.add_argument('--env', dest='set_env_vars',
>>> metavar='variable', action='append', help='Specify an environment variable
>>> to set to the given value before running the test cases e.g.: --env
>>> CXXFLAGS=-O3 --env DYLD_INSERT_LIBRARIES')
>>> +    X('-v', 'Do verbose mode of unittest framework (print out each test
>>> case invocation)')
>>> +    X('-w', 'Insert some wait time (currently 0.5 sec) between
>>> consecutive test cases')
>>> +    X('-T', 'Obtain and dump svn information for this checkout of LLDB
>>> (off by default)')
>>> +    group.add_argument('--enable-crash-dialog',
>>> dest='disable_crash_dialog', action='store_false', help='(Windows only)
>>> When LLDB crashes, display the Windows crash dialog.')
>>> +    group.add_argument('--show-inferior-console',
>>> dest='hide_inferior_console', action='store_false', help='(Windows only)
>>> When launching an inferior, dont hide its console window.')
>>> +    group.set_defaults(disable_crash_dialog=True)
>>> +    group.set_defaults(hide_inferior_console=True)
>>> +
>>> +    # Remove the reference to our helper function
>>> +    del X
>>> +
>>> +    group = parser.add_argument_group('Test directories')
>>> +    group.add_argument('args', metavar='test-dir', nargs='*',
>>> help='Specify a list of directory names to search for test modules named
>>> after Test*.py (test discovery). If empty, search from the current working
>>> directory instead.')
>>> +
>>> +    return parse_args(parser, argv)
>>>
>>>
>>> _______________________________________________
>>> lldb-commits mailing list
>>> lldb-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20150522/5bb6fefa/attachment.html>


More information about the lldb-commits mailing list