def RunTestCases(lang, vdmApp, clientID): toolMediator = ToolMediator(vdmApp, clientID) total = 1 # jobSize is used to give a low level of outputting jobSize = cmdline.LookUp('spec-job-size') # Initialize the extraction of test cases. gentestcases.StartSearch('api', lang, 'impl') name = gentestcases.NextTestCase() while (name != None): report.setTestCaseName(name) if (total % jobSize) == 1: report.Progress( 2, "Handling test cases " + str(total) + "..." + str(total + jobSize - 1)) report.Progress(3, "Running " + name) ok = RunApiTestCase(name, lang, toolMediator) if util.CleanFile(ok): bn = util.ExtractName(name) util.DeleteFiles([bn + ".vdm"]) name = gentestcases.NextTestCase() total = total + 1 return true
def executeImpl(lang): # counter to indicate progress total = 1 # jobSize is used to give a low level of outputting jobSize = cmdline.LookUp('spec-job-size') # Initialize the extraction of test cases. gentestcases.StartSearch('java', lang, 'impl') name = gentestcases.NextTestCase() while (name != None): report.setTestCaseName(name) if (total % jobSize) == 1: report.Progress( 2, "Handling test cases " + str(total) + "..." + str(total + jobSize - 1)) report.Progress(3, "Running " + name) (ok, modules) = RunImplTestCase(name, lang) if util.CleanFile(ok): bn = util.ExtractName(name) util.DeleteFiles([ bn + ".vdm", bn + ".res", "TMAIN.java", "compare.arg", "compare.vdm" ]) if modules: for mod in modules: util.DeleteFiles([ mod + ".java", "external_" + mod + ".java", mod + ".class" ]) name = gentestcases.NextTestCase() total = total + 1
def executeImpl(lang, dtc): # counter to indicate progress total = 1 # jobSize is used to give a low level of outputting jobSize = cmdline.LookUp('spec-job-size') # Initialize the extraction of test cases. gentestcases.StartSearch('ip', lang, 'impl') name = gentestcases.NextTestCase() while (name != None): report.setTestCaseName(name) if (total % jobSize) == 1: report.Progress(2, "Handling test cases " + str(total) + "..." + str(total + jobSize-1)) report.Progress(3, "Running " + name) ok = PrepareImplCase(name, lang) if ok: ok = RunImplTestCase(name, lang,dtc) if util.CleanFile(ok): util.RemoveTestFiles(name,[".vdm",".res",".arg"]) name = gentestcases.NextTestCase() total = total +1 util.MoveProfile()
def RunCommand(cmd, okExit=None, diagnosis=None, giveMeOutput = false, expectErr = false): report.Progress(4,"Running command: " + cmd) stdout = "" stderr = None if IsWindowsOS(): cmd = "(" + cmd + ")" else: cmd = cmd #+ " 2>&1" output = os.popen(cmd) stdout = output.read() exitCode = output.close() if exitCode == None: exitCode = 0 if cmdline.LookUp('show-errors-in-progress'): if stdout != None and stdout != "": report.Progress(1, "*** Standard output\n" + stdout + "\n***") if stderr != None and stderr != "": report.Progress(1, "*** Standard error\n" + stderr + "\n***") if (exitCode != okExit and okExit != None): report.Error("Command '" + cmd + "' returned with exit code "+ str(exitCode) + " different from " + str(okExit), diagnosis, stdout, stderr) else: if stderr != None and stderr != "" and not expectErr: report.Error("Command '" + cmd + "' generated the following on standard error", None, None, stderr) return (exitCode, stdout, stderr)
def executeImpl(lang, posdef): # counter to indicate progress total = 1 # jobSize is used to give a low level of outputting jobSize = cmdline.LookUp('spec-job-size') # Initialize the extraction of test cases. gentestcases.StartSearch('tc', lang, 'impl') name = gentestcases.NextTestCase() while (name != None): report.setTestCaseName(name) if (total % jobSize) == 1: report.Progress( 2, "Handling test cases " + str(total) + "..." + str(total + jobSize - 1)) report.Progress(3, "Running " + name) ok = RunImplTestCase(name, lang, posdef) if util.CleanFile(ok): bn = util.ExtractName(name) util.DeleteFiles([bn + ".vdm"]) name = gentestcases.NextTestCase() total = total + 1 util.MoveProfile()
def CompareResult(fullName, outputFile, resFile, interpreter, structTest=true): report.Progress(4, "Comparing result for '" + fullName + "' using diff method") # compare the results using normal "diff" actualResult = util.ReadFile(outputFile) expectedResult = util.ReadFile(resFile) # Remove duplicate white spaces and line breaks, spaces around commas and parenthesis. actualResult = re.sub("\s+", " ", actualResult).strip() expectedResult = re.sub("\s+", " ", expectedResult).strip() actualResult = re.sub("\s*,\s*", ",", actualResult).strip() expectedResult = re.sub("\s*,\s*", ",", expectedResult).strip() actualResult = re.sub("\s*\(\s*", "(", actualResult).strip() expectedResult = re.sub("\s*\(\s*", "(", expectedResult).strip() actualResult = re.sub("\s*\)\s*", ")", actualResult).strip() expectedResult = re.sub("\s*\)\s*", ")", expectedResult).strip() if actualResult == expectedResult: return true # Hmmm we need to try to compare using VDMDE then. if structTest and interpreter != None: report.Progress(4, "Comparing result for '" + fullName + "' by build VDM value") # template = util.ReadFile(setup.BaseDir+"/../pogtestcases/compare-pog.vdm") template = util.ReadFile(setup.BaseDir+"/templates/compare-pog.vdm") if template == None: return false data = util.SubString('<<EXPECTED_RESULT>>', expectedResult, template) data = util.SubString('<<ACTUAL_RESULT>>', actualResult, data) ok = util.WriteFile("compare.vdm", data) if not ok: return false ok = util.WriteFile(".vdmtest", "compare.arg") # util.CopyFile(setup.BaseDir+"/../pogtestcases/compare-pog.arg","compare.arg") # util.CopyFile(setup.BaseDir+"/general-files/compare.arg","compare.arg") util.CopyFile(setup.BaseDir+"/general-files/compare-pog.arg","compare.arg") # cmd = interpreter + " -a -b compare.vdm" cmd = interpreter + " -i compare.arg compare.vdm" (exitcode, dummy1, dummy2) = util.RunCommand(cmd) ok = (exitcode == 0) else: ok = false if not ok: report.Error("Actual result is different from expected result for '" + fullName + "'", "expected result : " + expectedResult + "\n" + "actual result : " + actualResult) if util.CleanFile(ok): util.DeleteFiles(["comapre.arg"]) return ok
def execute(lang, type): global ext, binext #counter to indicate progress total = 1 #os type if util.IsWindowsOS() and os.environ.get('OSTYPE') == 'win32': ext = "cpp" binext = ".exe" else: ext = "cc" #main() file compiler = cmdline.LookUpWildCard('metaiv', lang, type, 'compiler') flags = cmdline.LookUpWildCard('metaiv', lang, type, 'cflags') MakeDriverAndObjectFiles("driver." + ext, compiler, flags) #Set expected results expSet = resfile.MakeStdExpansionSet('metaiv', lang, 'impl') resfile.RegisterExpansionSet(expSet) #jobSize is used to give a low level of outputting jobSize = cmdline.LookUp('spec-job-size') #initialize the extraction of test cases gentestcases.StartSearch('metaiv', lang, type) name = gentestcases.NextTestCase() while (name != None): #setting report report.setTestCaseName(name) if (total % jobSize) == 1: report.Progress(2, "Handling test cases " + str(total) + "..." + str(total + jobSize - 1)) report.Progress(3, "Running " + name) ok = RunTestCase(name, lang, type) #cleaning up if ok: if util.CleanFile(ok): baseName = util.ExtractName(name) util.DeleteFiles([baseName + ".res"])#, "driver" + binext]) else: break #generates next test case name = gentestcases.NextTestCase() total = total + 1
def RunCommand(cmd, okExit=None, diagnosis=None, giveMeOutput=false, expectErr=false): report.Progress(4, "Running command: " + cmd) stdout = "" stderr = None if IsWindowsOS(): # To ensure that environment variables given on the commandline works, we have to # call the sh commands explicit. # cmd = "(" + cmd + ") > "+ stdoutFile + " 2> " + stderrFile + " < nul" cmd = "(" + cmd + ")" else: cmd = cmd #+ " 2>&1" # p = popen2.Popen3(cmd, true) # p.tochild.close() # returnPid,exitCode = os.waitpid(p.pid, os.WNOHANG) # p.fromchild.close() # if p.childerr != None: # stderr = p.childerr.read() # else: # stdout = p.fromchild.read() output = os.popen(cmd) stdout = output.read() exitCode = output.close() if exitCode == None: exitCode = 0 if cmdline.LookUp('show-errors-in-progress'): if stdout != None and stdout != "": report.Progress(1, "*** Standard output\n" + stdout + "\n***") if stderr != None and stderr != "": report.Progress(1, "*** Standard error\n" + stderr + "\n***") if (exitCode != okExit and okExit != None): report.Error( "Command " + ` cmd ` + " returned with exit code " + ` exitCode ` + " different from " + ` okExit `, diagnosis, stdout, stderr) else: if stderr != None and stderr != "" and not expectErr: report.Error( "Command " + ` cmd ` + " generated the following on standard error", None, None, stderr) return (exitCode, stdout, stderr)
def execute(lang, type): global ext, binext #counter to indicate progress total = 1 #setting the coverage file coverageFile = "rtinfo.ast" #Set expected results expSet = resfile.MakeStdExpansionSet('j2vtf', lang, type) resfile.RegisterExpansionSet(expSet) #jobSize is used to give a low level of outputting jobSize = cmdline.LookUp('spec-job-size') #initialize the extraction of test cases gentestcases.StartSearch('j2vtf', lang, type) name = gentestcases.NextTestCase() while (name != None): #setting report report.setTestCaseName(name) if (total % jobSize) == 1: report.Progress(2, "Handling test cases " + str(total) + "..." + str(total + jobSize - 1)) report.Progress(3, "Running " + name) ok = convert.ConvertLanguage(lang, name) if ok: ok = PrepareSpecCase(name, lang) if ok: ok = RunTestCase(name, lang, type, coverageFile) #cleaning up if ok: if util.CleanFile(ok): baseName = util.ExtractName(name) util.DeleteFiles([baseName + ".vdm", baseName + ".ast", baseName + ".arg", baseName + ".debug", baseName + ".res", baseName + ".arg.res", baseName + ".arg.pt", "debug.arg" ]) #else: # break #generates next test case name = gentestcases.NextTestCase() total = total + 1
def CreateDebugFile(fileName, templateName, extra): base = util.ExtractName(fileName) astFile = base + ".ast" debugFile = base + ".debug" report.Progress(4, "Creating debug (" + debugFile +")") ast = util.ReadFile(astFile) if ast == None: return false template = util.GetTemplate(templateName) if template == None: return false data = util.SubString("<<AST>>", ast, template) for key in extra.keys(): data = util.SubString(key, extra[key], data) ok = util.WriteFile(debugFile, data) if not ok: return false # Make a symlink from the debug file til debug.arg ok = util.SymLink(debugFile, "debug.arg") return ok
def RunImplTestCase(fullName, lang, posdef): ok = convert.ConvertLanguage(lang, fullName) # Remove the files we expect output in to if ok: util.RemoveTestFiles(fullName, [".arg.res"]) # Run the test if ok: interpreter = cmdline.LookUpWildCard('tc', lang, 'impl', 'interpreter', posdef) if posdef == 'pos': defFlg = "" else: defFlg = " -d " localName = util.ExtractName(fullName) + ".vdm" resName = util.ExtractName(fullName) + ".arg.res" cmd = interpreter + defFlg + " -t -f " + localName + " 2>" + resName # Now run the interpreter (exitCode, stdout, stderr) = util.RunCommand(cmd, None, None, true, true) # Ensure that the interpreter actually did type check anything. # That is in contract to if it stoped due to a syntax error or a core dump. # if re.search("Type checking [^\n]* done", stdout) == None: # report.Error("text 'type check ... done' not found on stdout while running the type checker", # "This might be due to a core dump, a syntax error or the like\n" + # "This does anyway indicate that the type checking was never done", # stdout, stderr) # ok = false if ok: expResName = resfile.FindResFile(fullName) # read the result from the result file, and translate it to a list of numbers # result = TranslateResultImpl(stdout) result = TranslateResultImpl(util.ReadFile(resName)) if result == None: ok = false if ok: if expResName == None: print("Not validating result (2)") if util.KeepFile(false): WriteResult(fullName, result) ok = false if ok: # Validate the result. report.Progress( 4, "Validating result with result file: '" + expResName + "'") ok = ValidateResult(fullName, expResName, result, stdout, stderr) if util.KeepFile(ok): WriteResult(fullName, result) return ok
def executeImpl(lang): global srcext, binext # counter to indicate progress total = 1 # jobSize is used to give a low level of outputting jobSize = cmdline.LookUp('spec-job-size') # Initialize the extraction of test cases. gentestcases.StartSearch('cpp', lang, 'impl') name = gentestcases.NextTestCase() while (name != None): report.setTestCaseName(name) if (total % jobSize) == 1: report.Progress(2, "Handling test cases " + `total` + "..." + `total + jobSize-1`) report.Progress(3, "Running " + name) (ok, modules) = RunImplTestCase(name, lang) if util.CleanFile(ok): bn = util.ExtractName(name) util.DeleteFiles([bn+".vdm",bn+".res", "icode." + srcext, "icode" + binext,"CGBase." + srcext, "CGBase.h", "CGBase.obj", "icode.obj", "compare.arg", "compare.vdm"]) if modules: for mod0 in modules: mod = string.replace(mod0, "_", "_u") util.DeleteFiles([mod+"." + srcext, mod+".h", mod+"_anonym." + srcext, mod+"_anonym.h",mod+"_userdef.h", mod + ".obj"]) name = gentestcases.NextTestCase() total = total +1
def SymLink(src, dst, force = false): report.Progress(4,"Creating symlink from '" + src + "' to '" + dst + "'") # remove the destination file. if os.path.exists(dst) or os.path.islink(dst): try: os.remove(dst) except os.error: _, (_, msg), _ = sys.exc_info() report.Error("Error when removing file '" + dst + "': " + msg) return false # Normalize path # This is not allowed under windows. dst = os.path.expanduser(dst.strip()) src = os.path.expanduser(src.strip()) # Check if os contain the function symlink (it doesn't under windows!) if ('symlink' in os.__dict__) and (not IsWindowsOS() or force): try: os.symlink(src,dst) except os.error: _, (_, msg), _ = sys.exc_info() report.Error("Error when making a symlink from '" + src + "' to '" + dst + "': " + msg) return false else: try: shutil.copy(src,dst) except os.error: _, (_, msg), _ = sys.exc_info() report.Error("Error when making a symlink from '" + src + "' to '" + dst + "': " + msg) return false return true
def executeImpl(lang): # counter to indicate progress total = 1 # jobSize is used to give a low level of outputting jobSize = cmdline.LookUp('spec-job-size') # Initialize the extraction of test cases from javacg-code and java2vdm. StartCollectionOfTests() AddTestsFromHierarchy(cmdline.GetTestCases('java2vdm'), lang) while (testCases != []): test = testCases[0] report.setTestCaseName(test) if (total % jobSize) == 1: report.Progress( 2, "Handling test cases " + str(total) + "..." + str(total + jobSize - 1)) ok = RunImplTestCase(test, lang) total = total + 1 GetNextTest() return
def PrepareSpecCase(fullName, lang): report.Progress(3, "preparing " + fullName) report.setTestCaseName(fullName) ok = convert.ConvertLanguage(lang, fullName) if ok: parser = cmdline.LookUpWildCard('cpp', lang, 'spec', 'parser') ok = convert.VDM2AST(fullName, parser, true) if ok: ok = convert.CreateOptionsFile(fullName) if ok: convert.CreateDebugFile(fullName, "debug-file-cpp", {'<<CGKIND>>' : '<CPP>'} ) if ok: ok = convert.CreateArgFile(fullName, "arg-file-cpp", {'<<CGKIND>>' : '<CPP>'} ) if ok: ok = convert.AppendToDotVdmtest(fullName) # Clean up if test case failed if not ok and util.CleanFile(ok): baseName = util.ExtractName(fullName) util.DeleteFiles([baseName+".vdm", baseName+".ast", baseName+".arg", baseName+".debug", "debug.arg"]) return ok
def PrepareSpecCase(name, lang): report.Progress(3, "Preparing " + name) report.setTestCaseName(name) parser = cmdline.LookUpWildCard('j2vtf', lang, 'spec', 'parser') ok = convert.VDM2AST(name, parser, false) if ok: ok = convert.CreateOptionsFile(name) if ok: extra = GetIdSet() ok = convert.CreateDebugFile(name, "debug-file-j2vtf", extra) if ok: ok = convert.CreateArgFile(name, "arg-file-j2vtf", extra) util.DeleteFiles([".vdmtest"]) if ok: ok = convert.AppendToDotVdmtest(name) # Clean up if preparation failed if not ok and util.CleanFile(ok): baseName = util.ExtractName(name) util.DeleteFiles([ baseName + ".arg", baseName + ".ast", baseName + ".debug", "debug.arg" ]) return ok
def HasIgnoreFile(fullName): (files, posList) = FindFile(fullName, "ignore") path = os.path.dirname(fullName) if files == []: return (false, false) else: report.Progress(4, "Ignore files found: " + path + "/" + files[0]) silence = (files[0].find("-silently") != -1) return (true, silence)
def FindResFile(fullName): (files, posList) = resfile.FindFile(fullName, "res-pog") path = os.path.dirname(fullName) if len(files) == 1: report.Progress(4, "Expected result file is: " + path + "/" + files[0]) return path + "/" + files[0] else: return resfile.FindResFile(fullName)
def RunSpecTestCases(names, lang, posdef, coverageFile): # remove files we expect output in to. for fullName in names: util.RemoveTestFiles(fullName, [".arg.pt", ".arg.res"]) # run the test cases interpreter = cmdline.LookUpWildCard('tc', lang, 'spec', 'interpreter', posdef) cmd = interpreter + " -a -b -I -D -P -R " + coverageFile exitCode = util.RunCommand( cmd, 0, "Possible core dump while interpreting specification.", false, true) okNames = [] # Now validate the results for fullName in names: bn = util.ExtractName(fullName) resName = bn + ".arg.res" report.setTestCaseName(fullName) # See if a result file was created if not os.path.exists(resName): report.Error( "No result generated for test case " + fullName, "Maybe the interpreting toolbox failed for one of the previous test cases" ) continue # read the result from the result file, and translate it to a list of numbers result = TranslateResultSpec(fullName) if result == None: continue # Find the expected result file expResName = resfile.FindResFile(fullName) if expResName == None: if util.KeepFile(false): WriteResult(fullName, result) continue # Validate the result. report.Progress( 4, "Validating result with result file: '" + expResName + "'") ok = ValidateResult(fullName, expResName, result, None, None) if ok: okNames.append(fullName) if util.KeepFile(ok): WriteResult(fullName, result) return okNames
def CreateOptionsFile(fileName): filestem = util.StripExt(fileName) optionsFileName = filestem + '.opt' if os.path.exists(optionsFileName): linkName = os.path.basename(optionsFileName) else: linkName = "nulloptions" optionsFileName = setup.BaseDir+"/general-files/nulloptions" report.Progress(3, "Linking options file " + optionsFileName); ok = util.SymLink(optionsFileName, linkName) return ok
def execute(lang, type): for dtc in ['dtcon','dtcoff']: if cmdline.LookUp('IP-Type')[dtc]: report.SetIPType(dtc) report.Progress(1, "Running interpreter with " + dtc) util.SetProfileBaseName("gmon-ip-"+lang+"-"+type+"-"+dtc+"-"+cmdline.StartDate()) RegisterExpansionSet(lang, dtc, type) if (type == 'spec'): executeSpec(lang, dtc) else: executeImpl(lang, dtc)
def GetPackage(fullName): data = util.ReadFile(fullName) if data == None: return "" regexp = re.compile("^package (.*)\s*;", re.M) match = regexp.search(data, 0) if match == None: return "" else: report.Progress(4, "Found package " + match.group(1) + " in " + fullName) return match.group(1)
def VDM2AST(fileName, parser, typeCheck): base = util.ExtractName(fileName) vdmFile = base + ".vdm" astFile = base + ".ast" report.Progress( 4, "Converting testcase from VDM to AST (creating " + astFile + ")") # First delete the m4pp file. if (os.path.exists("m4pp")): try: os.unlink("m4pp") except os.error, (no, msg): report.Error("Error while removing 'm4pp': " + msg) return false
def CompareRunTimeError(resFile): report.Progress(4, "Searching for runtime error") actualResult = util.ReadFile(resFile) if actualResult == None: return None if actualResult.find("Run-Time Error") != -1: expectedResult = util.ReadFile(resFile) actualResult = re.sub("\s+", " ", actualResult).strip() expectedResult = re.sub("Run-Time Error[ 0-9]*:", "Run-Time Error ", expectedResult) expectedResult = re.sub("\s+", " ", expectedResult).strip() return actualResult == expectedResult else: return None
def VDM2AST(fileName,parser, typeCheck): base = util.ExtractName(fileName) vdmFile = base + ".vdm" astFile = base + ".ast" report.Progress(4, "Converting testcase from VDM to AST (creating " + astFile + ")") # First delete the m4pp file. if (os.path.exists("m4pp")): try: os.unlink("m4pp") except os.error: _, (_, msg), _ = sys.exc_info() report.Error("Error while removing 'm4pp': " + msg) return false # run the parser if typeCheck: cmd = parser + " -ta " + vdmFile else: cmd = parser + " -pa " + vdmFile (exitCode, stdout, stderr) = util.RunCommand(cmd, 0, "Error in input file (" + vdmFile +"), possible syntax error") if exitCode != 0: return false # verify that a m4pp file has been created. if not os.path.exists("m4pp"): report.Error("command '" + cmd + "' didn't produce a m4pp file, though return code was 0", "Command may not be a vdmde command with -pa flag") return false # Finally move m4pp to 'astFile' if (os.path.exists(astFile)): try: os.unlink(astFile) except os.error: _, (_, msg), _ = sys.exc_info() report.Error("Error while removing " + astFile + ": " + msg) return false try: os.rename('m4pp', astFile) except os.error: _, (_, msg), _ = sys.exc_info() report.Error("Couldn't move file 'm4pp' to " + astFile + ": " + msg) return false return true
def FindResFile(fullName): (files, posList) = FindFile(fullName, "res") path = os.path.dirname(fullName) if files == []: report.Error("No expected result file found for " + util.join(posList, ", ")) return None elif len(files) > 1: report.Error("Several possible expected result files found: " + util.join(files, ", ")) return None else: report.Progress(4, "Expected result file is: " + path + "/" + files[0]) return path + "/" + files[0]
def PrepareSpecCase(fullName, lang, dtc): report.Progress(3, "preparing " + fullName) report.setTestCaseName(fullName) ok = convert.ConvertLanguage(lang, fullName) if ok: parser = cmdline.LookUpWildCard('ip', lang, 'spec', 'parser', dtc) ok = convert.VDM2AST(fullName, parser, false) if ok: ok = convert.CreateOptionsFile(fullName) argStr = CreateArgumentAst(fullName, lang) if argStr == None: ok = false if dtc == 'dtcon': dtcbool = 'true' else: dtcbool = 'false' if ok: convert.CreateDebugFile(fullName, "debug-file-ip", { '<<ARG>>': argStr, '<<DTC>>': dtcbool }) if ok: ok = convert.CreateArgFile(fullName, "arg-file-ip", { '<<ARG>>': argStr, '<<DTC>>': dtcbool }) if ok: ok = convert.AppendToDotVdmtest(fullName) # Clean up if test case failed if not ok and util.CleanFile(ok): baseName = util.ExtractName(fullName) util.DeleteFiles([ baseName + ".vdm", baseName + ".ast", baseName + ".arg", baseName + ".debug" ]) return ok
def execute(): for env in setup.availableTestenv: if cmdline.RunTestEnv(env): report.SetTestEnvName(env) for lang in setup.availableLanguages: if cmdline.LookUp('Language')[lang]: report.SetLanguage(lang) for type in ['spec', 'impl']: if cmdline.LookUp('Run-Type')[type]: report.SetRunType(type) report.Progress( 1, "Running " + env + " - " + type + ". test case for " + lang) if (env == 'tc'): tcrun.execute(lang, type) elif (env == 'ip'): iprun.execute(lang, type) elif (env == 'cpp'): cpprun.execute(lang, type) elif (env == 'java'): javarun.execute(lang, type) elif (env == 'api'): apirun.execute(lang, type) elif (env == 'debug'): debugrun.execute(lang, type) elif (env == 'parser'): parserrun.execute(lang, type) elif (env == 'rose'): roserun.execute(lang, type) elif (env == 'metaiv'): metaivrun.execute(lang, type) elif (env == 'rtf'): rtfrun.execute(lang, type) elif (env == 'java2vdm'): java2vdmrun.execute(lang, type) elif (env == 'j2vtf'): j2vtfrun.execute(lang, type) elif (env == 'pog'): pogrun.execute(lang, type)
def execute(lang, type): # if lang == 'rt': # report.Progress(3,"Skipping rt for type checker - not applicable") # return for posdef in ['pos', 'def']: if cmdline.LookUp('TC-Type')[posdef]: report.setTypeTestType(posdef) report.Progress(1, "Running " + posdef + " test cases") util.SetProfileBaseName("gmon-tc-" + lang + "-" + type + "-" + posdef + "-" + cmdline.StartDate()) RegisterExpansionSet(lang, type, posdef) if (type == 'spec'): executeSpec(lang, posdef) else: executeImpl(lang, posdef)
def VerifyPresenceOfGeneratedFiles(fullName, modules): global srcext ok = true extensions = ["." + srcext, ".h", "_anonym." + srcext, "_anonym.h"] for mod0 in modules: mod = mod0.replace("_", "_u") for thisext in extensions: if not util.UsesVisualStudio() or mod != 'MATH' or thisext != '.h': if not os.path.exists(mod + thisext): report.Error("file '" + mod + thisext + "' was not generated for testcase '" + fullName + "'") report.Progress( 4, "file '" + mod + thisext + "' was not generated for testcase '" + fullName + "'") ok = false return ok