regression/tracediff.py
changeset 2881 81d1080cd0ae
parent 2878 580a733e49d6
child 2882 542f4d57464b
equal deleted inserted replaced
2878:580a733e49d6 2881:81d1080cd0ae
     1 #! /usr/bin/env python
       
     2 
       
     3 """Generic trace-comparison-type regression test."""
       
     4 
       
     5 import sys
       
     6 import os
       
     7 import shutil
       
     8 
       
     9 def run_test(verbose, generate, refDirName, testName):
       
    10     """Execute a test."""
       
    11 
       
    12     refTestDirName = refDirName + "/" + testName + ".ref"
       
    13 
       
    14     if not os.path.exists(refDirName):
       
    15         print"No reference trace repository"
       
    16         return 1
       
    17 
       
    18     if generate:
       
    19         if not os.path.exists(refTestDirName):
       
    20             print "creating new " + refTestDirName
       
    21             os.mkdir(refTestDirName)
       
    22 
       
    23         os.system("./waf --cwd regression/" + refTestDirName +
       
    24             " --run " + testName + " > /dev/null 2>&1")
       
    25 
       
    26         print "Remember to commit " + refTestDirName
       
    27         return 0
       
    28     else:
       
    29         if not os.path.exists(refTestDirName):
       
    30             print "Cannot locate reference traces"
       
    31             return 1
       
    32 
       
    33         shutil.rmtree("traces");
       
    34         os.mkdir("traces")
       
    35 
       
    36         os.system("./waf --cwd regression/traces --run " +
       
    37           testName + " > /dev/null 2>&1")
       
    38 
       
    39         if verbose:
       
    40             diffCmd = "diff traces " + refTestDirName + " | head"
       
    41         else:
       
    42             diffCmd = "diff traces " + refTestDirName + \
       
    43                 " > /dev/null 2>&1"
       
    44 
       
    45         rc = os.system(diffCmd)
       
    46         if rc:
       
    47             print "----------"
       
    48             print "Traces differ in test: test-" + testName
       
    49             print "Reference traces in directory: " + refTestDirName
       
    50             print "Traces in directory: traces"
       
    51             print "Rerun regression test as: " + \
       
    52                 "\"python regression.py test-" + testName + "\""
       
    53             print "Then do \"diff -u traces " + refTestDirName + \
       
    54                 "\" for details"
       
    55             print "----------"
       
    56         return rc
       
    57