Xamarin Public Jenkins (auto-signing) ef583813eb Imported Upstream version 6.4.0.137
Former-commit-id: 943baa9f16a098c33e129777827f3a9d20da00d6
2019-07-26 19:53:28 +00:00

88 lines
2.0 KiB
Python
Executable File

#!/usr/bin/python
import os
import re
import subprocess
LLVMToolDir = os.getenv('LLVMToolDir')
if not LLVMToolDir:
LLVMToolDir = '.'
cexe_res = []
ll_res = []
cbe_res = []
failure_list = []
def getList(fileExt):
fl = []
for name in os.listdir("."):
if re.search(fileExt, name):
fl.append(name)
fl.sort()
return fl
def genResults(fileExt, fl):
for names in fl:
if os.path.isfile(names):
if (fileExt == ".cexe"):
res = subprocess.call(["./%s" % (names)])
cexe_res.append(res) # append for each optimization level
cexe_res.append(res)
cexe_res.append(res)
cexe_res.append(res)
elif (fileExt == ".ll"):
res = subprocess.call([LLVMToolDir + "/lli", names])
ll_res.append(res)
elif (fileExt == ".cbe"):
res = subprocess.call(["./%s" % (names)])
cbe_res.append(res)
if (res != 6 and res != 25):
catstring = names + ":\tFailure [" + str(res) + "]"
failure_list.append(catstring)
def main():
print "Hunting for bugs... Please wait..."
cexeRegex = ".cexe$"
cexe = ".cexe"
file_list = getList(cexeRegex)
genResults(cexe, file_list)
print 'Running tests:', file_list
irRegex = ".ll$"
llIR = ".ll"
file_list = getList(irRegex)
genResults(llIR, file_list)
cbeRegex = ".cbe$"
cbe = ".cbe"
file_list = getList(cbeRegex)
genResults(cbe, file_list)
print 'cexe_res:', cexe_res
print 'll_res: ', ll_res
print 'cbe_res: ', cbe_res
if (cexe_res == ll_res == cbe_res):
print("Success!")
elif (cexe_res != ll_res == cbe_res):
print("Failure Detected between C and IR! Incorrect Return Values!")
for bug in failure_list:
print(bug)
elif (cexe_res == ll_res != cbe_res):
print("Failure Detected between IR and CBE! Incorrect Return Values!")
for bug in failure_list:
print(bug)
elif (cexe_res != ll_res != cbe_res):
print("Discrepancy between all three types! Incorrect Return Values!")
for bug in failure_list:
print(bug)
if __name__ == "__main__":
main()