mirror of
https://github.com/bootandy/dust.git
synced 2025-12-12 07:40:40 -08:00
133 lines
4.1 KiB
Rust
133 lines
4.1 KiB
Rust
use assert_cmd::Command;
|
|
use std::str;
|
|
/**
|
|
* This file contains tests that test a substring of the output using '.contains'
|
|
*
|
|
* These tests should be the same cross platform
|
|
*/
|
|
|
|
// We can at least test the file names are there
|
|
#[test]
|
|
pub fn test_basic_output() {
|
|
let mut cmd = Command::cargo_bin("dust").unwrap();
|
|
let output = cmd.arg("tests/test_dir/").unwrap().stdout;
|
|
let output = str::from_utf8(&output).unwrap();
|
|
|
|
assert!(output.contains(" ┌─┴ "));
|
|
assert!(output.contains("test_dir "));
|
|
assert!(output.contains(" ┌─┴ "));
|
|
assert!(output.contains("many "));
|
|
assert!(output.contains(" ├── "));
|
|
assert!(output.contains("hello_file"));
|
|
assert!(output.contains(" ┌── "));
|
|
assert!(output.contains("a_file "));
|
|
}
|
|
|
|
#[test]
|
|
pub fn test_output_no_bars_means_no_excess_spaces() {
|
|
let mut cmd = Command::cargo_bin("dust").unwrap();
|
|
let output = cmd.arg("-b").arg("tests/test_dir/").unwrap().stdout;
|
|
let output = str::from_utf8(&output).unwrap();
|
|
// If bars are not being shown we don't need to pad the output with spaces
|
|
assert!(output.contains("many"));
|
|
assert!(!output.contains("many "));
|
|
}
|
|
|
|
#[test]
|
|
pub fn test_reverse_flag() {
|
|
let mut cmd = Command::cargo_bin("dust").unwrap();
|
|
let output = cmd
|
|
.arg("-c")
|
|
.arg("-r")
|
|
.arg("tests/test_dir/")
|
|
.unwrap()
|
|
.stdout;
|
|
let output = str::from_utf8(&output).unwrap();
|
|
|
|
assert!(output.contains(" └─┬ test_dir "));
|
|
assert!(output.contains(" └─┬ many "));
|
|
assert!(output.contains(" ├── hello_file"));
|
|
assert!(output.contains(" └── a_file "));
|
|
}
|
|
|
|
#[test]
|
|
pub fn test_d_flag_works() {
|
|
// We should see the top level directory but not the sub dirs / files:
|
|
let mut cmd = Command::cargo_bin("dust").unwrap();
|
|
let output = cmd
|
|
.arg("-d")
|
|
.arg("1")
|
|
.arg("-s")
|
|
.arg("tests/test_dir/")
|
|
.unwrap()
|
|
.stdout;
|
|
let output = str::from_utf8(&output).unwrap();
|
|
assert!(!output.contains("hello_file"));
|
|
}
|
|
|
|
// Check against directories and files whos names are substrings of each other
|
|
#[test]
|
|
pub fn test_ignore_dir() {
|
|
let mut cmd = Command::cargo_bin("dust").unwrap();
|
|
let output = cmd
|
|
.arg("-c")
|
|
.arg("-X")
|
|
.arg("dir_substring")
|
|
.arg("tests/test_dir2")
|
|
.unwrap()
|
|
.stdout;
|
|
let output = str::from_utf8(&output).unwrap();
|
|
assert!(!output.contains("dir_substring"));
|
|
}
|
|
|
|
#[test]
|
|
pub fn test_with_bad_param() {
|
|
let mut cmd = Command::cargo_bin("dust").unwrap();
|
|
let stderr = cmd.arg("-").unwrap().stderr;
|
|
let stderr = str::from_utf8(&stderr).unwrap();
|
|
assert!(stderr.contains("Did not have permissions for all directories"));
|
|
}
|
|
|
|
#[test]
|
|
pub fn test_hidden_flag() {
|
|
// Check we can see the hidden file normally
|
|
let mut cmd = Command::cargo_bin("dust").unwrap();
|
|
let output = cmd
|
|
.arg("-c")
|
|
.arg("tests/test_dir_hidden_entries")
|
|
.unwrap()
|
|
.stdout;
|
|
let output = str::from_utf8(&output).unwrap();
|
|
assert!(output.contains(".hidden_file"));
|
|
assert!(output.contains("┌─┴ test_dir_hidden_entries"));
|
|
|
|
// Check that adding the '-h' flag causes us to not see hidden files
|
|
let mut cmd = Command::cargo_bin("dust").unwrap();
|
|
let output = cmd
|
|
.arg("-c")
|
|
.arg("-i")
|
|
.arg("tests/test_dir_hidden_entries")
|
|
.unwrap()
|
|
.stdout;
|
|
let output = str::from_utf8(&output).unwrap();
|
|
assert!(!output.contains(".hidden_file"));
|
|
assert!(output.contains("┌── test_dir_hidden_entries"));
|
|
}
|
|
|
|
#[test]
|
|
pub fn test_number_of_files() {
|
|
// Check we can see the hidden file normally
|
|
let mut cmd = Command::cargo_bin("dust").unwrap();
|
|
let output = cmd
|
|
.arg("-c")
|
|
.arg("-f")
|
|
.arg("tests/test_dir")
|
|
.unwrap()
|
|
.stdout;
|
|
let output = str::from_utf8(&output).unwrap();
|
|
assert!(output.contains("1 ┌── hello_file"));
|
|
assert!(output.contains("1 ├── a_file "));
|
|
assert!(output.contains("3 ┌─┴ many"));
|
|
assert!(output.contains("4 ┌─┴ test_dir"));
|
|
}
|