From a0bf2535a80c59329c8c14bba724b90fba05da4b Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Fri, 3 Aug 2007 18:03:59 -0400 Subject: tests: config.out no longer exists, eliminate ref copy. --HG-- extra : convert_revision : e2d6aa61aa2ffd1a9d16260244512eeb1fe4d5a3 --- tests/SConscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/SConscript') diff --git a/tests/SConscript b/tests/SConscript index 472fa3f4c..812ce8c11 100644 --- a/tests/SConscript +++ b/tests/SConscript @@ -114,7 +114,7 @@ def update_test(target, source, env): src_dir = str(source[1].get_dir()) dest_files = os.listdir(dest_dir) src_files = os.listdir(src_dir) - for f in ('stdout', 'stderr', 'm5stats.txt', 'config.ini', 'config.out'): + for f in ('stdout', 'stderr', 'm5stats.txt', 'config.ini'): if f in dest_files: print " Replacing file", f dest_files.remove(f) -- cgit v1.2.3 From 851e3c852be4eb031293ed271502a0e14ca9273f Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Fri, 3 Aug 2007 18:04:26 -0400 Subject: tests: replace all dest ref files on upgrade (if possible). Originally we were copying all source files in, but this caused problems when (large) inputs were copied along with outputs. Then we switched to just copying the standard files (m5stats.txt, etc.) but that was missing things like the *.console files. This fix should catch all the non-standard files too as long as they are copied in manually once when the test is set up. Also get a lot nicer about warning when files are ignored, and warn when expected files are missing. Those new Python sets sure are handy. --HG-- extra : convert_revision : 55c046de124522499af74a471968677c020bbf38 --- tests/SConscript | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'tests/SConscript') diff --git a/tests/SConscript b/tests/SConscript index 812ce8c11..62c4d0508 100644 --- a/tests/SConscript +++ b/tests/SConscript @@ -102,6 +102,19 @@ def print_test(target, source, env): printAction = env.Action(print_test, strfunction = None) +# Static vars for update_test: +# - long-winded message about ignored sources +ignore_msg = ''' +Note: The following file(s) will not be copied. New non-standard + output files must be copied manually once before update_ref will + recognize them as outputs. Otherwise they are assumed to be + inputs and are ignored. +''' +# - reference files always needed +needed_files = set(['stdout', 'stderr', 'm5stats.txt', 'config.ini']) +# - source files we always want to ignore +known_ignores = set(['status', 'outdiff', 'statsdiff']) + def update_test(target, source, env): """Update reference test outputs. @@ -112,9 +125,21 @@ def update_test(target, source, env): """ dest_dir = str(source[0].get_dir()) src_dir = str(source[1].get_dir()) - dest_files = os.listdir(dest_dir) - src_files = os.listdir(src_dir) - for f in ('stdout', 'stderr', 'm5stats.txt', 'config.ini'): + dest_files = set(os.listdir(dest_dir)) + src_files = set(os.listdir(src_dir)) + # Copy all of the required files plus any existing dest files. + wanted_files = needed_files | dest_files + missing_files = wanted_files - src_files + if len(missing_files) > 0: + print " WARNING: the following file(s) are missing " \ + "and will not be updated:" + print " ", " ,".join(missing_files) + copy_files = wanted_files - missing_files + warn_ignored_files = (src_files - copy_files) - known_ignores + if len(warn_ignored_files) > 0: + print ignore_msg, + print " ", ", ".join(warn_ignored_files) + for f in copy_files: if f in dest_files: print " Replacing file", f dest_files.remove(f) @@ -123,12 +148,6 @@ def update_test(target, source, env): copyAction = Copy(os.path.join(dest_dir, f), os.path.join(src_dir, f)) copyAction.strfunction = None Execute(copyAction) - # warn about any files in dest not overwritten (other than SCCS dir) - if 'SCCS' in dest_files: - dest_files.remove('SCCS') - if dest_files: - print "Warning: file(s) in", dest_dir, "not updated:", - print ', '.join(dest_files) return 0 def update_test_string(target, source, env): -- cgit v1.2.3