regtest: Allow specifying just a directory

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Arnaldo Carvalho de Melo 2009-08-24 16:55:32 -03:00
parent 7455b9b884
commit 8ad6fa6658
1 changed files with 51 additions and 27 deletions

78
regtest
View File

@ -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: