source: tests/pybin/test_run.py@ fe610ab

ADT ast-experimental enum pthread-emulation qualifiedEnum
Last change on this file since fe610ab was 172a88d, checked in by Thierry Delisle <tdelisle@…>, 4 years ago

Tests now count failures, passes, timeouts and report the number

  • Property mode set to 100644
File size: 2.5 KB
Line 
1import os
2
3from pybin.tools import *
4
5import pybin.settings
6
7# Test class that defines what a test is
8class Test:
9 def __init__(self):
10 self.name = ''
11 self.path = ''
12 self.arch = ''
13 self.astv = ''
14
15 def toString(self):
16 return "{:25s} ({:5s} arch, {:s} ast: {:s})".format( self.name, self.arch if self.arch else "Any", self.astv if self.astv else "Any", self.target() )
17
18 def prepare(self):
19 mkdir( (self.output_log(), self.error_log(), self.input() ) )
20 rm ( (self.output_log(), self.error_log(), self.target_executable()) )
21
22 def expect(self):
23 arch = '' if not self.arch else ".%s" % self.arch
24 astv = '' if not self.astv else ".nast" if self.astv == "new" else ".oast"
25 return os.path.normpath( os.path.join(settings.SRCDIR , self.path, ".expect", "%s%s%s.txt" % (self.name,astv,arch)) )
26
27 def error_log(self):
28 return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, ".err" , "%s.log" % self.name) )
29
30 def output_log(self):
31 return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, ".out" , "%s.log" % self.name) )
32
33 def input(self):
34 return os.path.normpath( os.path.join(settings.SRCDIR , self.path, ".in" , "%s.txt" % self.name) )
35
36 def target_output(self):
37 return self.output_log() if not settings.generating else self.expect()
38
39 def target(self):
40 return os.path.normpath( os.path.join(self.path, self.name) )
41
42 def target_executable(self):
43 return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, self.name) )
44
45 @staticmethod
46 def valid_name(name):
47 return not name.endswith( ('.c', '.cc', '.cpp', '.cfa') )
48
49 @staticmethod
50 def new_target(target, arch, astv):
51 test = Test()
52 test.name = os.path.basename(target)
53 test.path = os.path.relpath (os.path.dirname(target), settings.SRCDIR)
54 test.arch = arch.target if arch else ''
55 test.astv = astv.target if astv else ''
56 return test
57
58
59class TestResult:
60 SUCCESS = 0
61 FAILURE = 1
62 TIMEOUT = 124
63
64 @classmethod
65 def toString( cls, retcode, duration ):
66 if settings.generating :
67 if retcode == TestResult.SUCCESS: key = 'pass'; text = "Done "
68 elif retcode == TestResult.TIMEOUT: key = 'time'; text = "TIMEOUT"
69 else : key = 'fail'; text = "ERROR code %d" % retcode
70 else :
71 if retcode == TestResult.SUCCESS: key = 'pass'; text = "PASSED "
72 elif retcode == TestResult.TIMEOUT: key = 'time'; text = "TIMEOUT"
73 else : key = 'fail'; text = "FAILED with code %d" % retcode
74
75 text += " C%s - R%s" % (fmtDur(duration[0]), fmtDur(duration[1]))
76 return key, text
Note: See TracBrowser for help on using the repository browser.