1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
use std::process;
use std::fs;
use std::path::PathBuf;
use std::error;
use std::str;
use assert_cmd::prelude::CommandCargoExt;
use std::env;
#[test]
fn respect_git_ignore() -> Result<(), Box<dyn error::Error>> {
let mut tre = process::Command::cargo_bin("tre")?;
let fixture_path: PathBuf = [
env!("CARGO_MANIFEST_DIR"),
"fixtures",
].iter().collect();
// this path is ignored by fixtures/.gitignore
let ignored_path: PathBuf = [
env!("CARGO_MANIFEST_DIR"),
"fixtures",
"ignore_me"
].iter().collect();
fs::write(ignored_path, "")?;
env::set_current_dir(fixture_path)?;
let output = tre.output()?.stdout;
let text = str::from_utf8(&output)?;
assert!(text.contains("."));
assert!(text.contains("── .gitignore"));
assert!(text.contains("── a"));
assert!(text.contains("── b"));
assert!(text.contains("── c"));
assert!(text.contains("── d"));
assert!(text.contains("── e"));
assert!(text.contains("── h"));
assert!(text.contains("── f"));
assert!(text.contains("── g"));
assert!(!text.contains("ignore_me"));
Ok(())
}
#[cfg(not(windows))]
#[test]
fn ignore_hidden() -> Result<(), Box<dyn error::Error>> {
let mut tre = process::Command::cargo_bin("tre")?;
let fixture_path: PathBuf = [
env!("CARGO_MANIFEST_DIR"),
"fixtures",
].iter().collect();
// this path is ignored by fixtures/.gitignore, but we aren't using .gitignore
let ignored_path: PathBuf = [
env!("CARGO_MANIFEST_DIR"),
"fixtures",
"ignore_me"
].iter().collect();
fs::write(ignored_path, "")?;
env::set_current_dir(fixture_path)?;
let output = tre.arg("-s").output()?.stdout;
let text = str::from_utf8(&output)?;
assert!(text.contains("."));
assert!(!text.contains("── .gitignore")); // hidden files should be hidden
assert!(text.contains("── a"));
assert!(text.contains("── b"));
assert!(text.contains("── c"));
assert!(text.contains("── d"));
assert!(text.contains("── e"));
assert!(text.contains("── h"));
assert!(text.contains("── f"));
assert!(text.contains("── g"));
assert!(text.contains("ignore_me"));
Ok(())
}
#[test]
fn all_files() -> Result<(), Box<dyn error::Error>> {
let mut tre = process::Command::cargo_bin("tre")?;
let fixture_path: PathBuf = [
env!("CARGO_MANIFEST_DIR"),
"fixtures",
].iter().collect();
// this path is ignored by fixtures/.gitignore, but we aren't using .gitignore
let ignored_path: PathBuf = [
env!("CARGO_MANIFEST_DIR"),
"fixtures",
"ignore_me"
].iter().collect();
fs::write(ignored_path, "")?;
env::set_current_dir(fixture_path)?;
let output = tre.arg("-a").output()?.stdout;
let text = str::from_utf8(&output)?;
assert!(text.contains("."));
assert!(text.contains("── .gitignore")); // hidden files should be hidden
assert!(text.contains("── a"));
assert!(text.contains("── b"));
assert!(text.contains("── c"));
assert!(text.contains("── d"));
assert!(text.contains("── e"));
assert!(text.contains("── h"));
assert!(text.contains("── f"));
assert!(text.contains("── g"));
assert!(text.contains("ignore_me"));
Ok(())
}
|