on master help sign in
Modified snapshot tests to support tab expansion.

This changes how the files are named (to allow for snapshots that aren't directly related to the --style argument) and fixes the generate_snapshots.py script to work with the latest version of bat. Three new tests are also introduced: - tabs_4 - Tab expansion with a width of 4. - tabs_8 - Tab expansion with a width of 8. - tabs_passthrough - No tab expansion.

commit91593417141c49b6f2a0755f989e7a3fb9bae310 authoreth-p <32112321+eth-p@users.noreply.github.com> dateMon 10 Sep 2018, 19:19 (8 years ago) parentb23ff24
5 files changed+68−28
tests/snapshots/generate_snapshots.py+14−6 tests/snapshots/sample.modified.rs+15−1 tests/snapshots/sample.rs+14 tests/tester.rs+3−2 tests/tests.rs+22−19
tests/snapshots/generate_snapshots.py+14−6
@@ -10,16 +10,24 @@ def generate_snapshots():
1010
1111 for num in range(len(single_styles)):
1212 for grouped in itertools.combinations(single_styles, num + 1):
13− generate_snapshot(",".join(grouped))
13+ generate_style_snapshot(",".join(grouped))
1414
1515 for style in collective_styles:
16− generate_snapshot(style)
16+ generate_style_snapshot(style)
1717
18−def generate_snapshot(option):
19− command = "../../target/debug/bat --style={0} sample.rs > output/{0}.snapshot.txt".format(
20− option
18+ generate_snapshot("tabs_passthrough", "--tabs=0 --style=full")
19+ generate_snapshot("tabs_4", "--tabs=4 --style=full")
20+ generate_snapshot("tabs_8", "--tabs=8 --style=full")
21+
22+def generate_style_snapshot(style):
23+ generate_snapshot(style.replace(",","_"), "--style={}".format(style))
24+
25+def generate_snapshot(name, arguments):
26+ command = "../../target/debug/bat --decorations=always {1} sample.rs > output/{0}.snapshot.txt".format(
27+ name,
28+ arguments
2129 )
22− print("generating snapshot for {}".format(option))
30+ print("generating snapshot for {}".format(name))
2331 subprocess.call(command, shell=True)
2432
2533def build_bat():
tests/snapshots/sample.modified.rs+15−1
@@ -10,7 +10,7 @@ fn main() {
1010 "The perimeter of the rectangle is {} pixels.",
1111 perimeter(&rect1)
1212 );
13− println!(r#"This line contains invalid utf8: "�����"#;
13+ println!(r#"This line contains invalid utf8: "�����"#;
1414}
1515
1616fn area(rectangle: &Rectangle) -> u32 {
@@ -20,3 +20,17 @@ fn area(rectangle: &Rectangle) -> u32 {
2020fn perimeter(rectangle: &Rectangle) -> u32 {
2121 (rectangle.width + rectangle.height) * 2
2222}
23+
24+// Tab alignment:
25+/*
26+ Indent
27+ 1 2 3 4
28+1 ?
29+22 ?
30+333 ?
31+4444 ?
32+55555 ?
33+666666 ?
34+7777777 ?
35+88888888 ?
36+*/
tests/snapshots/sample.rs+14
@@ -16,3 +16,17 @@ fn main() {
1616fn area(rectangle: &Rectangle) -> u32 {
1717 rectangle.width * rectangle.height
1818}
19+
20+// Tab alignment:
21+/*
22+ Indent
23+ 1 2 3 4
24+1 ?
25+22 ?
26+333 ?
27+4444 ?
28+55555 ?
29+666666 ?
30+7777777 ?
31+88888888 ?
32+*/
tests/tester.rs+3−2
@@ -38,13 +38,14 @@ impl BatTester {
3838 BatTester { temp_dir, exe }
3939 }
4040
41− pub fn test_snapshot(&self, style: &str) {
41+ pub fn test_snapshot(&self, name: &str, style: &str, tab_width: u32) {
4242 let output = Command::new(&self.exe)
4343 .current_dir(self.temp_dir.path())
4444 .args(&[
4545 "sample.rs",
4646 "--decorations=always",
4747 "--terminal-width=80",
48+ &format!("--tabs={}", tab_width),
4849 &format!("--style={}", style),
4950 ]).output()
5051 .expect("bat failed");
@@ -55,7 +56,7 @@ impl BatTester {
5556 .replace("tests/snapshots/", "");
5657
5758 let mut expected = String::new();
58− let mut file = File::open(format!("tests/snapshots/output/{}.snapshot.txt", style))
59+ let mut file = File::open(format!("tests/snapshots/output/{}.snapshot.txt", name))
5960 .expect("snapshot file missing");
6061 file.read_to_string(&mut expected)
6162 .expect("could not read snapshot file");
tests/tests.rs+22−19
@@ -3,33 +3,36 @@ mod tester;
33use tester::BatTester;
44
55macro_rules! snapshot_tests {
6− ($($test_name: ident: $style: expr,)*) => {
6+ ($($test_name: ident: $style: expr => [tabs: $tabs:expr],)*) => {
77 $(
88 #[test]
99 fn $test_name() {
1010 let bat_tester = BatTester::new();
11− bat_tester.test_snapshot($style);
11+ bat_tester.test_snapshot(stringify!($test_name), $style, $tabs);
1212 }
1313 )*
1414 };
1515}
1616
1717snapshot_tests! {
18− changes: "changes",
19− grid: "grid",
20− header: "header",
21− numbers: "numbers",
22− changes_grid: "changes,grid",
23− changes_header: "changes,header",
24− changes_numbers: "changes,numbers",
25− grid_header: "grid,header",
26− grid_numbers: "grid,numbers",
27− header_numbers: "header,numbers",
28− changes_grid_header: "changes,grid,header",
29− changes_grid_numbers: "changes,grid,numbers",
30− changes_header_numbers: "changes,header,numbers",
31− grid_header_numbers: "grid,header,numbers",
32− changes_grid_header_numbers: "changes,grid,header,numbers",
33− full: "full",
34− plain: "plain",
18+ changes: "changes" => [tabs: 8],
19+ grid: "grid" => [tabs: 8],
20+ header: "header" => [tabs: 8],
21+ numbers: "numbers" => [tabs: 8],
22+ changes_grid: "changes,grid" => [tabs: 8],
23+ changes_header: "changes,header" => [tabs: 8],
24+ changes_numbers: "changes,numbers" => [tabs: 8],
25+ grid_header: "grid,header" => [tabs: 8],
26+ grid_numbers: "grid,numbers" => [tabs: 8],
27+ header_numbers: "header,numbers" => [tabs: 8],
28+ changes_grid_header: "changes,grid,header" => [tabs: 8],
29+ changes_grid_numbers: "changes,grid,numbers" => [tabs: 8],
30+ changes_header_numbers: "changes,header,numbers" => [tabs: 8],
31+ grid_header_numbers: "grid,header,numbers" => [tabs: 8],
32+ changes_grid_header_numbers: "changes,grid,header,numbers" => [tabs: 8],
33+ full: "full" => [tabs: 8],
34+ plain: "plain" => [tabs: 8],
35+ tabs_passthrough: "full" => [tabs: 0],
36+ tabs_4: "full" => [tabs: 4],
37+ tabs_8: "full" => [tabs: 8],
3538}