Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/test.py

    r0c13238 rf7d3215  
    1919
    2020        def matchTest(path):
    21                 match = re.search("^%s\/([\w\/\-_]*).expect\/([\w\-_]+)(\.[\w\-_]+)?\.txt$" % settings.SRCDIR, path)
     21                match = re.search("%s\/([\w\/\-_]*).expect\/([\w\-_]+)(\.[\w\-_]+)?\.txt" % settings.SRCDIR, path)
    2222                if match :
    2323                        test = Test()
     
    3434# reads the directory ./.expect and indentifies the tests
    3535def listTests( includes, excludes ):
     36        includes = [canonicalPath( i ) for i in includes] if includes else None
     37        excludes = [canonicalPath( i ) for i in excludes] if excludes else None
     38
    3639        # tests directly in the .expect folder will always be processed
    3740        test_list = findTests()
     
    121124#               running test functions
    122125################################################################################
    123 def success(val):
    124         return val == 0 or settings.dry_run
    125 
    126 def isExe(file):
    127         return settings.dry_run or fileIsExecutable(file)
    128 
    129 def noRule(file, target):
    130         return not settings.dry_run and fileContainsOnly(file, "make: *** No rule to make target `%s'.  Stop." % target)
     126# fix the absolute paths in the output
     127def fixoutput( fname ):
     128        if not is_ascii(fname):
     129                return
     130
     131        file_replace(fname, "%s/" % settings.SRCDIR, "")
     132
    131133
    132134# logic to run a single test and return the result (No handling of printing or other test framework logic)
     
    144146
    145147        # build, skipping to next test on error
    146         with Timed() as comp_dur:
    147                 make_ret, _ = make( test.target(),      redirects  = ("2> %s 1> /dev/null" % out_file), error_file = err_file )
     148        before = time.time()
     149        make_ret, _ = make( test.target(),
     150                redirects  = "2> %s 1> /dev/null" % out_file,
     151                error_file = err_file
     152        )
     153        after = time.time()
     154
     155        comp_dur = after - before
     156
     157        run_dur = None
    148158
    149159        # if the make command succeds continue otherwise skip to diff
    150         run_dur = None
    151         if success(make_ret):
    152                 with Timed() as run_dur:
    153                         if isExe(exe_file):
    154                                 # run test
    155                                 retcode = run(exe_file, out_file, in_file)
    156                         else :
    157                                 # simply cat the result into the output
    158                                 retcode = cat(exe_file, out_file)
     160        if make_ret == 0 or settings.dry_run:
     161                before = time.time()
     162                if settings.dry_run or fileIsExecutable(exe_file) :
     163                        # run test
     164                        retcode, _ = sh("timeout %d %s > %s 2>&1" % (settings.timeout.single, exe_file, out_file), input = in_file)
     165                else :
     166                        # simply cat the result into the output
     167                        retcode, _ = sh("cat %s > %s" % (exe_file, out_file))
     168
     169                after = time.time()
     170                run_dur = after - before
    159171        else:
    160                 retcode = mv(err_file, out_file)
    161 
    162         if success(retcode):
     172                retcode, _ = sh("mv %s %s" % (err_file, out_file))
     173
     174
     175        if retcode == 0:
     176                # fixoutput(out_file)
    163177                if settings.generating :
    164178                        # if we are ounly generating the output we still need to check that the test actually exists
    165                         if noRule(out_file, test.target()) :
    166                                 retcode = 1
     179                        if not settings.dry_run and fileContainsOnly(out_file, "make: *** No rule to make target `%s'.  Stop." % test.target()) :
     180                                retcode = 1;
    167181                                error = "\t\tNo make target for test %s!" % test.target()
    168                                 rm(out_file)
     182                                sh("rm %s" % out_file, False)
    169183                        else:
    170184                                error = None
     
    177191                        error = myfile.read()
    178192
    179                 ret, info = coreInfo(exe_file)
    180                 error = error + info
    181 
    182 
    183193
    184194        # clean the executable
    185         rm(exe_file)
    186 
    187         return retcode, error, [comp_dur.duration, run_dur.duration if run_dur else None]
     195        sh("rm -f %s > /dev/null 2>&1" % test.target())
     196
     197        return retcode, error, [comp_dur, run_dur]
    188198
    189199# run a single test and handle the errors, outputs, printing, exception handling, etc.
     
    192202        with SignalHandling():
    193203                # print formated name
    194                 name_txt = "%24s  " % t.name
     204                name_txt = "%20s  " % t.name
    195205
    196206                retcode, error, duration = run_single_test(t)
     
    256266        allTests = listTests( options.include, options.exclude )
    257267
    258 
    259268        # if user wants all tests than no other treatement of the test list is required
    260269        if options.all or options.list or options.list_comp or options.include :
Note: See TracChangeset for help on using the changeset viewer.