subweight_core/
testing.rs1use semver::Version;
2use std::{
3 ops::{Deref, DerefMut},
4 path::PathBuf,
5 process::Child,
6};
7
8pub fn root_dir() -> PathBuf {
9 PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("..")
10}
11
12pub fn assert_version(raw: &str, name: &str) {
13 let split = raw.split(' ').collect::<Vec<_>>();
14 assert_eq!(split.len(), 2);
15 let version = split[1];
16
17 assert_eq!(split[0], name);
18 assert!(Version::parse(version).is_ok(), "Version should be a valid Semver");
19 assert_eq!(version, &*crate::VERSION, "Wrong version string");
20}
21
22pub fn succeeds(output: &std::process::Output) {
25 if !output.status.success() {
26 panic!("{}", String::from_utf8_lossy(&output.stderr));
27 }
28}
29
30pub fn assert_contains(output: &str, pattern: &str) {
31 if !output.contains(pattern) {
32 panic!("\nThe output:\n{:?}\nDid not contain the pattern:\n{:?}", output, pattern);
33 }
34}
35
36pub fn assert_not_contains(output: &str, pattern: &str) {
37 if output.contains(pattern) {
38 panic!("\nThe output:\n{:?}\nDid contain the pattern:\n{:?}", output, pattern);
39 }
40}
41
42pub struct KillChildOnDrop(pub Child);
43
44impl Drop for KillChildOnDrop {
45 fn drop(&mut self) {
46 let _ = self.0.kill();
47 }
48}
49
50impl Deref for KillChildOnDrop {
51 type Target = Child;
52
53 fn deref(&self) -> &Self::Target {
54 &self.0
55 }
56}
57
58impl DerefMut for KillChildOnDrop {
59 fn deref_mut(&mut self) -> &mut Self::Target {
60 &mut self.0
61 }
62}