Rather than removing the results_path unconditionally (if it exists), this requires the that -o/--overwrite switch is provided to overwrite. This is the same syntax that `summary html` uses, and provides users a little bit of protection so they don't overwrite something they meant to keep.
Signed-off-by: Dylan Baker <[email protected]> --- framework/programs/run.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/framework/programs/run.py b/framework/programs/run.py index 1cc1b4a..452e412 100644 --- a/framework/programs/run.py +++ b/framework/programs/run.py @@ -164,6 +164,10 @@ def _run_parser(input_): help="Set the logger verbosity level") parser.add_argument("--test-list", help="A file containing a list of tests to run") + parser.add_argument('-o', '--overwrite', + dest='overwrite', + action='store_true', + help='If the results_path already exists, delete it') parser.add_argument("test_profile", metavar="<Profile path(s)>", nargs='+', @@ -249,13 +253,19 @@ def run(input_): piglit_dir = path.dirname(path.realpath(sys.argv[0])) os.chdir(piglit_dir) - # Clear results directory, completely remove it and recreate it whether - # it's a directory or a file. - if os.path.isdir(args.results_path): - shutil.rmtree(args.results_path) - else: - os.unlink(args.results_path) - os.makedirs(args.results_path) + # If the results directory already exists and if overwrite was set, then + # clear the directory. If it wasn't set, then raise fatal error. + if os.path.exists(args.results_path): + if args.overwrite: + if os.path.isdir(args.results_path): + shutil.rmtree(args.results_path) + else: + os.unlink(args.results_path) + else: + raise exceptions.PiglitFatalError( + 'Cannot overwrite existing folder without the -o/--overwrite ' + 'option being set.') + os.mkdir(args.results_path) results = framework.results.TestrunResult() backends.set_meta(args.backend, results) -- 2.7.0 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
