diff options
author | sharkdp <davidpeter@web.de> | 2018-10-10 22:56:56 +0200 |
---|---|---|
committer | David Peter <sharkdp@users.noreply.github.com> | 2018-10-11 07:06:13 +0200 |
commit | 1891e194b5ee958450678b6ac739711ba57fae10 (patch) | |
tree | 3313c227e0e784e88d7bf7ba63112f30bf73ff9a /tests | |
parent | d2d01b9fe8d0e5f46534731933a26a5174b2320b (diff) |
Add simple integration tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/examples/multiline.txt | 4 | ||||
-rw-r--r-- | tests/examples/sub_directory/dummy.txt | 0 | ||||
-rw-r--r-- | tests/examples/test.txt | 1 | ||||
-rw-r--r-- | tests/integration_tests.rs | 104 | ||||
-rw-r--r-- | tests/snapshot_tests.rs | 41 | ||||
-rw-r--r-- | tests/tests.rs | 43 |
6 files changed, 150 insertions, 43 deletions
diff --git a/tests/examples/multiline.txt b/tests/examples/multiline.txt new file mode 100644 index 00000000..9c2a7090 --- /dev/null +++ b/tests/examples/multiline.txt @@ -0,0 +1,4 @@ +line 1 +line 2 +line 3 +line 4 diff --git a/tests/examples/sub_directory/dummy.txt b/tests/examples/sub_directory/dummy.txt new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tests/examples/sub_directory/dummy.txt diff --git a/tests/examples/test.txt b/tests/examples/test.txt new file mode 100644 index 00000000..3b18e512 --- /dev/null +++ b/tests/examples/test.txt @@ -0,0 +1 @@ +hello world diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs new file mode 100644 index 00000000..2192bbd3 --- /dev/null +++ b/tests/integration_tests.rs @@ -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(); +} diff --git a/tests/snapshot_tests.rs b/tests/snapshot_tests.rs new file mode 100644 index 00000000..6e76c8b5 --- /dev/null +++ b/tests/snapshot_tests.rs @@ -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], +} diff --git a/tests/tests.rs b/tests/tests.rs deleted file mode 100644 index 4651ffa1..00000000 --- a/tests/tests.rs +++ /dev/null @@ -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], - } -} |