2018-10-10 20:56:56 +00:00
|
|
|
extern crate assert_cmd;
|
|
|
|
|
|
|
|
use assert_cmd::prelude::*;
|
|
|
|
use std::process::Command;
|
|
|
|
|
|
|
|
fn bat() -> Command {
|
|
|
|
let mut cmd = Command::main_binary().unwrap();
|
|
|
|
cmd.current_dir("tests/examples");
|
2018-10-11 19:40:14 +00:00
|
|
|
cmd.arg("--no-config");
|
2018-10-17 18:44:15 +00:00
|
|
|
cmd.env_remove("PAGER");
|
|
|
|
cmd.env_remove("BAT_PAGER");
|
2018-10-10 20:56:56 +00:00
|
|
|
cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn basic() {
|
|
|
|
bat()
|
|
|
|
.arg("test.txt")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("hello world\n")
|
|
|
|
.stderr("");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn stdin() {
|
|
|
|
bat()
|
|
|
|
.with_stdin()
|
|
|
|
.buffer("foo\nbar\n")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("foo\nbar\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn concatenate() {
|
|
|
|
bat()
|
|
|
|
.arg("test.txt")
|
|
|
|
.arg("test.txt")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("hello world\nhello world\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn concatenate_stdin() {
|
|
|
|
bat()
|
|
|
|
.arg("test.txt")
|
|
|
|
.arg("-")
|
|
|
|
.arg("test.txt")
|
|
|
|
.with_stdin()
|
|
|
|
.buffer("stdin\n")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("hello world\nstdin\nhello world\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn line_numbers() {
|
|
|
|
bat()
|
|
|
|
.arg("multiline.txt")
|
|
|
|
.arg("--style=numbers")
|
|
|
|
.arg("--decorations=always")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout(" 1 line 1\n 2 line 2\n 3 line 3\n 4 line 4\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn line_range_2_3() {
|
|
|
|
bat()
|
|
|
|
.arg("multiline.txt")
|
|
|
|
.arg("--line-range=2:3")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("line 2\nline 3\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn line_range_first_two() {
|
|
|
|
bat()
|
|
|
|
.arg("multiline.txt")
|
|
|
|
.arg("--line-range=:2")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("line 1\nline 2\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn line_range_last_3() {
|
|
|
|
bat()
|
|
|
|
.arg("multiline.txt")
|
|
|
|
.arg("--line-range=2:")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("line 2\nline 3\nline 4\n");
|
|
|
|
}
|
|
|
|
|
2018-10-19 22:10:10 +00:00
|
|
|
#[test]
|
|
|
|
fn line_range_multiple() {
|
|
|
|
bat()
|
|
|
|
.arg("multiline.txt")
|
|
|
|
.arg("--line-range=1:2")
|
|
|
|
.arg("--line-range=4:4")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("line 1\nline 2\nline 4\n");
|
|
|
|
}
|
|
|
|
|
2018-10-18 12:27:04 +00:00
|
|
|
#[test]
|
|
|
|
fn tabs_numbers() {
|
|
|
|
bat()
|
|
|
|
.arg("tabs.txt")
|
|
|
|
.arg("--tabs=4")
|
|
|
|
.arg("--style=numbers")
|
|
|
|
.arg("--decorations=always")
|
|
|
|
.assert()
|
|
|
|
.success()
|
2018-10-19 00:55:50 +00:00
|
|
|
.stdout(
|
|
|
|
" 1 1 2 3 4
|
2018-10-18 12:35:10 +00:00
|
|
|
2 1 ?
|
|
|
|
3 22 ?
|
|
|
|
4 333 ?
|
|
|
|
5 4444 ?
|
|
|
|
6 55555 ?
|
|
|
|
7 666666 ?
|
|
|
|
8 7777777 ?
|
|
|
|
9 88888888 ?
|
2018-10-19 00:55:50 +00:00
|
|
|
",
|
|
|
|
);
|
2018-10-18 12:27:04 +00:00
|
|
|
}
|
|
|
|
|
2018-10-14 14:22:59 +00:00
|
|
|
#[test]
|
|
|
|
fn tabs_passthrough_wrapped() {
|
2018-10-15 15:22:23 +00:00
|
|
|
bat()
|
|
|
|
.arg("tabs.txt")
|
|
|
|
.arg("--tabs=0")
|
|
|
|
.arg("--style=plain")
|
|
|
|
.arg("--decorations=always")
|
|
|
|
.assert()
|
|
|
|
.success()
|
2018-10-19 00:55:50 +00:00
|
|
|
.stdout(
|
|
|
|
" 1 2 3 4
|
2018-10-15 15:22:23 +00:00
|
|
|
1 ?
|
|
|
|
22 ?
|
|
|
|
333 ?
|
|
|
|
4444 ?
|
|
|
|
55555 ?
|
|
|
|
666666 ?
|
|
|
|
7777777 ?
|
|
|
|
88888888 ?
|
2018-10-19 00:55:50 +00:00
|
|
|
",
|
|
|
|
);
|
2018-10-14 14:22:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn tabs_4_wrapped() {
|
2018-10-15 15:22:23 +00:00
|
|
|
bat()
|
|
|
|
.arg("tabs.txt")
|
|
|
|
.arg("--tabs=4")
|
|
|
|
.arg("--style=plain")
|
|
|
|
.arg("--decorations=always")
|
|
|
|
.assert()
|
|
|
|
.success()
|
2018-10-19 00:55:50 +00:00
|
|
|
.stdout(
|
|
|
|
" 1 2 3 4
|
2018-10-15 15:22:23 +00:00
|
|
|
1 ?
|
|
|
|
22 ?
|
|
|
|
333 ?
|
|
|
|
4444 ?
|
|
|
|
55555 ?
|
|
|
|
666666 ?
|
|
|
|
7777777 ?
|
|
|
|
88888888 ?
|
2018-10-19 00:55:50 +00:00
|
|
|
",
|
|
|
|
);
|
2018-10-14 14:22:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn tabs_8_wrapped() {
|
2018-10-15 15:22:23 +00:00
|
|
|
bat()
|
|
|
|
.arg("tabs.txt")
|
|
|
|
.arg("--tabs=8")
|
|
|
|
.arg("--style=plain")
|
|
|
|
.arg("--decorations=always")
|
|
|
|
.assert()
|
|
|
|
.success()
|
2018-10-19 00:55:50 +00:00
|
|
|
.stdout(
|
|
|
|
" 1 2 3 4
|
2018-10-15 15:22:23 +00:00
|
|
|
1 ?
|
|
|
|
22 ?
|
|
|
|
333 ?
|
|
|
|
4444 ?
|
|
|
|
55555 ?
|
|
|
|
666666 ?
|
|
|
|
7777777 ?
|
|
|
|
88888888 ?
|
2018-10-19 00:55:50 +00:00
|
|
|
",
|
|
|
|
);
|
2018-10-14 14:22:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn tabs_passthrough() {
|
2018-10-15 15:22:23 +00:00
|
|
|
bat()
|
|
|
|
.arg("tabs.txt")
|
|
|
|
.arg("--tabs=0")
|
|
|
|
.arg("--style=plain")
|
|
|
|
.arg("--decorations=always")
|
|
|
|
.assert()
|
|
|
|
.success()
|
2018-10-19 00:55:50 +00:00
|
|
|
.stdout(
|
|
|
|
" 1 2 3 4
|
2018-10-15 15:22:23 +00:00
|
|
|
1 ?
|
|
|
|
22 ?
|
|
|
|
333 ?
|
|
|
|
4444 ?
|
|
|
|
55555 ?
|
|
|
|
666666 ?
|
|
|
|
7777777 ?
|
|
|
|
88888888 ?
|
2018-10-19 00:55:50 +00:00
|
|
|
",
|
|
|
|
);
|
2018-10-14 14:22:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn tabs_4() {
|
2018-10-15 15:22:23 +00:00
|
|
|
bat()
|
|
|
|
.arg("tabs.txt")
|
|
|
|
.arg("--tabs=4")
|
|
|
|
.arg("--style=plain")
|
|
|
|
.arg("--decorations=always")
|
|
|
|
.assert()
|
|
|
|
.success()
|
2018-10-19 00:55:50 +00:00
|
|
|
.stdout(
|
|
|
|
" 1 2 3 4
|
2018-10-15 15:22:23 +00:00
|
|
|
1 ?
|
|
|
|
22 ?
|
|
|
|
333 ?
|
|
|
|
4444 ?
|
|
|
|
55555 ?
|
|
|
|
666666 ?
|
|
|
|
7777777 ?
|
|
|
|
88888888 ?
|
2018-10-19 00:55:50 +00:00
|
|
|
",
|
|
|
|
);
|
2018-10-14 14:22:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn tabs_8() {
|
2018-10-15 15:22:23 +00:00
|
|
|
bat()
|
|
|
|
.arg("tabs.txt")
|
|
|
|
.arg("--tabs=8")
|
|
|
|
.arg("--style=plain")
|
|
|
|
.arg("--decorations=always")
|
|
|
|
.assert()
|
|
|
|
.success()
|
2018-10-19 00:55:50 +00:00
|
|
|
.stdout(
|
|
|
|
" 1 2 3 4
|
2018-10-15 15:22:23 +00:00
|
|
|
1 ?
|
|
|
|
22 ?
|
|
|
|
333 ?
|
|
|
|
4444 ?
|
|
|
|
55555 ?
|
|
|
|
666666 ?
|
|
|
|
7777777 ?
|
|
|
|
88888888 ?
|
2018-10-19 00:55:50 +00:00
|
|
|
",
|
|
|
|
);
|
2018-10-14 14:22:59 +00:00
|
|
|
}
|
|
|
|
|
2018-10-10 20:56:56 +00:00
|
|
|
#[test]
|
|
|
|
fn fail_non_existing() {
|
|
|
|
bat().arg("non-existing-file").assert().failure();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn fail_directory() {
|
|
|
|
bat().arg("sub_directory").assert().failure();
|
|
|
|
}
|
2018-10-11 19:54:19 +00:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn do_not_exit_directory() {
|
|
|
|
bat()
|
|
|
|
.arg("sub_directory")
|
|
|
|
.arg("test.txt")
|
|
|
|
.assert()
|
|
|
|
.stdout("hello world\n")
|
|
|
|
.failure();
|
|
|
|
}
|
2018-10-17 18:44:15 +00:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn pager_basic() {
|
|
|
|
bat()
|
|
|
|
.env("PAGER", "echo pager-output")
|
|
|
|
.arg("--paging=always")
|
|
|
|
.arg("test.txt")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("pager-output\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn pager_overwrite() {
|
|
|
|
bat()
|
|
|
|
.env("PAGER", "echo other-pager")
|
|
|
|
.env("BAT_PAGER", "echo pager-output")
|
|
|
|
.arg("--paging=always")
|
|
|
|
.arg("test.txt")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("pager-output\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn pager_disable() {
|
|
|
|
bat()
|
|
|
|
.env("PAGER", "echo other-pager")
|
|
|
|
.env("BAT_PAGER", "")
|
|
|
|
.arg("--paging=always")
|
|
|
|
.arg("test.txt")
|
|
|
|
.assert()
|
|
|
|
.success()
|
|
|
|
.stdout("hello world\n");
|
|
|
|
}
|