mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-26 07:01:33 +00:00
Run cmake tests as part of a rust test
This commit is contained in:
1
Makefile
1
Makefile
@ -40,6 +40,7 @@ test:
|
|||||||
# cargo test --all -- --test-threads=1 $(runargs)
|
# cargo test --all -- --test-threads=1 $(runargs)
|
||||||
# cargo test --all --exclude wasmer-emscripten -- --test-threads=1 $(runargs)
|
# cargo test --all --exclude wasmer-emscripten -- --test-threads=1 $(runargs)
|
||||||
cargo test -p wasmer-spectests -- --test-threads=1 $(runargs)
|
cargo test -p wasmer-spectests -- --test-threads=1 $(runargs)
|
||||||
|
cargo test -p wasmer-runtime-c-api -- --nocapture
|
||||||
|
|
||||||
release:
|
release:
|
||||||
# If you are in OS-X, you will need mingw-w64 for cross compiling to windows
|
# If you are in OS-X, you will need mingw-w64 for cross compiling to windows
|
||||||
|
@ -4,5 +4,7 @@
|
|||||||
Run `make capi` from wasmer project root directory
|
Run `make capi` from wasmer project root directory
|
||||||
|
|
||||||
## Running tests
|
## Running tests
|
||||||
`cmake . && make && make test` from runtime-c-api/tests directory
|
The tests can be run via `cargo test`, E.g. `cargo test -p wasmer-runtime-c-api -- --nocapture`
|
||||||
(TODO run this within a rust test)
|
|
||||||
|
*Running manually*
|
||||||
|
`cmake . && make && make test` from the `lib/runtime-c-api/tests` directory
|
||||||
|
@ -1,4 +1,39 @@
|
|||||||
|
use std::process::Command;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_c_api() {
|
fn test_c_api() {
|
||||||
// TODO run `cmake . && make && make test`
|
let project_tests_dir = concat!(env!("CARGO_MANIFEST_DIR"), "/tests");
|
||||||
|
run_command("cmake", project_tests_dir, Some("."));
|
||||||
|
run_command("make", project_tests_dir, None);
|
||||||
|
run_command("make", project_tests_dir, Some("test"));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn run_command(command_str: &str, dir: &str, arg: Option<&str>) {
|
||||||
|
println!("Running command: `{}` arg: {:?}", command_str, arg);
|
||||||
|
let mut command = Command::new(command_str);
|
||||||
|
if let Some(a) = arg {
|
||||||
|
command.arg(a);
|
||||||
|
}
|
||||||
|
command.current_dir(dir);
|
||||||
|
let result = command.output();
|
||||||
|
match result {
|
||||||
|
Ok(r) => {
|
||||||
|
println!("output:");
|
||||||
|
if let Some(code) = r.status.code() {
|
||||||
|
println!("status: {}", code);
|
||||||
|
} else {
|
||||||
|
println!("status: None");
|
||||||
|
}
|
||||||
|
println!("stdout:");
|
||||||
|
println!("{}", String::from_utf8_lossy(&r.stdout[..]));
|
||||||
|
println!("stderr:");
|
||||||
|
println!("{}", String::from_utf8_lossy(&r.stderr[..]));
|
||||||
|
if r.status.success() {
|
||||||
|
assert!(true)
|
||||||
|
} else {
|
||||||
|
panic!("Command failed with exit status: {:?}", r.status);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(e) => panic!("Command failed: {}", e),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user