1
0
mirror of https://github.com/sharkdp/bat.git synced 2025-09-01 10:52:24 +01:00

test: 🚨 extend line-range tests

test(tests/examples/multiline.txt): 🚨 add lines 5-20 to sample file for expanded line-range tests
test(tests/integration_tests.rs): 🚨 update expected outputs and add comprehensive context and error tests for line-range feature
This commit is contained in:
John Cavanaugh
2025-08-13 23:18:21 -07:00
parent 3fd3f1def8
commit 67e3e42531
2 changed files with 130 additions and 4 deletions

View File

@@ -2,3 +2,19 @@ line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9
line 10
line 11
line 12
line 13
line 14
line 15
line 16
line 17
line 18
line 19
line 20

View File

@@ -183,7 +183,7 @@ fn line_range_up_to_2_from_back() {
.arg("--line-range=:-2")
.assert()
.success()
.stdout("line 1\nline 2\n");
.stdout("line 1\nline 2\nline 3\nline 4\nline 5\nline 6\nline 7\nline 8\nline 9\nline 10\nline 11\nline 12\nline 13\nline 14\nline 15\nline 16\nline 17\nline 18\n");
}
#[test]
@@ -203,7 +203,7 @@ fn line_range_from_back_last_two() {
.arg("--line-range=-2:")
.assert()
.success()
.stdout("line 3\nline 4\n");
.stdout("line 19\nline 20\n");
}
#[test]
@@ -230,10 +230,10 @@ fn line_range_first_two() {
fn line_range_last_3() {
bat()
.arg("multiline.txt")
.arg("--line-range=2:")
.arg("--line-range=18:")
.assert()
.success()
.stdout("line 2\nline 3\nline 4\n");
.stdout("line 18\nline 19\nline 20\n");
}
#[test]
@@ -247,6 +247,116 @@ fn line_range_multiple() {
.stdout("line 1\nline 2\nline 4\n");
}
#[test]
fn line_range_context_around_single_line() {
bat()
.arg("multiline.txt")
.arg("--line-range=10::2")
.assert()
.success()
.stdout("line 8\nline 9\nline 10\nline 11\nline 12\n");
}
#[test]
fn line_range_context_around_single_line_minimal() {
bat()
.arg("multiline.txt")
.arg("--line-range=5::1")
.assert()
.success()
.stdout("line 4\nline 5\nline 6\n");
}
#[test]
fn line_range_context_around_range() {
bat()
.arg("multiline.txt")
.arg("--line-range=10:12:2")
.assert()
.success()
.stdout("line 8\nline 9\nline 10\nline 11\nline 12\nline 13\nline 14\n");
}
#[test]
fn line_range_context_at_file_boundaries() {
bat()
.arg("multiline.txt")
.arg("--line-range=1::2")
.assert()
.success()
.stdout("line 1\nline 2\nline 3\n");
}
#[test]
fn line_range_context_at_end_of_file() {
bat()
.arg("multiline.txt")
.arg("--line-range=20::2")
.assert()
.success()
.stdout("line 18\nline 19\nline 20\n");
}
#[test]
fn line_range_context_zero() {
bat()
.arg("multiline.txt")
.arg("--line-range=10::0")
.assert()
.success()
.stdout("line 10\n");
}
#[test]
fn line_range_context_negative_single_line() {
bat()
.arg("multiline.txt")
.arg("--line-range=10::-1")
.assert()
.failure()
.stderr(predicate::str::contains("Invalid context number in N::C format"));
}
#[test]
fn line_range_context_negative_range() {
bat()
.arg("multiline.txt")
.arg("--line-range=10:12:-1")
.assert()
.failure()
.stderr(predicate::str::contains("Invalid context number in N:M:C format"));
}
#[test]
fn line_range_context_non_numeric_single_line() {
bat()
.arg("multiline.txt")
.arg("--line-range=10::abc")
.assert()
.failure()
.stderr(predicate::str::contains("Invalid context number in N::C format"));
}
#[test]
fn line_range_context_non_numeric_range() {
bat()
.arg("multiline.txt")
.arg("--line-range=10:12:xyz")
.assert()
.failure()
.stderr(predicate::str::contains("Invalid context number in N:M:C format"));
}
#[test]
fn line_range_context_very_large() {
bat()
.arg("multiline.txt")
.arg("--line-range=10::999999")
.assert()
.success()
.stdout("line 1\nline 2\nline 3\nline 4\nline 5\nline 6\nline 7\nline 8\nline 9\nline 10\nline 11\nline 12\nline 13\nline 14\nline 15\nline 16\nline 17\nline 18\nline 19\nline 20\n");
}
#[test]
fn squeeze_blank() {
bat()