from optparse import OptionParser
CMD_ARGS=[]
-#CMD = "./parser"
-CMD="as3compile"
+CMD = "./parser"
+#CMD="as3compile"
CMD_ARGS=["-o","abc.swf"]
def check(s):
return 0
i = line.index('/')
try:
- nr,len = int(line[3:i]),int(line[i+1:])
+ nr,l = int(line[3:i]),int(line[i+1:])
except ValueError:
return 0
- if nr<1 or nr>len:
+ if nr<1 or nr>l:
return 0
if not row:
- row = [0]*len
+ row = [0]*l
+ elif l != len(row):
+ return 0
if row[nr-1]:
return 0
row[nr-1] = 1
output += os.read(fi, 8192)
if "[exit]" in output:
break
- if "rror" in output:
+ if "== by" in output:
+ ret = -33
break
ret = p.poll()
if ret is not None:
+ if cmd == "valgrind":
+ # valgrind never returns true
+ ret = 0
break
time.sleep(0.1)
else:
os.kill(p.pid, 9)
os.system("killall -9 %s >/dev/null 2>/dev/null" % cmd)
+ ret = -1
fo.close()
if fi in select.select([fi],[],[], 0.01)[0]:
parser.add_option("-d", "--diff", dest="diff", help="Only run tests that failed the last time",action="store_true")
parser.add_option("-a", "--all", dest="all", help="Run all tests (also tests expected to fail)",action="store_true")
parser.add_option("-t", "--tag", dest="tag", help="Mark the current pass/fail statistic as milestone",action="store_true")
+ parser.add_option("-m", "--valgrind", dest="valgrind", help="Run compiler through valgrind",action="store_true")
(options, args) = parser.parse_args()
if args and args[0]=="add":
self.runtime = 1
if self.tag:
self.all = 1
- self.runtime = 5 # allow more time if we're tagging this state
+ self.runtime = 3 # allow more time if we're tagging this state
+
+ if self.valgrind:
+ global CMD,CMD_ARGS
+ CMD_ARGS = [CMD] + CMD_ARGS
+ CMD = "valgrind"
+ self.runtime = 20 # allow even more time for valgrind
self.checknum=-1
+ self.checkfile=None
if len(args):
- self.checknum = int(args[0])
+ try:
+ self.checknum = int(args[0])
+ except ValueError:
+ self.checkfile = args[0]
@staticmethod
def load(filename):
fi.close()
def highlight(self, nr, filename):
+ if self.checkfile and filename==self.checkfile:
+ return 1
return self.checknum==nr
def skip_file(self, nr, filename):
if self.checknum>=0 and nr!=self.checknum:
return 1
+ if self.checkfile and filename!=self.checkfile:
+ return 1
if not self.all and self.milestone.get(filename,"new")!="ok":
return 1
if self.diff and self.filename2status(filename,"new")=="ok":
return 1
def run(self):
- ret,output = runcmd("flashplayer",["abc.swf"],wait=cache.runtime)
+ ret,output = runcmd("flashplayer",[os.path.join(os.getcwd(),"abc.swf")],wait=cache.runtime)
os.system("killall flashplayer")
self.flash_output = output