5 # Run compiler unit tests
7 # Copyright (c) 2008 Matthias Kramm <kramm@quiss.org>
9 # This program is free software; you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation; either version 2 of the License, or
12 # (at your option) any later version.
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
19 # You should have received a copy of the GNU General Public License
20 # along with this program; if not, write to the Free Software
21 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
31 for line in s.split("\n"):
32 if line.startswith("[") and line.endswith("]"):
36 if not line.startswith("ok"):
38 if line.startswith("ok "):
42 nr,len = int(line[3:i]),int(line[i+1:])
58 def runcmd(cmd,args,wait):
59 #fo = open(tempfile, "wb")
61 p = subprocess.Popen([cmd] + args, executable=cmd, stdout=fo, stderr=fo)
63 for i in range(wait*10):
70 os.system("killall -9 "+cmd)
78 def __init__(self, nr, file, run):
82 self.flash_output = None
83 self.flash_error = None
84 self.compile_output = None
85 self.compile_error = None
88 try: os.unlink("abc.swf");
90 ret,output = runcmd("./parser",[self.file],wait=60)
91 self.compile_error = 0
92 self.compile_output = output
94 self.compile_error = 1
95 if not os.path.isfile("abc.swf"):
96 self.compile_error = 1
99 ret,output = runcmd("flashplayer",["abc.swf"],wait=1)
100 os.system("killall flashplayer")
101 self.flash_output = output
103 if not check(self.flash_output):
107 print self.r(str(self.nr),3)," ",
108 if self.compile_error:
116 if not self.flash_error:
125 def doprintlong(self):
126 print self.nr, self.file
127 print "================================"
128 print "compile:", (test.compile_error and "error" or "ok")
129 print test.compile_output
132 print "================================"
133 print "run:", (test.flash_error and "error" or "ok")
134 print test.flash_output
135 print "================================"
140 return (" "*(l-len(s))) + s
144 return s + (" "*(l-len(s)))
146 class Test(TestBase):
147 def __init__(self, nr, file):
148 TestBase.__init__(self, nr, file, run=1)
150 if not self.compile_error:
153 class ErrTest(TestBase):
154 def __init__(self, nr, file):
155 TestBase.__init__(self, nr, file, run=0)
157 self.compile_error = not self.compile_error
160 def __init__(self, dir):
162 self.errtest = "err" in dir
164 print "-"*40,"tests \""+self.dir+"\"","-"*40
165 for file in sorted(os.listdir(self.dir)):
166 if not file.endswith(".as"):
169 file = os.path.join(self.dir, file)
170 if checknum>=0 and nr!=checknum:
173 test = ErrTest(nr,file)
184 checknum = int(sys.argv[1])
187 nr = Suite("err").run(nr)
188 nr = Suite("ok").run(nr)