Files
bat/tests/integration_tests.rs
T

866 lines
21 KiB
Rust
Raw Normal View History

2020-03-07 00:01:35 +01:00
use assert_cmd::Command;
use std::path::Path;
use std::str::from_utf8;
const EXAMPLES_DIR: &str = "tests/examples";
2018-11-02 18:33:06 +01:00
2018-11-04 10:46:56 +01:00
fn bat_with_config() -> Command {
2020-03-07 00:01:35 +01:00
let mut cmd = Command::cargo_bin("bat").unwrap();
2018-10-10 22:56:56 +02:00
cmd.current_dir("tests/examples");
2018-10-17 20:44:15 +02:00
cmd.env_remove("PAGER");
cmd.env_remove("BAT_PAGER");
2018-11-04 10:46:56 +01:00
cmd.env_remove("BAT_CONFIG_PATH");
cmd.env_remove("BAT_STYLE");
cmd.env_remove("BAT_THEME");
cmd.env_remove("BAT_TABS");
2018-11-04 10:46:56 +01:00
cmd
}
fn bat() -> Command {
let mut cmd = bat_with_config();
cmd.arg("--no-config");
2018-10-10 22:56:56 +02:00
cmd
}
#[test]
fn basic() {
let assert = bat()
2018-10-10 22:56:56 +02:00
.arg("test.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
let stderr = String::from_utf8_lossy(&assert.get_output().stderr);
println!("stdout={:#?}", stdout);
println!("stderr={:#?}", stderr);
assert
2018-10-10 22:56:56 +02:00
.success()
.stdout("hello world\n")
.stderr("");
}
#[test]
fn stdin() {
let assert = bat()
2020-03-07 00:01:35 +01:00
.write_stdin("foo\nbar\n")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-10 22:56:56 +02:00
.success()
.stdout("foo\nbar\n");
}
#[test]
fn concatenate() {
let assert = bat()
2018-10-10 22:56:56 +02:00
.arg("test.txt")
.arg("test.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-10 22:56:56 +02:00
.success()
.stdout("hello world\nhello world\n");
}
#[test]
fn concatenate_stdin() {
let assert = bat()
2018-10-10 22:56:56 +02:00
.arg("test.txt")
.arg("-")
.arg("test.txt")
2020-03-07 00:01:35 +01:00
.write_stdin("stdin\n")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-10 22:56:56 +02:00
.success()
.stdout("hello world\nstdin\nhello world\n");
}
#[test]
fn concatenate_empty_first() {
let assert = bat()
.arg("empty.txt")
.arg("test.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
.stdout("hello world\n");
}
#[test]
fn concatenate_empty_last() {
let assert = bat()
.arg("test.txt")
.arg("empty.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
.stdout("hello world\n");
}
#[test]
fn concatenate_empty_both() {
let assert = bat()
.arg("empty.txt")
.arg("empty.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
.stdout("");
}
#[test]
fn concatenate_empty_between() {
let assert = bat()
.arg("test.txt")
.arg("empty.txt")
.arg("test.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
.stdout("hello world\nhello world\n");
}
#[test]
fn concatenate_empty_first_and_last() {
let assert = bat()
.arg("empty.txt")
.arg("test.txt")
.arg("empty.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
.stdout("hello world\n");
}
2019-02-10 08:52:38 +01:00
#[test]
fn concatenate_single_line() {
let assert = bat()
2019-02-10 08:52:38 +01:00
.arg("single-line.txt")
.arg("single-line.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2019-02-10 08:52:38 +01:00
.success()
.stdout("Single LineSingle Line");
}
#[test]
fn concatenate_single_line_empty() {
let assert = bat()
2019-02-10 08:52:38 +01:00
.arg("single-line.txt")
.arg("empty.txt")
.arg("single-line.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2019-02-10 08:52:38 +01:00
.success()
.stdout("Single LineSingle Line");
}
2018-10-10 22:56:56 +02:00
#[test]
fn line_numbers() {
let assert = bat()
2018-10-10 22:56:56 +02:00
.arg("multiline.txt")
.arg("--style=numbers")
.arg("--decorations=always")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-10 22:56:56 +02:00
.success()
.stdout(" 1 line 1\n 2 line 2\n 3 line 3\n 4 line 4\n");
}
#[test]
fn line_range_2_3() {
let assert = bat()
2018-10-10 22:56:56 +02:00
.arg("multiline.txt")
.arg("--line-range=2:3")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-10 22:56:56 +02:00
.success()
.stdout("line 2\nline 3\n");
}
#[test]
fn line_range_first_two() {
let assert = bat()
2018-10-10 22:56:56 +02:00
.arg("multiline.txt")
.arg("--line-range=:2")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-10 22:56:56 +02:00
.success()
.stdout("line 1\nline 2\n");
}
#[test]
fn line_range_last_3() {
let assert = bat()
2018-10-10 22:56:56 +02:00
.arg("multiline.txt")
.arg("--line-range=2:")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-10 22:56:56 +02:00
.success()
.stdout("line 2\nline 3\nline 4\n");
}
2018-10-20 00:10:10 +02:00
#[test]
fn line_range_multiple() {
let assert = bat()
2018-10-20 00:10:10 +02:00
.arg("multiline.txt")
.arg("--line-range=1:2")
.arg("--line-range=4:4")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-20 00:10:10 +02:00
.success()
.stdout("line 1\nline 2\nline 4\n");
}
2018-10-18 20:27:04 +08:00
#[test]
fn tabs_numbers() {
let assert = bat()
2018-10-18 20:27:04 +08:00
.arg("tabs.txt")
.arg("--tabs=4")
.arg("--style=numbers")
.arg("--decorations=always")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-18 20:27:04 +08:00
.success()
2018-10-19 08:55:50 +08:00
.stdout(
" 1 1 2 3 4
2018-10-18 20:35:10 +08:00
2 1 ?
3 22 ?
4 333 ?
5 4444 ?
6 55555 ?
7 666666 ?
8 7777777 ?
9 88888888 ?
2018-10-19 08:55:50 +08:00
",
);
2018-10-18 20:27:04 +08:00
}
#[test]
fn tabs_passthrough_wrapped() {
let assert = bat()
.arg("tabs.txt")
.arg("--tabs=0")
.arg("--style=plain")
.arg("--decorations=always")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
2018-10-19 08:55:50 +08:00
.stdout(
" 1 2 3 4
1 ?
22 ?
333 ?
4444 ?
55555 ?
666666 ?
7777777 ?
88888888 ?
2018-10-19 08:55:50 +08:00
",
);
}
#[test]
fn tabs_4_wrapped() {
let assert = bat()
.arg("tabs.txt")
.arg("--tabs=4")
.arg("--style=plain")
.arg("--decorations=always")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
2018-10-19 08:55:50 +08:00
.stdout(
" 1 2 3 4
1 ?
22 ?
333 ?
4444 ?
55555 ?
666666 ?
7777777 ?
88888888 ?
2018-10-19 08:55:50 +08:00
",
);
}
#[test]
fn tabs_8_wrapped() {
let assert = bat()
.arg("tabs.txt")
.arg("--tabs=8")
.arg("--style=plain")
.arg("--decorations=always")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
2018-10-19 08:55:50 +08:00
.stdout(
" 1 2 3 4
1 ?
22 ?
333 ?
4444 ?
55555 ?
666666 ?
7777777 ?
88888888 ?
2018-10-19 08:55:50 +08:00
",
);
}
#[test]
fn tabs_passthrough() {
let assert = bat()
.arg("tabs.txt")
.arg("--tabs=0")
.arg("--style=plain")
.arg("--decorations=always")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
2018-10-19 08:55:50 +08:00
.stdout(
" 1 2 3 4
1 ?
22 ?
333 ?
4444 ?
55555 ?
666666 ?
7777777 ?
88888888 ?
2018-10-19 08:55:50 +08:00
",
);
}
#[test]
fn tabs_4() {
let assert = bat()
.arg("tabs.txt")
.arg("--tabs=4")
.arg("--style=plain")
.arg("--decorations=always")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
2018-10-19 08:55:50 +08:00
.stdout(
" 1 2 3 4
1 ?
22 ?
333 ?
4444 ?
55555 ?
666666 ?
7777777 ?
88888888 ?
2018-10-19 08:55:50 +08:00
",
);
}
#[test]
fn tabs_8() {
let assert = bat()
.arg("tabs.txt")
.arg("--tabs=8")
.arg("--style=plain")
.arg("--decorations=always")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
2018-10-19 08:55:50 +08:00
.stdout(
" 1 2 3 4
1 ?
22 ?
333 ?
4444 ?
55555 ?
666666 ?
7777777 ?
88888888 ?
2018-10-19 08:55:50 +08:00
",
);
}
2018-10-10 22:56:56 +02:00
#[test]
fn fail_non_existing() {
bat().arg("non-existing-file").assert().failure();
}
#[test]
fn fail_directory() {
bat().arg("sub_directory").assert().failure();
}
#[test]
fn do_not_exit_directory() {
let assert = bat()
.arg("sub_directory")
.arg("test.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.stdout("hello world\n")
.failure();
}
2018-10-17 20:44:15 +02:00
#[test]
fn pager_basic() {
let assert = bat()
.env("PAGER", "printf pager-output")
2018-10-17 20:44:15 +02:00
.arg("--paging=always")
.arg("test.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-17 20:44:15 +02:00
.success()
.stdout("pager-output");
2018-10-17 20:44:15 +02:00
}
#[test]
fn pager_overwrite() {
let assert = bat()
.env("PAGER", "printf other-pager")
.env("BAT_PAGER", "printf pager-output")
2018-10-17 20:44:15 +02:00
.arg("--paging=always")
.arg("test.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-17 20:44:15 +02:00
.success()
.stdout("pager-output");
2018-10-17 20:44:15 +02:00
}
#[test]
fn pager_disable() {
let assert = bat()
.env("PAGER", "printf other-pager")
2018-10-17 20:44:15 +02:00
.env("BAT_PAGER", "")
.arg("--paging=always")
.arg("test.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2018-10-17 20:44:15 +02:00
.success()
.stdout("hello world\n");
}
#[test]
fn config_location_test() {
let assert = bat_with_config()
.env("BAT_CONFIG_PATH", "bat.conf")
.arg("--config-file")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
.stdout("bat.conf\n");
}
#[test]
2018-11-04 10:56:31 +01:00
fn config_read_arguments_from_file() {
let assert = bat_with_config()
.env("BAT_CONFIG_PATH", "bat.conf")
.arg("test.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
.stdout("dummy-pager-from-config");
}
2019-02-10 09:19:38 +01:00
#[test]
fn utf16() {
// The output will be converted to UTF-8 with a leading UTF-8 BOM
let assert = bat()
2019-02-10 09:19:38 +01:00
.arg("--plain")
.arg("--decorations=always")
.arg("test_UTF-16LE.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2019-02-10 09:19:38 +01:00
.success()
.stdout(std::str::from_utf8(b"\xEF\xBB\xBFhello world\n").unwrap());
}
#[test]
fn can_print_file_named_cache() {
let assert = bat_with_config()
.arg("cache")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
let stderr = String::from_utf8_lossy(&assert.get_output().stderr);
println!("stdout={:#?}", stdout);
println!("stderr={:#?}", stderr);
assert
.success()
.stdout("test\n")
.stderr("");
}
2019-09-21 09:10:12 +02:00
#[test]
fn can_print_file_named_cache_with_additional_argument() {
let assert = bat_with_config()
2019-09-21 09:10:12 +02:00
.arg("cache")
.arg("test.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
let stderr = String::from_utf8_lossy(&assert.get_output().stderr);
println!("stdout={:#?}", stdout);
println!("stderr={:#?}", stderr);
assert
2019-09-21 09:10:12 +02:00
.success()
.stdout("test\nhello world\n")
.stderr("");
}
#[test]
fn can_print_file_starting_with_cache() {
let assert = bat_with_config()
.arg("cache.c")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
let stderr = String::from_utf8_lossy(&assert.get_output().stderr);
println!("stdout={:#?}", stdout);
println!("stderr={:#?}", stderr);
assert
.success()
.stdout("test\n")
.stderr("");
}
#[test]
fn does_not_print_unwanted_file_named_cache() {
bat_with_config().arg("cach").assert().failure();
}
2019-08-31 12:46:03 +02:00
2020-02-01 18:49:29 +09:00
#[test]
fn unicode_wrap() {
let assert = bat_with_config()
2020-02-01 18:49:29 +09:00
.arg("unicode-wrap.txt")
.arg("--style=numbers,snip")
.arg("--decorations=always")
.arg("--terminal-width=40")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2020-02-01 18:49:29 +09:00
.success()
2020-02-28 10:27:06 +01:00
.stdout(
" 1 ビタミンA ビタミンD ビタミンE ビ
2020-02-28 11:42:44 +09:00
タミンK ビタミンB1 ビタミンB2 ナ
イアシン パントテン酸 ビタミンB6
ビタミンB12 葉酸 ビオチン ビタ
ミンC
2020-02-01 18:49:29 +09:00
2
2020-02-28 11:42:44 +09:00
3 고양이 고양이 고양이 고양이 고양이
고양이 고양이 고양이 고양이 고양이
고양이 고양이 고양이 고양이 고양이
고양이 고양이 고양이 고양이 고양이
고양이 고양이 고양이 고양이 고양이
고양이 고양이 고양이 고양이 고양이
고양이 고양이 고양이 고양이 고양이
고양이 고양이 고양이 고양이 고양이
고양이
2020-02-01 18:49:29 +09:00
4
2020-02-28 11:42:44 +09:00
5 1 บวก 2 บวก 3 บวก 4 บวก 5 บวก 6 บวก
7 บวก 8 บวก 9 บวก 10 บวก 11 บวก 12
บวก 13 บวก 14 บวก 15 บวก 16 บวก 17
บวก 18 บวก 19 บวก 20
2020-02-01 18:49:29 +09:00
6
2020-02-28 11:42:44 +09:00
7 Бельгия Болгария Чехия Дания Герман
ия Эстония Ирландия Греция Испания
Франция Хорватия Италия Кипр Латвия
Литва Люксембург Венгрия Мальта Ни
дерланды Австрия Польша Португалия
Румыния Словения Словакия Финляндия
Швеция Великобритания
2020-02-28 10:27:06 +01:00
",
);
2020-02-01 18:49:29 +09:00
}
2019-08-31 12:46:03 +02:00
#[test]
fn snip() {
let assert = bat()
2019-08-31 12:46:03 +02:00
.arg("multiline.txt")
.arg("--style=numbers,snip")
.arg("--decorations=always")
.arg("--line-range=1:2")
.arg("--line-range=4:")
2019-08-31 13:01:36 +02:00
.arg("--terminal-width=80")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2019-08-31 12:46:03 +02:00
.success()
.stdout(
" 1 line 1
2 line 2
...─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 8< ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
4 line 4
",
);
}
2020-02-27 15:09:01 -08:00
#[test]
fn empty_file_leads_to_empty_output_with_grid_enabled() {
let assert = bat()
2020-02-27 15:09:01 -08:00
.arg("empty.txt")
.arg("--style=grid")
.arg("--decorations=always")
.arg("--terminal-width=80")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
2020-02-27 15:09:01 -08:00
.success()
.stdout("");
}
#[test]
fn filename_basic() {
let assert = bat()
.arg("test.txt")
.arg("--decorations=always")
.arg("--style=header")
.arg("-r=0:0")
.arg("--file-name=foo")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
let stderr = String::from_utf8_lossy(&assert.get_output().stderr);
println!("stdout={:#?}", stdout);
println!("stderr={:#?}", stderr);
assert
.success()
.stdout("File: foo\n")
.stderr("");
}
#[test]
fn filename_binary() {
let assert = bat()
.arg("test.binary")
.arg("--decorations=always")
.arg("--style=header")
.arg("-r=0:0")
.arg("--file-name=foo")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
let stderr = String::from_utf8_lossy(&assert.get_output().stderr);
println!("stdout={:#?}", stdout);
println!("stderr={:#?}", stderr);
assert
.success()
.stdout("File: foo <BINARY>\n")
.stderr("");
}
#[test]
fn filename_stdin() {
let assert = bat()
.arg("--decorations=always")
.arg("--style=header")
.arg("-r=0:0")
.arg("-")
.write_stdin("stdin\n")
.arg("--file-name=foo")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
let stderr = String::from_utf8_lossy(&assert.get_output().stderr);
println!("stdout={:#?}", stdout);
println!("stderr={:#?}", stderr);
assert
.success()
.stdout("File: foo\n")
.stderr("");
}
#[test]
fn filename_stdin_binary() {
let vec = vec![0; 1];
let assert = bat_with_config()
.arg("--decorations=always")
.arg("--style=header")
.write_stdin(vec)
.arg("--file-name=foo")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
let stderr = String::from_utf8_lossy(&assert.get_output().stderr);
println!("stdout={:#?}", stdout);
println!("stderr={:#?}", stderr);
assert
.success()
.stdout("File: foo <BINARY>\n")
.stderr("");
}
#[test]
fn filename_multiple_ok() {
let assert = bat()
.arg("--decorations=always")
.arg("--style=header")
.arg("-r=0:0")
.arg("test.txt")
.arg("--file-name=foo")
.arg("single-line.txt")
.arg("--file-name=bar")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
let stderr = String::from_utf8_lossy(&assert.get_output().stderr);
println!("stdout={:#?}", stdout);
println!("stderr={:#?}", stderr);
assert
.success()
2020-05-11 17:57:51 -07:00
.stdout("File: foo\n\nFile: bar\n")
.stderr("");
}
#[test]
fn filename_multiple_err() {
bat()
.arg("--decorations=always")
.arg("--style=header")
.arg("-r=0:0")
.arg("test.txt")
.arg("--file-name=foo")
.arg("single-line.txt")
.assert()
.failure();
}
2020-04-21 09:59:17 +02:00
2020-05-11 17:57:51 -07:00
#[test]
fn header_padding() {
let assert = bat()
2020-05-11 17:57:51 -07:00
.arg("--decorations=always")
.arg("--style=header")
2020-05-11 17:57:51 -07:00
.arg("test.txt")
.arg("single-line.txt")
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
let stderr = String::from_utf8_lossy(&assert.get_output().stderr);
println!("stdout={:#?}", stdout);
println!("stderr={:#?}", stderr);
assert
.stdout("File: test.txt\nhello world\n\nFile: single-line.txt\nSingle Line\n")
2020-05-11 17:57:51 -07:00
.stderr("");
}
#[cfg(target_os = "linux")]
#[test]
fn file_with_invalid_utf8_filename() {
use std::ffi::OsStr;
use std::fs::File;
use std::io::Write;
use std::os::unix::ffi::OsStrExt;
use tempdir::TempDir;
let tmp_dir = TempDir::new("bat_test").expect("can create temporary directory");
let file_path = tmp_dir
.path()
.join(OsStr::from_bytes(b"test-invalid-utf8-\xC3(.rs"));
{
let mut file = File::create(&file_path).expect("can create temporary file");
writeln!(file, "dummy content").expect("can write to file");
}
let assert = bat()
.arg(file_path.as_os_str())
.assert();
let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
println!("stdout={:#?}", stdout);
assert
.success()
.stdout("dummy content\n");
}
2020-04-21 09:59:17 +02:00
#[test]
fn do_not_panic_regression_tests() {
for filename in &[
"issue_28.md",
"issue_190.md",
"issue_314.hs",
"issue_914.rb",
"issue_915.vue",
] {
bat()
.arg("--color=always")
.arg(&format!("regression_tests/{}", filename))
.assert()
.success();
}
}
#[test]
fn do_not_detect_different_syntax_for_stdin_and_files() {
let file = "regression_tests/issue_985.js";
let cmd_for_file = bat()
.arg("--color=always")
.arg("--map-syntax=*.js:Markdown")
.arg(&format!("--file-name={}", file))
.arg("--style=plain")
.arg(file)
.assert()
.success();
let cmd_for_stdin = bat()
.arg("--color=always")
.arg("--map-syntax=*.js:Markdown")
.arg("--style=plain")
.arg(&format!("--file-name={}", file))
.pipe_stdin(Path::new(EXAMPLES_DIR).join(file))
.unwrap()
.assert()
.success();
assert_eq!(
from_utf8(&cmd_for_file.get_output().stdout).expect("output is valid utf-8"),
from_utf8(&cmd_for_stdin.get_output().stdout).expect("output is valid utf-8")
);
}