From 865228dc96087324e8d5a5761e877127cf3539da Mon Sep 17 00:00:00 2001 From: Patrik Keller Date: Fri, 10 Sep 2021 17:04:34 +0200 Subject: [PATCH] Run Imp/Wasm tests on NodeJS --- Makefile | 2 +- runtimes/assemblyscript/cli-runner.js | 35 ++++++++++++++--------- runtimes/assemblyscript/package-lock.json | 12 ++++++++ runtimes/assemblyscript/package.json | 3 +- tests/Makefile | 7 +++-- 5 files changed, 41 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 7860e2e35..41b6a39c6 100644 --- a/Makefile +++ b/Makefile @@ -61,7 +61,7 @@ cleanall: Makefile.coq remove_all_derived install-coqdev: @$(MAKE) -f Makefile.coq install -install-local: +install-local: @$(MAKE) install-ocaml ifneq ($(JAVASCRIPT),) @$(MAKE) install-javascript diff --git a/runtimes/assemblyscript/cli-runner.js b/runtimes/assemblyscript/cli-runner.js index 5d02251d8..8c51f62ba 100644 --- a/runtimes/assemblyscript/cli-runner.js +++ b/runtimes/assemblyscript/cli-runner.js @@ -1,31 +1,40 @@ 'use strict'; +const _ = require('lodash'); const fs = require('fs'); const engine = require('./lib/engine.js'); async function main(runtime, module, input, expected) { - console.log("invoke:"); - console.log({runtime, module, input, expected}); let rt = fs.readFileSync(runtime); let mod = fs.readFileSync(module); let arg = JSON.parse(fs.readFileSync(input)); - console.log("input:"); - console.log(arg); let exp = JSON.parse(fs.readFileSync(expected)); - console.log("expected:"); - console.log(JSON.stringify(exp, null, 2)); let res; + let err; try { res = await engine.invoke(rt, mod, "qcert_main", arg); } catch(err) { - console.log("error:"); - console.log(err); - res = { - "error": "Eval failed" - }; + err = err; + res = { "error": "Eval failed" } + } + if (! _.isEqual(res, exp)) { + console.log("TEST FAILED"); + console.log("arguments:"); + console.log({runtime, module, input, expected}); + console.log("input:"); + console.log(arg); + console.log("expected output:"); + console.log(JSON.stringify(exp, null, 2)); + if (err) { + console.log("exception:"); + console.log(err); + process.exit(2); + } else { + console.log("output:"); + console.log(JSON.stringify(res, null, 2)); + process.exit(1) + } } - console.log("output:"); - console.log(JSON.stringify(res, null, 2)); } const rt = process.argv[2]; diff --git a/runtimes/assemblyscript/package-lock.json b/runtimes/assemblyscript/package-lock.json index 6ee257c8c..3375f4c09 100644 --- a/runtimes/assemblyscript/package-lock.json +++ b/runtimes/assemblyscript/package-lock.json @@ -78,6 +78,12 @@ "long": "^4.0.0" } }, + "assemblyscript-regex": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/assemblyscript-regex/-/assemblyscript-regex-1.6.4.tgz", + "integrity": "sha512-LiuyzuPMASyZLRgZrIktyLyZjxihEhHkzfRHv8FPDnLhBn8WefFe45jGF6Ug06/0rMMdNNRuQS3qXVLy9YyO6g==", + "dev": true + }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -627,6 +633,12 @@ "p-locate": "^5.0.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "log-symbols": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", diff --git a/runtimes/assemblyscript/package.json b/runtimes/assemblyscript/package.json index 631797278..c246e6c65 100644 --- a/runtimes/assemblyscript/package.json +++ b/runtimes/assemblyscript/package.json @@ -10,13 +10,14 @@ "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized" }, "author": "", - "license": "ISC", + "license": "Apache-2.0", "dependencies": { "@assemblyscript/loader": "0.0.0" }, "devDependencies": { "assemblyscript": "^0.12.5", "assemblyscript-regex": "^1.6.3", + "lodash": "^4.17.15", "chai": "^4.2.0", "mocha": "^8.0.1" } diff --git a/tests/Makefile b/tests/Makefile index 30fe26ec5..1450ea9dc 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -495,7 +495,7 @@ imp_ejson-tests: @$(MAKE) imp_ejson-wasm-spec-tests ifneq ($(JAVASCRIPT),) @$(MAKE) imp_ejson-js-tests - # @$(MAKE) imp_ejson-wasm-node-tests # TODO. Improve test and enable + @$(MAKE) imp_ejson-wasm-node-tests endif # imp_ejson -> wasm ; run on spec interpreter @@ -538,10 +538,11 @@ imp_ejson-js-tests: --eval-validate \ --query imp_ejson/wasm$(N).js || exit 1; ) -IMPEJSONWASMNODENUM=0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 +IMPEJSONWASMNODENUM=0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # imp_ejson -> wasm ; run on node imp_ejson-wasm-node-tests: + cd ../runtimes/assemblyscript/ && npm install $(foreach N,$(IMPEJSONWASMNODENUM), \ $(QCERTCOMP) imp_ejson/wasm$(N).imp_ejson \ -source imp_ejson -path imp_ejson -target imp_ejson \ @@ -553,7 +554,7 @@ imp_ejson-wasm-node-tests: -source imp_ejson -target wasm \ -schema imp_ejson/wasm.schema && \ $(NODERUN) ../runtimes/assemblyscript/cli-runner.js \ - ../runtimes/assemblyscript/build/untouched.wasm \ + ../runtimes/assemblyscript/runtime.wasm \ imp_ejson/wasm$(N).wasm \ imp_ejson/wasm.input \ imp_ejson/wasm$(N)_imp_ejson.json || exit 1; )