This summarizer can be used to aggregate a set of individual tests together into a single results file.
Signed-off-by: Dylan Baker <[email protected]> --- framework/programs/summary.py | 41 ++++++++++++++++++++++++++++++++++++++--- piglit | 4 ++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/framework/programs/summary.py b/framework/programs/summary.py index a273918..8aaf709 100644 --- a/framework/programs/summary.py +++ b/framework/programs/summary.py @@ -19,19 +19,25 @@ # OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. +from __future__ import print_function, absolute_import import argparse import shutil +import os import os.path as path import sys +import errno import framework.summary as summary import framework.status as status import framework.core as core import framework.results -__all__ = ['html', - 'console', - 'csv'] +__all__ = [ + 'aggregate', + 'console', + 'csv', + 'html', +] def html(input_): @@ -163,3 +169,32 @@ def csv(input_): write_results(output) else: write_results(sys.stdout) + + +def aggregate(input_): + """Combine files in a tests/ directory into a single results file.""" + parser = argparse.ArgumentParser() + parser.add_argument('results_folder', + type=path.realpath, + metavar="<results path>", + help="Path to a results folder") + parser.add_argument('-o', '--output', + default="results.json", + help="name of output file. Default: results.json") + args = parser.parse_args(input_) + + assert os.path.isdir(args.results_folder) + + outfile = os.path.join(args.results_folder, args.output) + results = framework.results.load_results(args.results_folder) + + try: + results.write(outfile) + except IOError as e: + if e.errno == errno.EPERM: + print("Error: Unable to write aggregated file, permission denied.", + file=sys.stderr) + sys.exit(1) + raise + + print("Aggregated file written to: {}".format(outfile)) diff --git a/piglit b/piglit index 53a4bb4..5ae43e9 100755 --- a/piglit +++ b/piglit @@ -135,6 +135,10 @@ def main(): add_help=False, help='generate csv from results') csv.set_defaults(func=summary.csv) + aggregate = summary_parser.add_parser('aggregate', + add_help=False, + help="Aggregate incomplete piglit run.") + aggregate.set_defaults(func=summary.aggregate) # Parse the known arguments (piglit run or piglit summary html for # example), and then pass the arguments that this parser doesn't know about -- 2.3.3 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
