add lua integration test (#109)

This commit is contained in:
Mackenzie Clark
2019-02-08 17:47:51 -08:00
committed by GitHub
parent 9a56680281
commit e7c3b99ba9
5 changed files with 39 additions and 15 deletions

View File

@ -42,6 +42,7 @@ jobs:
command: | command: |
sudo apt-get install -y cmake sudo apt-get install -y cmake
- run: make test - run: make test
- run: make integration-tests
- save_cache: - save_cache:
paths: paths:
- /usr/local/cargo/registry - /usr/local/cargo/registry

View File

@ -23,7 +23,7 @@ install:
integration-tests: release integration-tests: release
echo "Running Integration Tests" echo "Running Integration Tests"
# Commented for now until we fix emscripten ./integration_tests/lua/test.sh
./integration_tests/nginx/test.sh ./integration_tests/nginx/test.sh
lint: lint:

View File

@ -0,0 +1,9 @@
# `lua` integration test
This starts wasmer with the lua wasm file. The test asserts on
the output of wasmer. Run test with:
```
> ./integration_tests/lua/test.sh
```

15
integration_tests/lua/test.sh Executable file
View File

@ -0,0 +1,15 @@
#! /bin/bash
nohup ./target/release/wasmer run examples/lua.wasm &
sleep 3s
if grep "Lua 5.4.0 Copyright (C) 1994-2018 Lua.org, PUC-Rio" ./nohup.out
then
echo "lua integration test succeeded"
rm ./nohup.out
exit 0
else
echo "lua integration test failed"
rm ./nohup.out
exit -1
fi

View File

@ -7,20 +7,19 @@ use wasmer_runtime_core::vm::Ctx;
pub fn __setjmp(env_addr: u32, ctx: &mut Ctx) -> c_int { pub fn __setjmp(env_addr: u32, ctx: &mut Ctx) -> c_int {
debug!("emscripten::__setjmp (setjmp)"); debug!("emscripten::__setjmp (setjmp)");
unsafe { unsafe {
unimplemented!() // Rather than using the env as the holder of the jump buffer pointer,
// // Rather than using the env as the holder of the jump buffer pointer, // we use the environment address to store the index relative to jumps
// // we use the environment address to store the index relative to jumps // so the address of the jump it's outside the wasm memory itself.
// // so the address of the jump it's outside the wasm memory itself. let jump_index = emscripten_memory_pointer!(ctx.memory(0), env_addr) as *mut i8;
// let jump_index = ctx.memory(0).as_ptr().add(env_addr as usize) as *mut i8; // We create the jump buffer outside of the wasm memory
// // We create the jump buffer outside of the wasm memory let jump_buf: UnsafeCell<[u32; 27]> = UnsafeCell::new([0; 27]);
// let jump_buf: UnsafeCell<[c_int; 27]> = UnsafeCell::new([0; 27]); let jumps = &mut get_emscripten_data(ctx).jumps;
// let jumps = &mut get_emscripten_data(ctx).jumps; let result = setjmp(jump_buf.get() as _);
// let result = setjmp(jump_buf.get() as _); // We set the jump index to be the last value of jumps
// // We set the jump index to be the last value of jumps *jump_index = jumps.len() as _;
// *jump_index = jumps.len() as _; // We hold the reference of the jump buffer
// // We hold the reference of the jump buffer jumps.push(jump_buf);
// jumps.push(jump_buf); result
// result
} }
} }