forked from OSchip/llvm-project
[lldb/Test] Remove un(used|needed|maintained) files from lldbsuite.
This commit is contained in:
parent
f4d4273265
commit
9caa34a24c
|
|
@ -1,4 +0,0 @@
|
|||
DisableFormat: true
|
||||
|
||||
# Disabling formatting doesn't implicitly disable include sorting
|
||||
SortIncludes: false
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
"""
|
||||
Interprocess mutex based on file locks
|
||||
"""
|
||||
|
||||
import fcntl
|
||||
|
||||
|
||||
class Lock:
|
||||
|
||||
def __init__(self, filename):
|
||||
self.filename = filename
|
||||
# This will create it if it does not exist already
|
||||
unbuffered = 0
|
||||
self.handle = open(filename, 'a+', unbuffered)
|
||||
|
||||
def acquire(self):
|
||||
fcntl.flock(self.handle, fcntl.LOCK_EX)
|
||||
|
||||
# will throw IOError if unavailable
|
||||
def try_acquire(self):
|
||||
fcntl.flock(self.handle, fcntl.LOCK_NB | fcntl.LOCK_EX)
|
||||
|
||||
def release(self):
|
||||
fcntl.flock(self.handle, fcntl.LOCK_UN)
|
||||
|
||||
def __del__(self):
|
||||
self.handle.close()
|
||||
|
|
@ -1,203 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
A simple utility to redo the failed/errored tests.
|
||||
|
||||
You need to specify the session directory in order for this script to locate the
|
||||
tests which need to be re-run.
|
||||
|
||||
See also dotest.py, the test driver running the test suite.
|
||||
|
||||
Type:
|
||||
|
||||
./dotest.py -h
|
||||
|
||||
for help.
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
import sys
|
||||
import datetime
|
||||
import re
|
||||
|
||||
# If True, redo with no '-t' option for the test driver.
|
||||
no_trace = False
|
||||
|
||||
# To be filled with the filterspecs found in the session logs.
|
||||
redo_specs = []
|
||||
|
||||
# The filename components to match for. Only files with the contained component names
|
||||
# will be considered for re-run. Examples: ['X86_64', 'clang'].
|
||||
filename_components = []
|
||||
|
||||
do_delay = False
|
||||
|
||||
# There is a known bug with respect to comp_specs and arch_specs, in that if we
|
||||
# encountered "-C clang" and "-C gcc" when visiting the session files, both
|
||||
# compilers will end up in the invocation of the test driver when rerunning.
|
||||
# That is: ./dotest -v -C clang^gcc ... -f ...". Ditto for "-A" flags.
|
||||
|
||||
# The "-C compiler" for comp_specs.
|
||||
comp_specs = set()
|
||||
# The "-A arch" for arch_specs.
|
||||
arch_specs = set()
|
||||
|
||||
|
||||
def usage():
|
||||
print("""\
|
||||
Usage: redo.py [-F filename_component] [-n] [session_dir] [-d]
|
||||
where options:
|
||||
-F : only consider the test for re-run if the session filename contains the filename component
|
||||
for example: -F x86_64
|
||||
-n : when running the tests, do not turn on trace mode, i.e, no '-t' option
|
||||
is passed to the test driver (this will run the tests faster)
|
||||
-d : pass -d down to the test driver (introduces a delay so you can attach with a debugger)
|
||||
|
||||
and session_dir specifies the session directory which contains previously
|
||||
recorded session infos for all the test cases which either failed or errored.
|
||||
|
||||
If sessin_dir is left unspecified, this script uses the heuristic to find the
|
||||
possible session directories with names starting with %Y-%m-%d- (for example,
|
||||
2012-01-23-) and employs the one with the latest timestamp.""")
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
def where(session_dir, test_dir):
|
||||
"""Returns the full path to the session directory; None if non-existent."""
|
||||
abspath = os.path.abspath(session_dir)
|
||||
if os.path.isdir(abspath):
|
||||
return abspath
|
||||
|
||||
session_dir_path = os.path.join(test_dir, session_dir)
|
||||
if os.path.isdir(session_dir_path):
|
||||
return session_dir_path
|
||||
|
||||
return None
|
||||
|
||||
# This is the pattern for the line from the log file to redo a test.
|
||||
# We want the filter spec.
|
||||
filter_pattern = re.compile("^\./dotest\.py.*-f (.*)$")
|
||||
comp_pattern = re.compile(" -C ([^ ]+) ")
|
||||
arch_pattern = re.compile(" -A ([^ ]+) ")
|
||||
|
||||
|
||||
def redo(suffix, dir, names):
|
||||
"""Visitor function for os.path.walk(path, visit, arg)."""
|
||||
global redo_specs
|
||||
global comp_specs
|
||||
global arch_specs
|
||||
global filter_pattern
|
||||
global comp_pattern
|
||||
global arch_pattern
|
||||
global filename_components
|
||||
global do_delay
|
||||
|
||||
for name in names:
|
||||
if name.endswith(suffix):
|
||||
#print("Find a log file:", name)
|
||||
if name.startswith("Error") or name.startswith("Failure"):
|
||||
if filename_components:
|
||||
if not all([comp in name for comp in filename_components]):
|
||||
continue
|
||||
with open(os.path.join(dir, name), 'r') as log:
|
||||
content = log.read()
|
||||
for line in content.splitlines():
|
||||
match = filter_pattern.match(line)
|
||||
if match:
|
||||
filterspec = match.group(1)
|
||||
print("adding filterspec:", filterspec)
|
||||
redo_specs.append(filterspec)
|
||||
comp = comp_pattern.search(line)
|
||||
if comp:
|
||||
comp_specs.add(comp.group(1))
|
||||
arch = arch_pattern.search(line)
|
||||
if arch:
|
||||
arch_specs.add(arch.group(1))
|
||||
else:
|
||||
continue
|
||||
|
||||
|
||||
def main():
|
||||
"""Read the session directory and run the failed test cases one by one."""
|
||||
global no_trace
|
||||
global redo_specs
|
||||
global filename_components
|
||||
global do_delay
|
||||
|
||||
test_dir = sys.path[0]
|
||||
if not test_dir:
|
||||
test_dir = os.getcwd()
|
||||
if not test_dir.endswith('test'):
|
||||
print("This script expects to reside in lldb's test directory.")
|
||||
sys.exit(-1)
|
||||
|
||||
index = 1
|
||||
while index < len(sys.argv):
|
||||
if sys.argv[index].startswith(
|
||||
'-h') or sys.argv[index].startswith('--help'):
|
||||
usage()
|
||||
|
||||
if sys.argv[index].startswith('-'):
|
||||
# We should continue processing...
|
||||
pass
|
||||
else:
|
||||
# End of option processing.
|
||||
break
|
||||
|
||||
if sys.argv[index] == '-F':
|
||||
# Increment by 1 to fetch the filename component spec.
|
||||
index += 1
|
||||
if index >= len(sys.argv) or sys.argv[index].startswith('-'):
|
||||
usage()
|
||||
filename_components.append(sys.argv[index])
|
||||
elif sys.argv[index] == '-n':
|
||||
no_trace = True
|
||||
elif sys.argv[index] == '-d':
|
||||
do_delay = True
|
||||
|
||||
index += 1
|
||||
|
||||
if index < len(sys.argv):
|
||||
# Get the specified session directory.
|
||||
session_dir = sys.argv[index]
|
||||
else:
|
||||
# Use heuristic to find the latest session directory.
|
||||
name = datetime.datetime.now().strftime("%Y-%m-%d-")
|
||||
dirs = [d for d in os.listdir(os.getcwd()) if d.startswith(name)]
|
||||
if len(dirs) == 0:
|
||||
print("No default session directory found, please specify it explicitly.")
|
||||
usage()
|
||||
session_dir = max(dirs, key=os.path.getmtime)
|
||||
if not session_dir or not os.path.exists(session_dir):
|
||||
print("No default session directory found, please specify it explicitly.")
|
||||
usage()
|
||||
|
||||
#print("The test directory:", test_dir)
|
||||
session_dir_path = where(session_dir, test_dir)
|
||||
|
||||
print("Using session dir path:", session_dir_path)
|
||||
os.chdir(test_dir)
|
||||
os.path.walk(session_dir_path, redo, ".log")
|
||||
|
||||
if not redo_specs:
|
||||
print("No failures/errors recorded within the session directory, please specify a different session directory.\n")
|
||||
usage()
|
||||
|
||||
filters = " -f ".join(redo_specs)
|
||||
compilers = ''
|
||||
for comp in comp_specs:
|
||||
compilers += " -C %s" % (comp)
|
||||
archs = ''
|
||||
for arch in arch_specs:
|
||||
archs += "--arch %s " % (arch)
|
||||
|
||||
command = "./dotest.py %s %s -v %s %s -f " % (
|
||||
compilers, archs, "" if no_trace else "-t", "-d" if do_delay else "")
|
||||
|
||||
print("Running %s" % (command + filters))
|
||||
os.system(command + filters)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Loading…
Reference in New Issue