Closed mssun closed 6 years ago
Does it spawn actual processes? Ours just creates new threads and executes the commands in-process so that code coverage works.
Oh,that issue is caused by ptrace
-based coverage report tool. Because we are using gcov
(compiler instrumentation-based method), I think we can safely spawn processes and get accurate code coverage report. Anyway, let me verify my thought first.
It works as expected.
diff --git a/tests/gnu/test_arch.rs b/tests/gnu/test_arch.rs
index e6a4401..7f5863e 100644
--- a/tests/gnu/test_arch.rs
+++ b/tests/gnu/test_arch.rs
@@ -7,13 +7,18 @@
//
use util::*;
+extern crate assert_cmd;
+use std::process::Command;
+use self::assert_cmd::prelude::*;
#[test]
#[cfg(target_arch = "x86_64")]
fn test_x86_64() {
- new_ucmd!()
- .succeeds()
- .stdout_only("x86_64\n");
+ Command::main_binary()
+ .unwrap()
+ .args(&["arch"])
+ .assert()
+ .stdout("x86_64\n");
}
#[test]
For the issue I mentioned here: https://github.com/rust-lang-nursery/cli-wg/issues/9#issuecomment-385530575
It can be solve with a rustc wrapper: https://github.com/mesalock-linux/mesabox/blob/master/ci/cov-rustc
In this way, we can add coverage-related flags to both mesabox
and tests
crate names.
I'm not opposed to this change then (assuming assert_cmd
has everything we need, which I haven't verified).
Sorry, should be assert_cli
. I changed the title accordingly.
Edit: assert_cli
is deprecated. We use assert_cmd
instead.
I'm working on this in this PR: https://github.com/mesalock-linux/mesabox/pull/24
Merged.
Can we replace our self-maintained test utility with
assert_cmd
? (https://github.com/assert-rs/assert_cmd). Seems thatassert_cmd
provides most of functions we have, but I'm not sure what is still missing.