From df4d0c55c09a1dc6f227b0bce399202160693445 Mon Sep 17 00:00:00 2001 From: Leo Kettmeir Date: Mon, 16 Jan 2023 01:30:52 +0100 Subject: [PATCH] fix(cli/fmt): show filepath for InvalidData error (#17361) --- cli/tests/integration/fmt_tests.rs | 6 ++++++ cli/tests/testdata/fmt/invalid_data.json | Bin 0 -> 51200 bytes cli/tests/testdata/fmt/invalid_data.out | 1 + cli/tools/fmt.rs | 6 +++++- 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 cli/tests/testdata/fmt/invalid_data.json create mode 100644 cli/tests/testdata/fmt/invalid_data.out diff --git a/cli/tests/integration/fmt_tests.rs b/cli/tests/integration/fmt_tests.rs index 144c2b56ca..d230f96c07 100644 --- a/cli/tests/integration/fmt_tests.rs +++ b/cli/tests/integration/fmt_tests.rs @@ -189,6 +189,12 @@ itest!(fmt_check_parse_error { exit_code: 1, }); +itest!(fmt_check_invalid_data { + args: "fmt --check fmt/invalid_data.json", + output: "fmt/invalid_data.out", + exit_code: 1, +}); + itest!(fmt_stdin { args: "fmt -", input: Some("const a = 1\n"), diff --git a/cli/tests/testdata/fmt/invalid_data.json b/cli/tests/testdata/fmt/invalid_data.json new file mode 100644 index 0000000000000000000000000000000000000000..fb9bec94fe2c3991c660690bd441c7d60455f81e GIT binary patch literal 51200 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

(cYeC3wD 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 Result { let file_bytes = fs::read(file_path) .with_context(|| format!("Error reading {}", file_path.display()))?; let charset = text_encoding::detect_charset(&file_bytes); - let file_text = text_encoding::convert_to_utf8(&file_bytes, charset)?; + let file_text = text_encoding::convert_to_utf8(&file_bytes, charset) + .map_err(|_| { + anyhow!("{} is not a valid UTF-8 file", file_path.display()) + })?; let had_bom = file_text.starts_with(text_encoding::BOM_CHAR); let text = if had_bom { text_encoding::strip_bom(&file_text).to_string()