mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-08-25 21:17:03 +00:00
84 lines
2.1 KiB
Python
Executable File
84 lines
2.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import os
|
|
import commands
|
|
import re
|
|
|
|
PATH = os.path.abspath(os.path.join(os.path.dirname(__file__)))
|
|
|
|
|
|
def get_tests_cases():
|
|
ret = []
|
|
for filename in os.listdir("TestCases"):
|
|
ret.append("TestCases/%s" % filename)
|
|
return ret
|
|
# return ["TestCases/2.j"]
|
|
|
|
def get_expected_output(test_case):
|
|
f = open(test_case)
|
|
content = f.readlines();
|
|
f.close()
|
|
|
|
status = int(content[0].replace("// Expected output: ", ""))
|
|
|
|
recording = False
|
|
output = []
|
|
|
|
for line in content:
|
|
if "END_EXPECTED" in line:
|
|
recording = False
|
|
break;
|
|
|
|
if "START_EXPECTED" in line:
|
|
recording = True
|
|
continue
|
|
|
|
if recording:
|
|
output.append(line)
|
|
|
|
output = "".join(output);
|
|
output = output.replace("[__PATH__]", "%s/%s" % (PATH, test_case))
|
|
output = cleanup_output(output)
|
|
|
|
return (status, output)
|
|
|
|
|
|
def get_actual_output(test_case):
|
|
status, output = commands.getstatusoutput("objj %s" % test_case)
|
|
output = cleanup_output(output)
|
|
return (status, output)
|
|
|
|
|
|
def cleanup_output(output):
|
|
if not output:
|
|
return ""
|
|
output = output.replace(" ", "")
|
|
output = output.replace("\n", "")
|
|
output = output.replace("[0m", "")
|
|
output = re.sub('\d*offile\[unknown\]', '', output)
|
|
return re.sub('[^\s!-~]', '', output)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
for test in get_tests_cases():
|
|
|
|
expected_status, expected_output = get_expected_output(test)
|
|
actual_status, actual_output = get_actual_output(test)
|
|
|
|
print "########################################"
|
|
print "Testing %s" % test
|
|
errored = False
|
|
if expected_status != actual_status:
|
|
errored = True
|
|
print " Error in %s: Status code is different: expected %d, actual %d" % (test, expected_status, actual_status)
|
|
|
|
if expected_output != actual_output:
|
|
errored = True
|
|
print " Error in %s. Outputs are different" % test
|
|
print " EXPECTED: %s" % expected_output
|
|
print " ACTUAL: %s" % actual_output
|
|
|
|
if not errored:
|
|
print " OK"
|