From b560ac3bacab29c22ea1ed9ddc698d918e39e0dd Mon Sep 17 00:00:00 2001 From: Katelyn Gadd Date: Thu, 13 Aug 2015 12:14:52 -0700 Subject: [PATCH 1/2] Add a simple automated test runner for all the .wasm files in the test directory --- ml-proto/runtests.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100755 ml-proto/runtests.py diff --git a/ml-proto/runtests.py b/ml-proto/runtests.py new file mode 100755 index 0000000000..e43491b9cb --- /dev/null +++ b/ml-proto/runtests.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python + +import os.path +import unittest +import subprocess +import glob + +class RunTests(unittest.TestCase): + def _runTestFile(self, shortName, fileName): + absRunner = os.path.abspath("src/main.native") + print("\n// %s" % shortName) + exitCode = subprocess.call([absRunner, fileName]) + self.assertEqual(0, exitCode, "test runner failed with exit code %i" % exitCode) + +def generate_test_cases(cls, files): + for fileName in files: + absFileName = os.path.abspath(fileName) + attrName = fileName + testCase = lambda self : self._runTestFile(attrName, absFileName) + setattr(cls, attrName, testCase) + +if __name__ == "__main__": + generate_test_cases(RunTests, glob.glob("test/*.wasm")) + unittest.main() \ No newline at end of file From cb52ce2e651241e948d4530d4cb5b6bcc573fdff Mon Sep 17 00:00:00 2001 From: Katelyn Gadd Date: Thu, 13 Aug 2015 12:21:39 -0700 Subject: [PATCH 2/2] runtests automatically compiles the interpreter --- ml-proto/runtests.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/ml-proto/runtests.py b/ml-proto/runtests.py index e43491b9cb..1a0bb389cd 100755 --- a/ml-proto/runtests.py +++ b/ml-proto/runtests.py @@ -6,19 +6,29 @@ import glob class RunTests(unittest.TestCase): - def _runTestFile(self, shortName, fileName): - absRunner = os.path.abspath("src/main.native") + def _runTestFile(self, shortName, fileName, interpreterPath): print("\n// %s" % shortName) - exitCode = subprocess.call([absRunner, fileName]) + exitCode = subprocess.call([interpreterPath, fileName]) self.assertEqual(0, exitCode, "test runner failed with exit code %i" % exitCode) -def generate_test_cases(cls, files): +def generate_test_cases(cls, interpreterPath, files): for fileName in files: absFileName = os.path.abspath(fileName) attrName = fileName - testCase = lambda self : self._runTestFile(attrName, absFileName) + testCase = lambda self : self._runTestFile(attrName, absFileName, interpreterPath) setattr(cls, attrName, testCase) -if __name__ == "__main__": - generate_test_cases(RunTests, glob.glob("test/*.wasm")) +def rebuild_interpreter(): + interpreterPath = os.path.abspath("src/main.native") + + print("// building main.native") + exitCode = subprocess.call(["ocamlbuild", "-libs", "bigarray", "main.native"], cwd=os.path.abspath("src")) + if (exitCode != 0): + raise Exception("ocamlbuild failed with exit code %i" % exitCode) + + return interpreterPath + +if __name__ == "__main__": + interpreterPath = rebuild_interpreter() + generate_test_cases(RunTests, interpreterPath, glob.glob("test/*.wasm")) unittest.main() \ No newline at end of file