regression.py
changeset 4110 04170734fa8b
parent 4109 1a251c8ad317
child 4114 a6c5ccfa3451
equal deleted inserted replaced
4109:1a251c8ad317 4110:04170734fa8b
    62             if not os.path.exists(refTestDirName):
    62             if not os.path.exists(refTestDirName):
    63                 print "creating new " + refTestDirName
    63                 print "creating new " + refTestDirName
    64                 os.mkdir(refTestDirName)
    64                 os.mkdir(refTestDirName)
    65 
    65 
    66             if pyscript is None:
    66             if pyscript is None:
    67                 Options.options.cwd_launch = refTestDirName
       
    68                 tmpl = "%s"
    67                 tmpl = "%s"
    69                 for arg in arguments:
    68                 for arg in arguments:
    70                     tmpl = tmpl + " " + arg
    69                     tmpl = tmpl + " " + arg
    71                 wutils.run_program(testName, tmpl)
    70                 wutils.run_program(testName, tmpl, cwd=refTestDirName)
    72             else:
    71             else:
    73                 argv = [self.env['PYTHON'], os.path.join(Options.cwd_launch, *os.path.split(pyscript))] + arguments
    72                 argv = [self.env['PYTHON'], os.path.join(Options.cwd_launch, *os.path.split(pyscript))] + arguments
    74                 before = os.getcwd()
    73                 wutils.run_argv(argv, cwd=refTestDirName)
    75                 os.chdir(refTestDirName)
       
    76                 try:
       
    77                     wutils.run_argv(argv)
       
    78                 finally:
       
    79                     os.chdir(before)
       
    80             print "Remember to commit " + refTestDirName
    74             print "Remember to commit " + refTestDirName
    81             return 0
    75             return 0
    82         else:
    76         else:
    83             if not os.path.exists(refTestDirName):
    77             if not os.path.exists(refTestDirName):
    84                 print "Cannot locate reference traces in " + refTestDirName
    78                 print "Cannot locate reference traces in " + refTestDirName
    85                 return 1
    79                 return 1
    86 
    80 
    87             
       
    88             if refTestName is None:
    81             if refTestName is None:
    89                 traceDirName = testName + ".ref"
    82                 traceDirName = testName + ".ref"
    90             else:
    83             else:
    91                 traceDirName = refTestName
    84                 traceDirName = refTestName
    92             traceDirName = os.path.join ('traces', traceDirName)
    85             traceDirName = os.path.join('regression', 'traces', traceDirName)
    93 
    86 
    94             try:
    87             try:
    95                 shutil.rmtree(traceDirName)
    88                 shutil.rmtree(traceDirName)
    96             except OSError:
    89             except OSError:
    97                 pass
    90                 pass
    98             os.mkdir(traceDirName)
    91             os.mkdir(traceDirName)
    99 
    92 
   100             #os.system("./waf --cwd regression/traces --run " +
       
   101             #  testName + " > /dev/null 2>&1")
       
   102 
       
   103             if pyscript is None:
    93             if pyscript is None:
   104                 Options.options.cwd_launch = traceDirName
    94                 wutils.run_program(testName,
   105                 wutils.run_program(testName, command_template=wutils.get_command_template(*arguments))
    95                                    command_template=wutils.get_command_template(*arguments),
       
    96                                    cwd=traceDirName)
   106             else:
    97             else:
   107                 argv = [self.env['PYTHON'], os.path.join('..', '..', '..', *os.path.split(pyscript))] + arguments
    98                 argv = [self.env['PYTHON'], os.path.join('..', '..', '..', *os.path.split(pyscript))] + arguments
   108                 before = os.getcwd()
    99                 wutils.run_argv(argv, cwd=traceDirName)
   109                 os.chdir(traceDirName)
       
   110                 try:
       
   111                     wutils.run_argv(argv)
       
   112                 finally:
       
   113                     os.chdir(before)
       
   114 
   100 
   115             if verbose:
   101             if verbose:
   116                 #diffCmd = "diff traces " + refTestDirName + " | head"
   102                 #diffCmd = "diff traces " + refTestDirName + " | head"
   117                 diffCmd = subprocess.Popen([self.env['DIFF'], traceDirName, refTestDirName],
   103                 diffCmd = subprocess.Popen([self.env['DIFF'], traceDirName, refTestDirName],
   118                                            stdout=subprocess.PIPE)
   104                                            stdout=subprocess.PIPE)
   155 
   141 
   156     @param reference_traces: reference traces directory.
   142     @param reference_traces: reference traces directory.
   157 
   143 
   158     """
   144     """
   159 
   145 
   160     testdir = "tests"
   146     testdir = os.path.join("regression", "tests")
   161     if not os.path.exists(testdir):
   147     if not os.path.exists(testdir):
   162         print "Tests directory does not exist"
   148         print "Tests directory does not exist"
   163         sys.exit(3)
   149         sys.exit(3)
   164 
   150 
   165     sys.path.append(testdir)
   151     sys.path.append(testdir)
   191                 bad.append(test)
   177                 bad.append(test)
   192                 print "FAIL " + test
   178                 print "FAIL " + test
   193         except NotImplementedError:
   179         except NotImplementedError:
   194             print "SKIP " + test            
   180             print "SKIP " + test            
   195 
   181 
   196     return len(bad) > 0
   182     return (len(bad) > 0)
   197 
   183 
   198 
   184 
   199 def _run_regression_test(test):
   185 def _run_regression_test(test):
   200     """Run a single test.
   186     """Run a single test.
   201 
   187 
   202     Arguments:
   188     Arguments:
   203     test -- the name of the test
   189     test -- the name of the test
   204     """
   190     """
   205 
   191     traces_dir = os.path.join("regression", "traces")
   206     if os.path.exists("traces"):
   192     if os.path.exists(traces_dir):
   207         files = os.listdir("traces")
   193         files = os.listdir(traces_dir)
   208         for file in files:
   194         for file in files:
   209             if file == '.' or file == '..':
   195             if file == '.' or file == '..':
   210                 continue
   196                 continue
   211             shutil.rmtree(os.path.join("traces", file), ignore_errors=True)
   197             shutil.rmtree(os.path.join("traces", file), ignore_errors=True)
   212     else:
   198     else:
   213         os.mkdir("traces")
   199         os.mkdir(traces_dir)
   214     
   200     
   215     mod = __import__(test, globals(), locals(), [])
   201     mod = __import__(test, globals(), locals(), [])
   216     return mod.run(verbose=(Options.options.verbose > 0),
   202     return mod.run(verbose=(Options.options.verbose > 0),
   217                    generate=Options.options.regression_generate)
   203                    generate=Options.options.regression_generate)
   218 
   204