aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authordaurnimator <quae@daurnimator.com>2017-06-18 23:51:56 +1000
committerdaurnimator <quae@daurnimator.com>2017-06-19 00:09:46 +1000
commiteb7c47e537361ed8119b478afea49dedd6887983 (patch)
treec4ad6f083078c4e126ab96d5bba133d98416e502 /tests
parent4f0c9181f38355cb74393f6f6cbba56b8bd52e18 (diff)
downloadfengari-eb7c47e537361ed8119b478afea49dedd6887983.tar.gz
fengari-eb7c47e537361ed8119b478afea49dedd6887983.tar.bz2
fengari-eb7c47e537361ed8119b478afea49dedd6887983.zip
tests/tests.js: don't shell out to luac for compiling
Diffstat (limited to 'tests')
-rw-r--r--tests/tests.js32
1 files changed, 13 insertions, 19 deletions
diff --git a/tests/tests.js b/tests/tests.js
index 75e5e19..6c799e5 100644
--- a/tests/tests.js
+++ b/tests/tests.js
@@ -2,24 +2,18 @@
global.WEB = false;
-const fs = require('fs');
-const child_process = require('child_process');
-const tmp = require('tmp');
-
-const lua = require("../src/lua.js");
-const lauxlib = require("../src/lauxlib.js");
-
-const toByteCode = function (luaCode) {
- var luaFile = tmp.fileSync();
-
- fs.writeSync(luaFile.fd, luaCode);
-
- child_process.execSync(`luac -o ${luaFile.name}.bc ${luaFile.name}`);
-
- let b = fs.readFileSync(`${luaFile.name}.bc`);
- let dv = new DataView(b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength));
-
- return dv;
+const lua = require("../src/lua.js");
+const lauxlib = require("../src/lauxlib.js");
+
+const toByteCode = function(luaCode) {
+ let L = getState(luaCode);
+ let b = [];
+ if (lua.lua_dump(L, function(L, b, size, B) {
+ B.push(...b.slice(0, size));
+ return 0;
+ }, b, false) !== 0)
+ throw Error("unable to dump given function");
+ return new DataView(Uint8Array.from(b).buffer);
};
const getState = function(luaCode) {
@@ -28,7 +22,7 @@ const getState = function(luaCode) {
throw Error("unable to create lua_State");
if (lauxlib.luaL_loadstring(L, lua.to_luastring(luaCode)) !== lua.LUA_OK)
- return Error(lua.lua_tojsstring(L, -1));
+ throw Error(lua.lua_tojsstring(L, -1));
return L;
};