2019-07-16 10:28:55 +00:00
|
|
|
use std::path::PathBuf;
|
|
|
|
|
|
|
|
#[macro_export]
|
|
|
|
macro_rules! nu {
|
|
|
|
($out:ident, $cwd:expr, $commands:expr) => {
|
|
|
|
use std::error::Error;
|
|
|
|
use std::io::prelude::*;
|
|
|
|
use std::process::{Command, Stdio};
|
|
|
|
|
|
|
|
let commands = &*format!("
|
|
|
|
cd {}
|
|
|
|
{}
|
|
|
|
exit",
|
|
|
|
$cwd,
|
|
|
|
$commands);
|
|
|
|
|
|
|
|
let process = match Command::new(helpers::executable_path())
|
|
|
|
.stdin(Stdio::piped())
|
|
|
|
.stdout(Stdio::piped())
|
|
|
|
.spawn() {
|
|
|
|
Ok(child) => child,
|
|
|
|
Err(why) => panic!("Can't run test {}", why.description()),
|
|
|
|
};
|
|
|
|
|
|
|
|
match process.stdin.unwrap().write_all(commands.as_bytes()) {
|
|
|
|
Err(why) => panic!("couldn't write to wc stdin: {}", why.description()),
|
|
|
|
Ok(_) => {}
|
|
|
|
}
|
|
|
|
|
|
|
|
let mut _s = String::new();
|
|
|
|
|
|
|
|
match process.stdout.unwrap().read_to_string(&mut _s) {
|
|
|
|
Err(why) => panic!("couldn't read stdout: {}", why.description()),
|
|
|
|
Ok(_) => {
|
|
|
|
let _s = _s.replace("\r\n", "\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-07-16 10:53:19 +00:00
|
|
|
let _s = _s.replace("\r\n", "");
|
2019-07-16 10:28:55 +00:00
|
|
|
let $out = _s.replace("\n", "");
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#[macro_export]
|
|
|
|
macro_rules! nu_error {
|
|
|
|
($out:ident, $cwd:expr, $commands:expr) => {
|
|
|
|
use std::error::Error;
|
|
|
|
use std::io::prelude::*;
|
|
|
|
use std::process::{Command, Stdio};
|
|
|
|
|
|
|
|
let commands = &*format!("
|
|
|
|
cd {}
|
|
|
|
{}
|
|
|
|
exit",
|
|
|
|
$cwd,
|
|
|
|
$commands);
|
|
|
|
|
|
|
|
let mut process = Command::new(helpers::executable_path())
|
|
|
|
.stdin(Stdio::piped())
|
|
|
|
.stderr(Stdio::piped())
|
|
|
|
.spawn()
|
|
|
|
.expect("couldn't run test");
|
|
|
|
|
|
|
|
let stdin = process.stdin.as_mut().expect("couldn't open stdin");
|
|
|
|
stdin.write_all(commands.as_bytes()).expect("couldn't write to stdin");
|
|
|
|
|
|
|
|
|
|
|
|
let output = process.wait_with_output().expect("couldn't read from stderr");
|
|
|
|
let $out = String::from_utf8_lossy(&output.stderr);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn executable_path() -> PathBuf {
|
|
|
|
let mut buf = PathBuf::new();
|
|
|
|
buf.push("target");
|
|
|
|
buf.push("debug");
|
|
|
|
buf.push("nu");
|
|
|
|
buf
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn in_directory(str: &str) -> &str {
|
|
|
|
str
|
2019-07-16 10:53:19 +00:00
|
|
|
}
|