add codegen-test to CI

This commit is contained in:
Awal Garg 2017-12-20 20:46:25 +05:30 committed by Fabian
parent c7164b6f00
commit 7997defdfb
4 changed files with 21 additions and 15 deletions

3
.travis-run-codegen.sh Executable file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -e
make codegen-test

View file

@ -14,3 +14,4 @@ env:
- TEST_SUITE=integration
- TEST_SUITE=unit-qemu
- TEST_SUITE=nasm
- TEST_SUITE=codegen

View file

@ -174,6 +174,7 @@ build/v86-debug.wasm: src/native/*.c src/native/*.h src/native/codegen/*.c src/n
ls -lh build/v86-debug.wasm
build/codegen-test.wasm: src/native/*.c src/native/*.h src/native/codegen/*.c src/native/codegen/*.h
mkdir -p build
emcc src/native/codegen/api.c \
-Isrc/native/ -Isrc/native/profiler/ \
-Wall -Wpedantic -Wextra \
@ -239,3 +240,6 @@ kvm-unit-test: build/libv86.js build/v86.wasm
(cd tests/kvm-unit-tests && ./configure)
$(MAKE) -C tests/kvm-unit-tests
tests/kvm-unit-tests/run.js tests/kvm-unit-tests/x86/realmode.flat
codegen-test: build/codegen-test.wasm
./tests/codegen/codegen.js

28
tests/codegen.js → tests/codegen/codegen.js Normal file → Executable file
View file

@ -1,14 +1,15 @@
#!/usr/bin/env node
"use strict";
const fs = require("fs");
global.v86util = {};
require("../src/browser/lib.js");
require("../../src/browser/lib.js");
const Codegen = require("../src/codegen.js");
const Codegen = require("../../src/codegen.js");
console.assert(typeof Codegen === "function");
const codegen_module_buffer = fs.readFileSync(__dirname + "/../build/codegen-test.wasm");
const codegen_module_buffer = fs.readFileSync(__dirname + "/../../build/codegen-test.wasm");
const vals = {
imm8: 1,
@ -38,7 +39,12 @@ v86util.load_wasm("build/codegen-test.wasm", {
g$_previous_ip() { return vals.previous_ip; },
}
}, function(wm) {
return test(new Codegen(wm));
try {
test(new Codegen(wm));
} catch(er) {
console.error(er);
process.exit(1);
}
});
function test(gen)
@ -66,7 +72,7 @@ function test(gen)
gen.finish();
buf = gen.get_module_code();
fs.writeFileSync(__dirname + "/../build/codegen-test-output.wasm", buf);
fs.writeFileSync(__dirname + "/../../build/codegen-test-output.wasm", buf);
const module = new WebAssembly.Module(buf);
@ -100,14 +106,6 @@ function test(gen)
const view = new Uint32Array(imports.e.m.buffer);
console.assert(view[vals.instruction_pointer] === 10);
console.assert(view[vals.previous_ip] === 10);
if (JSON.stringify(store) === JSON.stringify(expected))
{
console.log("Test passed");
}
else
{
console.error("Test failed");
console.log("Expected:", expected);
console.log("Got:", store);
}
console.log(store);
console.assert(JSON.stringify(store) === JSON.stringify(expected));
}