LGTM.  Thanks.

Reviewed-by: Brian Paul <[email protected]>


On 03/23/2015 04:14 PM, Dylan Baker wrote:
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


_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to