mirror of https://github.com/sharkdp/bat
Add simple integration tests
parent
d2d01b9fe8
commit
1891e194b5
@ -0,0 +1,4 @@
|
||||
line 1
|
||||
line 2
|
||||
line 3
|
||||
line 4
|
@ -0,0 +1 @@
|
||||
hello world
|
@ -0,0 +1,104 @@
|
||||
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");
|
||||
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");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fail_non_existing() {
|
||||
bat().arg("non-existing-file").assert().failure();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fail_directory() {
|
||||
bat().arg("sub_directory").assert().failure();
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
mod tester;
|
||||
|
||||
use tester::BatTester;
|
||||
|
||||
macro_rules! snapshot_tests {
|
||||
($($test_name: ident: $style: expr => [wrap: $wrap:expr, tabs: $tabs:expr],)*) => {
|
||||
$(
|
||||
#[test]
|
||||
fn $test_name() {
|
||||
let bat_tester = BatTester::new();
|
||||
bat_tester.test_snapshot(stringify!($test_name), $style, $tabs, $wrap);
|
||||
}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
snapshot_tests! {
|
||||
changes: "changes" => [wrap: false, tabs: 8],
|
||||
grid: "grid" => [wrap: false, tabs: 8],
|
||||
header: "header" => [wrap: false, tabs: 8],
|
||||
numbers: "numbers" => [wrap: false, tabs: 8],
|
||||
changes_grid: "changes,grid" => [wrap: false, tabs: 8],
|
||||
changes_header: "changes,header" => [wrap: false, tabs: 8],
|
||||
changes_numbers: "changes,numbers" => [wrap: false, tabs: 8],
|
||||
grid_header: "grid,header" => [wrap: false, tabs: 8],
|
||||
grid_numbers: "grid,numbers" => [wrap: false, tabs: 8],
|
||||
header_numbers: "header,numbers" => [wrap: false, tabs: 8],
|
||||
changes_grid_header: "changes,grid,header" => [wrap: false, tabs: 8],
|
||||
changes_grid_numbers: "changes,grid,numbers" => [wrap: false, tabs: 8],
|
||||
changes_header_numbers: "changes,header,numbers" => [wrap: false, tabs: 8],
|
||||
grid_header_numbers: "grid,header,numbers" => [wrap: false, tabs: 8],
|
||||
changes_grid_header_numbers: "changes,grid,header,numbers" => [wrap: false, tabs: 8],
|
||||
full: "full" => [wrap: false, tabs: 8],
|
||||
plain: "plain" => [wrap: false, tabs: 0],
|
||||
tabs_passthrough_wrapped: "full" => [wrap: true, tabs: 0],
|
||||
tabs_4_wrapped: "full" => [wrap: true, tabs: 4],
|
||||
tabs_8_wrapped: "full" => [wrap: true, tabs: 8],
|
||||
tabs_passthrough: "full" => [wrap: false, tabs: 0],
|
||||
tabs_4: "full" => [wrap: false, tabs: 4],
|
||||
tabs_8: "full" => [wrap: false, tabs: 8],
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
mod tester;
|
||||
|
||||
mod snapshot {
|
||||
use tester::BatTester;
|
||||
|
||||
macro_rules! snapshot_tests {
|
||||
($($test_name: ident: $style: expr => [wrap: $wrap:expr, tabs: $tabs:expr],)*) => {
|
||||
$(
|
||||
#[test]
|
||||
fn $test_name() {
|
||||
let bat_tester = BatTester::new();
|
||||
bat_tester.test_snapshot(stringify!($test_name), $style, $tabs, $wrap);
|
||||
}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
snapshot_tests! {
|
||||
changes: "changes" => [wrap: false, tabs: 8],
|
||||
grid: "grid" => [wrap: false, tabs: 8],
|
||||
header: "header" => [wrap: false, tabs: 8],
|
||||
numbers: "numbers" => [wrap: false, tabs: 8],
|
||||
changes_grid: "changes,grid" => [wrap: false, tabs: 8],
|
||||
changes_header: "changes,header" => [wrap: false, tabs: 8],
|
||||
changes_numbers: "changes,numbers" => [wrap: false, tabs: 8],
|
||||
grid_header: "grid,header" => [wrap: false, tabs: 8],
|
||||
grid_numbers: "grid,numbers" => [wrap: false, tabs: 8],
|
||||
header_numbers: "header,numbers" => [wrap: false, tabs: 8],
|
||||
changes_grid_header: "changes,grid,header" => [wrap: false, tabs: 8],
|
||||
changes_grid_numbers: "changes,grid,numbers" => [wrap: false, tabs: 8],
|
||||
changes_header_numbers: "changes,header,numbers" => [wrap: false, tabs: 8],
|
||||
grid_header_numbers: "grid,header,numbers" => [wrap: false, tabs: 8],
|
||||
changes_grid_header_numbers: "changes,grid,header,numbers" => [wrap: false, tabs: 8],
|
||||
full: "full" => [wrap: false, tabs: 8],
|
||||
plain: "plain" => [wrap: false, tabs: 0],
|
||||
tabs_passthrough_wrapped: "full" => [wrap: true, tabs: 0],
|
||||
tabs_4_wrapped: "full" => [wrap: true, tabs: 4],
|
||||
tabs_8_wrapped: "full" => [wrap: true, tabs: 8],
|
||||
tabs_passthrough: "full" => [wrap: false, tabs: 0],
|
||||
tabs_4: "full" => [wrap: false, tabs: 4],
|
||||
tabs_8: "full" => [wrap: false, tabs: 8],
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue