mesalock-linux / mesabox

A collection of core system utilities written in Rust for Unix-like systems (and now Windows)
BSD 3-Clause "New" or "Revised" License
137 stars 19 forks source link

Possibility to replace self-maintained test utility with `assert_cli` #21

Closed mssun closed 6 years ago

mssun commented 6 years ago

Can we replace our self-maintained test utility with assert_cmd? (https://github.com/assert-rs/assert_cmd). Seems that assert_cmd provides most of functions we have, but I'm not sure what is still missing.

Arcterus commented 6 years ago

Does it spawn actual processes? Ours just creates new threads and executes the commands in-process so that code coverage works.

mssun commented 6 years ago

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.

mssun commented 6 years ago

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]
image
mssun commented 6 years ago

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.

Arcterus commented 6 years ago

I'm not opposed to this change then (assuming assert_cmd has everything we need, which I haven't verified).

mssun commented 6 years ago

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

mssun commented 6 years ago

Merged.