regtest: Allow specifying just a directory
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
7455b9b884
commit
8ad6fa6658
78
regtest
78
regtest
|
@ -45,7 +45,7 @@ def set_dir_has_no_diffs(dirname):
|
|||
def reset_dir_has_no_diffs(dirname):
|
||||
os.unlink(os.path.join(dirname, ".no_diffs"))
|
||||
|
||||
def diff_dir(from_dir, to_dir, dir = None):
|
||||
def diff_dir(from_dir, to_dir, dir = None, recursive = True):
|
||||
if dir:
|
||||
from_dir = os.path.join(from_dir, dir)
|
||||
to_dir = os.path.join(to_dir, dir)
|
||||
|
@ -63,6 +63,8 @@ def diff_dir(from_dir, to_dir, dir = None):
|
|||
os.path.join(to_dir, f))
|
||||
else:
|
||||
set_dir_has_no_diffs(to_dir)
|
||||
if not recursive:
|
||||
return
|
||||
common_dirs = diff.common_dirs
|
||||
if not common_dirs:
|
||||
return
|
||||
|
@ -114,16 +116,17 @@ def do_tool(tool, before_after, format, dirname, fname,
|
|||
os.path.join(fixed_dirname, fname[:-6]))
|
||||
os.system(command)
|
||||
|
||||
def do_tool_on_files(arg, dirname, fnames):
|
||||
def do_tool_on_files(arg, dirname, fnames, prepend_obj_dir = False):
|
||||
if dirname.find("/.") >= 0:
|
||||
return
|
||||
tool, before_after = arg
|
||||
for fname in fnames:
|
||||
if fname[-6:] != ".debug":
|
||||
if not prepend_obj_dir and fname[-6:] != ".debug":
|
||||
continue
|
||||
|
||||
for format in formats:
|
||||
do_tool(tool, before_after, format, dirname, fname)
|
||||
do_tool(tool, before_after, format, dirname, fname,
|
||||
prepend_obj_dir)
|
||||
|
||||
def do_tools(before_after):
|
||||
for tool in tools.keys():
|
||||
|
@ -148,14 +151,14 @@ def do_ctf(dirname, fname, prepend_obj_dir = False):
|
|||
print os.path.join(fixed_dirname, fname[:-6])
|
||||
os.system(command)
|
||||
|
||||
def do_ctf_on_files(arg, dirname, fnames):
|
||||
def do_ctf_on_files(arg, dirname, fnames, prepend_obj_dir = False):
|
||||
if dirname.find("/.") >= 0:
|
||||
return
|
||||
for fname in fnames:
|
||||
if fname[-6:] != ".debug":
|
||||
if not prepend_obj_dir and fname[-6:] != ".debug":
|
||||
continue
|
||||
|
||||
do_ctf(dirname, fname)
|
||||
do_ctf(dirname, fname, prepend_obj_dir)
|
||||
|
||||
def do_ctfs():
|
||||
os.path.walk(regtest_obj_dir, do_ctf_on_files, None)
|
||||
|
@ -163,41 +166,62 @@ def do_ctfs():
|
|||
def sig_exit(sig_number, stack_frame):
|
||||
sys.exit(1)
|
||||
|
||||
def listdebugs(dirname):
|
||||
fnames = []
|
||||
for fname in os.listdir(os.path.join(regtest_obj_dir, dirname)):
|
||||
if fname[-6:] != ".debug":
|
||||
continue
|
||||
obj_path = os.path.join(regtest_obj_dir, dirname, fname)
|
||||
if os.path.islink(obj_path) or os.path.isdir(obj_path):
|
||||
continue
|
||||
fnames.append(fname[:-6])
|
||||
print fnames
|
||||
return fnames
|
||||
|
||||
def main(argv):
|
||||
for sig in (signal.SIGHUP, signal.SIGINT, signal.SIGTERM):
|
||||
signal.signal(sig, sig_exit)
|
||||
|
||||
try:
|
||||
if argv[1] in ('before', 'after'):
|
||||
if len(argv) > 2:
|
||||
dirname = argv[2]
|
||||
if len(argv) > 3:
|
||||
dirname = argv[2]
|
||||
for fname in argv[3:]:
|
||||
for tool in tools.keys():
|
||||
for format in formats:
|
||||
do_tool(tool, argv[1], format, dirname, fname, True)
|
||||
fnames = argv[3:]
|
||||
elif argv[1] in ('before', 'after', 'ctf'):
|
||||
fnames = listdebugs(dirname)
|
||||
|
||||
if argv[1] in ('before', 'after'):
|
||||
if len(argv) > 2:
|
||||
for tool in tools.keys():
|
||||
arg = (tool, argv[1])
|
||||
do_tool_on_files(arg, dirname, fnames, True)
|
||||
else:
|
||||
do_tools(argv[1])
|
||||
elif argv[1] == 'diff':
|
||||
if len(argv) > 3:
|
||||
dirname = argv[2]
|
||||
for fname in argv[3:]:
|
||||
diff_file(os.path.join(regtest_output_dir, "before", "pahole", "dwarf", dirname, fname),
|
||||
os.path.join(regtest_output_dir, "after", "pahole", "dwarf", dirname, fname))
|
||||
if len(argv) > 2:
|
||||
from_dir = os.path.join(regtest_output_dir, "before", "pahole", "dwarf", dirname)
|
||||
to_dir = os.path.join(regtest_output_dir, "after", "pahole", "dwarf", dirname)
|
||||
if len(argv) > 3:
|
||||
for fname in fnames:
|
||||
diff_file(os.path.join(from_dir, fname), os.path.join(to_dir, fname))
|
||||
else:
|
||||
diff_dir(from_dir, to_dir, recursive = False)
|
||||
else:
|
||||
do_diff_dwarfs()
|
||||
elif argv[1] == 'ctf':
|
||||
if len(argv) > 3:
|
||||
dirname = argv[2]
|
||||
for fname in argv[3:]:
|
||||
do_ctf(dirname, fname, True)
|
||||
if len(argv) > 2:
|
||||
do_ctf_on_files(None, dirname, fnames, True)
|
||||
else:
|
||||
do_ctfs()
|
||||
elif argv[1] == 'diffctf':
|
||||
if len(argv) > 3:
|
||||
dirname = argv[2]
|
||||
for fname in argv[3:]:
|
||||
diff_file(os.path.join(regtest_output_dir, "after", "pahole", "dwarf", dirname, fname),
|
||||
os.path.join(regtest_output_dir, "after", "pahole", "ctf", dirname, fname))
|
||||
if len(argv) > 2:
|
||||
from_dir = os.path.join(regtest_output_dir, "after", "pahole", "dwarf", dirname)
|
||||
to_dir = os.path.join(regtest_output_dir, "after", "pahole", "ctf", dirname)
|
||||
if len(argv) > 3:
|
||||
for fname in fnames:
|
||||
diff_file(os.path.join(from_dir, fname), os.path.join(to_dir, fname))
|
||||
else:
|
||||
diff_dir(from_dir, to_dir, recursive = False)
|
||||
else:
|
||||
do_diff_dwarfs2ctfs()
|
||||
except IOError:
|
||||
|
|
Loading…
Reference in New Issue