Repository : ssh://darcs.haskell.org//srv/darcs/testsuite

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/04fc7b801336d8c85a2590f2e8b34ac2ccbc73fc

>---------------------------------------------------------------

commit 04fc7b801336d8c85a2590f2e8b34ac2ccbc73fc
Author: Ian Lynagh <[email protected]>
Date:   Sun Sep 18 22:02:20 2011 +0100

    Rejig how performance test stats are stored
    
    In particular, this allows more specific results to be specified, e.g.
        if_wordsize(64,                    stats_num_field('foo', 50, 54)),
        if_platform('x86_64-apple-darwin', stats_num_field('foo', 62, 66)),

>---------------------------------------------------------------

 driver/testglobals.py |    4 ++--
 driver/testlib.py     |   16 ++++++++++------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/driver/testglobals.py b/driver/testglobals.py
index 4d4d3d4..bdd44a3 100644
--- a/driver/testglobals.py
+++ b/driver/testglobals.py
@@ -195,8 +195,8 @@ class TestOptions:
        # ('bytes allocated',
        #   9300000000,
        #   9400000000)
-       self.compiler_stats_num_fields = []
-       self.stats_num_fields = []
+       self.compiler_stats_num_fields = {}
+       self.stats_num_fields = {}
 
        # should we run this test alone, i.e. not run it in parallel with
        # any other threads
diff --git a/driver/testlib.py b/driver/testlib.py
index 73f825a..dcf9752 100644
--- a/driver/testlib.py
+++ b/driver/testlib.py
@@ -224,13 +224,17 @@ def stats_num_field( field, min, max ):
     return lambda opts, f=field, x=min, y=max: _stats_num_field(opts, f, x, y);
 
 def _stats_num_field( opts, f, x, y ):
-    opts.stats_num_fields = opts.stats_num_fields + [(f, x, y)]
+    # copy the dictionary, as the config gets shared between all tests
+    opts.stats_num_fields = opts.stats_num_fields.copy()
+    opts.stats_num_fields[f] = (x, y)
 
 def compiler_stats_num_field( field, min, max ):
     return lambda opts, f=field, x=min, y=max: _compiler_stats_num_field(opts, 
f, x, y);
 
 def _compiler_stats_num_field( opts, f, x, y ):
-    opts.compiler_stats_num_fields = opts.compiler_stats_num_fields + [(f, x, 
y)]
+    # copy the dictionary, as the config gets shared between all tests
+    opts.compiler_stats_num_fields = opts.compiler_stats_num_fields.copy()
+    opts.compiler_stats_num_fields[f] = (x, y)
 
 # -----
 
@@ -907,12 +911,12 @@ def multi_compile_and_run( name, way, top_mod, 
extra_mods, extra_hc_opts ):
 
 def checkStats(stats_file, num_fields):
     result = passed()
-    if num_fields != []:
+    if len(num_fields) > 0:
         f = open(in_testdir(stats_file))
         contents = f.read()
         f.close()
 
-        for (field, min, max) in num_fields:
+        for (field, (min, max)) in num_fields.items():
             m = re.search('\("' + field + '", "([0-9]+)"\)', contents)
             if m == None:
                 print 'Failed to find field: ', field
@@ -978,7 +982,7 @@ def simple_build( name, way, extra_hc_opts, should_fail, 
top_mod, link, addsuf,
         to_do = '-c' # just compile
 
     stats_file = name + '.comp.stats'
-    if opts.compiler_stats_num_fields != []:
+    if len(opts.compiler_stats_num_fields) > 0:
         extra_hc_opts += ' +RTS -V0 -t' + stats_file + ' --machine-readable 
-RTS'
 
     if getTestOpts().compile_cmd_prefix == '':
@@ -1054,7 +1058,7 @@ def simple_run( name, way, prog, args ):
     my_rts_flags = rts_flags(way)
 
     stats_file = name + '.stats'
-    if opts.stats_num_fields != []:
+    if len(opts.stats_num_fields) > 0:
         args += ' +RTS -V0 -t' + stats_file + ' --machine-readable -RTS'
 
     if opts.no_stdin:



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to