summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorsharkdp <davidpeter@web.de>2018-10-10 22:56:56 +0200
committerDavid Peter <sharkdp@users.noreply.github.com>2018-10-11 07:06:13 +0200
commit1891e194b5ee958450678b6ac739711ba57fae10 (patch)
tree3313c227e0e784e88d7bf7ba63112f30bf73ff9a /tests
parentd2d01b9fe8d0e5f46534731933a26a5174b2320b (diff)
Add simple integration tests
Diffstat (limited to 'tests')
-rw-r--r--tests/examples/multiline.txt4
-rw-r--r--tests/examples/sub_directory/dummy.txt0
-rw-r--r--tests/examples/test.txt1
-rw-r--r--tests/integration_tests.rs104
-rw-r--r--tests/snapshot_tests.rs41
-rw-r--r--tests/tests.rs43
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],
- }
-}