From 286bf0ff2d8937f7edf3249cdd21e34d34abb5de Mon Sep 17 00:00:00 2001 From: Aurelien Poscia Date: Fri, 31 Mar 2023 10:49:29 +0200 Subject: SONAR-18882 Show clear message when Sarif file is not UTF-8 encoded --- .../main/java/org/sonar/core/sarif/SarifSerializerImpl.java | 2 +- .../test/java/org/sonar/core/sarif/SarifSerializerTest.java | 12 +++++++++++- .../resources/org/sonar/core/sarif/sarif210-nonUtf8.json | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 sonar-core/src/test/resources/org/sonar/core/sarif/sarif210-nonUtf8.json (limited to 'sonar-core/src') diff --git a/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializerImpl.java b/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializerImpl.java index 5164f3410c8..487f81cf10a 100644 --- a/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializerImpl.java +++ b/sonar-core/src/main/java/org/sonar/core/sarif/SarifSerializerImpl.java @@ -38,7 +38,7 @@ import static java.nio.file.Files.newBufferedReader; @ComputeEngineSide public class SarifSerializerImpl implements SarifSerializer { private static final String SARIF_REPORT_ERROR = "Failed to read SARIF report at '%s'"; - private static final String SARIF_JSON_SYNTAX_ERROR = SARIF_REPORT_ERROR + ": invalid JSON syntax"; + private static final String SARIF_JSON_SYNTAX_ERROR = SARIF_REPORT_ERROR + ": invalid JSON syntax or file is not UTF-8 encoded"; private final Gson gson; diff --git a/sonar-core/src/test/java/org/sonar/core/sarif/SarifSerializerTest.java b/sonar-core/src/test/java/org/sonar/core/sarif/SarifSerializerTest.java index 30357838fa0..24532267883 100644 --- a/sonar-core/src/test/java/org/sonar/core/sarif/SarifSerializerTest.java +++ b/sonar-core/src/test/java/org/sonar/core/sarif/SarifSerializerTest.java @@ -79,7 +79,17 @@ public class SarifSerializerTest { assertThatThrownBy(() -> serializer.deserialize(sarif)) .isInstanceOf(IllegalStateException.class) - .hasMessage(format("Failed to read SARIF report at '%s': invalid JSON syntax", sarif)); + .hasMessage(format("Failed to read SARIF report at '%s': invalid JSON syntax or file is not UTF-8 encoded", sarif)); + } + + @Test + public void deserialize_whenFileIsNotUtf8encoded_shouldFail() throws URISyntaxException { + URL sarifResource = requireNonNull(getClass().getResource("sarif210-nonUtf8.json")); + Path sarif = Paths.get(sarifResource.toURI()); + + assertThatThrownBy(() -> serializer.deserialize(sarif)) + .isInstanceOf(IllegalStateException.class) + .hasMessage(format("Failed to read SARIF report at '%s': invalid JSON syntax or file is not UTF-8 encoded", sarif)); } @Test diff --git a/sonar-core/src/test/resources/org/sonar/core/sarif/sarif210-nonUtf8.json b/sonar-core/src/test/resources/org/sonar/core/sarif/sarif210-nonUtf8.json new file mode 100644 index 00000000000..9f0d2136322 --- /dev/null +++ b/sonar-core/src/test/resources/org/sonar/core/sarif/sarif210-nonUtf8.json @@ -0,0 +1 @@ +ภ@@ฅ…™ข‰–•z@๒K๑K๐k@@[ขƒˆ…”z@ˆฃฃ—ขzaa™ฆK‡‰ฃˆค‚คข…™ƒ–•ฃ…•ฃKƒ–”a–ข‰ข`ฃƒขaข™‰†`ข—…ƒa”ขฃ…™aโƒˆ…”ฃaข™‰†`ขƒˆ…”`๒K๑K๐K‘ข–•k@@™ค•ขz@I@@@@ภ@@@@@@ฃ––“z@ภ@@@@@@@@„™‰ฅ…™z@ภ@@@@@@@@@@•”…z@โ–•™ุค‚…k@@@@@@@@@@–™‡•‰ฉฃ‰–•z@โ–•™โ–ค™ƒ…k@@@@@@@@@@ข…”•ฃ‰ƒๅ…™ข‰–•z@๙K๖k@@@@@@@@@@™ค“…ขz@I@@@@@@@@@@@@ภ@@@@@@@@@@@@@@‰„z@‘ฅzโ๕๑๓๒k@@@@@@@@@@@@@@•”…z@‘ฅzโ๕๑๓๒k@@@@@@@@@@@@@@ขˆ–™ฃฤ…ขƒ™‰—ฃ‰–•z@ภ@@@@@@@@@@@@@@@@ฃ…งฃz@ิ’…@ฃˆ‰ข@†‰•“@ขฃฃ‰ƒ@†‰…“„@ฃ––K@@@@@@@@@@@@@@ะk@@@@@@@@@@@@@@†ค““ฤ…ขƒ™‰—ฃ‰–•z@ภ@@@@@@@@@@@@@@@@ฃ…งฃz@ิ’…@ฃˆ‰ข@†‰•“@ขฃฃ‰ƒ@†‰…“„@ฃ––K@@@@@@@@@@@@@@ะk@@@@@@@@@@@@@@ˆ…“—z@ภ@@@@@@@@@@@@@@@@ฃ…งฃz@ำ–™…”@‰—ขค”@„–“–™@ข‰ฃ@”…ฃk@ƒ–•ข…ƒฃ…ฃค™@„‰—‰ขƒ‰•‡@…“‰ฃK@ี”@ˆ…•„™…™‰ฃ@•‰ข‰@ข…„@ข–““‰ƒ‰ฃค„‰•@—…““…•ฃ…ข˜ค…K@ีค•ƒ@—–ขค…™…@—ค™คข@™ˆ–•ƒคข@—ค“ฅ‰•™@“‰˜ค”K@ไฃ@“‰˜ค…ฃ@ฃ™‰ขฃ‰˜ค…@•‰ข“@ฅ‰ฃ…@ฅ–“คฃ—ฃK@ีค““@“‰˜ค…ฃ@—–™ฃฃ‰ฃ–™@ฅ…•…•ฃ‰ขK@ฤ–•…ƒ@@„ค‰@…ฃ@„ค‰@†™‰•‡‰““@ƒ–•ข…ƒฃ…ฃค™@‰„@•…ƒ@”ขขK@ม“‰˜ค”@…™ฃ@ฅ–“คฃ—ฃK@โ…„@คฃ@„ค‰@คฃ@“ƒคข@„‰ƒฃค”@†…™”…•ฃค”@ฅ…“@ฃ‰•ƒ‰„ค•ฃ@•…˜ค…K@โ…„@ข…„@“ƒ‰•‰@“…ƒฃคขK@ฤค‰ข@ข‰ฃ@”…ฃ@ข–„“…ข@†…“‰ขK@ฤค‰ข@•ค•ƒ@…™–ขk@”ฃฃ‰ข@ฃ@„ค‰@ƒk@ƒ–•ฅ““‰ข@ข…”—…™@™‰ขคขK@ษ•@„‰—‰ขƒ‰•‡@ค“ฃ™‰ƒ…ข@ฃ…““คขk@‰•@ขคขƒ‰—‰ฃ@”ขข@ฅ…ˆ‰ƒค“@…คK@@@@@@@@@@@@@@ะk@@@@@@@@@@@@@@—™–—…™ฃ‰…ขz@ภ@@@@@@@@@@@@@@@@ฃ‡ขz@I@@@@@@@@@@@@@@@@@@ฃ‡๑k@@@@@@@@@@@@@@@@@@ฃ‡๒@@@@@@@@@@@@@@@@Y@@@@@@@@@@@@@@ะ@@@@@@@@@@@@ะ@@@@@@@@@@Y@@@@@@@@ะ@@@@@@ะk@@@@@@™…ขค“ฃขz@I@@@@@@@@ภ@@@@@@@@@@™ค“…ษ„z@‘ฅzโ๕๑๓๒k@@@@@@@@@@”…ขข‡…z@ภ@@@@@@@@@@@@ฃ…งฃz@ฃˆ‰ข@‰ข@ฃˆ…@”…ขข‡…@@@@@@@@@@ะk@@@@@@@@@@“–ƒฃ‰–•ขz@I@@@@@@@@@@@@ภ@@@@@@@@@@@@@@—ˆจข‰ƒ“ำ–ƒฃ‰–•z@ภ@@@@@@@@@@@@@@@@™ฃ‰†ƒฃำ–ƒฃ‰–•z@ภ@@@@@@@@@@@@@@@@@@ค™‰z@ฆฆฆK‡––‡“…Kƒ–”k@@@@@@@@@@@@@@@@@@ค™‰ยข…ษ„z@lโูรูึึใ@@@@@@@@@@@@@@@@ะk@@@@@@@@@@@@@@@@™…‡‰–•z@ภ@@@@@@@@@@@@@@@@@@ขฃ™ฃำ‰•…z@๑๑k@@@@@@@@@@@@@@@@@@…•„ำ‰•…z@๒๒๒k@@@@@@@@@@@@@@@@@@ขฃ™ฃร–“ค”•z@๕๔k@@@@@@@@@@@@@@@@@@…•„ร–“ค”•z@๔@@@@@@@@@@@@@@@@ะ@@@@@@@@@@@@@@ะ@@@@@@@@@@@@ะ@@@@@@@@@@Yk@@@@@@@@@@—™ฃ‰“ฦ‰•‡…™—™‰•ฃขz@ภ@@@@@@@@@@@@—™‰”™จำ–ƒฃ‰–•ำ‰•…ศขˆz@ฃˆ‰ขษโใศลศมโ@@@@@@@@@@ะk@@@@@@@@@@ƒ–„…ฦ“–ฆขz@I@@@@@@@@@@@@ภ@@@@@@@@@@@@@@ฃˆ™…„ฦ“–ฆขz@I@@@@@@@@@@@@@@@@ภ@@@@@@@@@@@@@@@@@@“–ƒฃ‰–•ขz@I@@@@@@@@@@@@@@@@@@@@ภ@@@@@@@@@@@@@@@@@@@@@@“–ƒฃ‰–•z@ภ@@@@@@@@@@@@@@@@@@@@@@@@—ˆจข‰ƒ“ำ–ƒฃ‰–•z@ภ@@@@@@@@@@@@@@@@@@@@@@@@@@™ฃ‰†ƒฃำ–ƒฃ‰–•z@ภ@@@@@@@@@@@@@@@@@@@@@@@@@@@@ค™‰z@ฆฆฆK‡––‡“…Kƒ–”k@@@@@@@@@@@@@@@@@@@@@@@@@@@@ค™‰ยข…ษ„z@lโูรูึึใ@@@@@@@@@@@@@@@@@@@@@@@@@@ะk@@@@@@@@@@@@@@@@@@@@@@@@@@™…‡‰–•z@ภ@@@@@@@@@@@@@@@@@@@@@@@@@@@@ขฃ™ฃำ‰•…z@๑๑k@@@@@@@@@@@@@@@@@@@@@@@@@@@@…•„ำ‰•…z@๒๒๒k@@@@@@@@@@@@@@@@@@@@@@@@@@@@ขฃ™ฃร–“ค”•z@๕๔k@@@@@@@@@@@@@@@@@@@@@@@@@@@@…•„ร–“ค”•z@๔@@@@@@@@@@@@@@@@@@@@@@@@@@ะ@@@@@@@@@@@@@@@@@@@@@@@@ะ@@@@@@@@@@@@@@@@@@@@@@ะ@@@@@@@@@@@@@@@@@@@@ะk@@@@@@@@@@@@@@@@@@@@ภ@@@@@@@@@@@@@@@@@@@@@@“–ƒฃ‰–•z@ภ@@@@@@@@@@@@@@@@@@@@@@@@—ˆจข‰ƒ“ำ–ƒฃ‰–•z@ภ@@@@@@@@@@@@@@@@@@@@@@@@@@™ฃ‰†ƒฃำ–ƒฃ‰–•z@ภ@@@@@@@@@@@@@@@@@@@@@@@@@@@@ค™‰z@ฆฆฆK‡––‡“…Kƒ–”k@@@@@@@@@@@@@@@@@@@@@@@@@@@@ค™‰ยข…ษ„z@lโูรูึึใ@@@@@@@@@@@@@@@@@@@@@@@@@@ะk@@@@@@@@@@@@@@@@@@@@@@@@@@™…‡‰–•z@ภ@@@@@@@@@@@@@@@@@@@@@@@@@@@@ขฃ™ฃำ‰•…z@๒๒k@@@@@@@@@@@@@@@@@@@@@@@@@@@@…•„ำ‰•…z@๔๓๒๓k@@@@@@@@@@@@@@@@@@@@@@@@@@@@ขฃ™ฃร–“ค”•z@๕๔๕k@@@@@@@@@@@@@@@@@@@@@@@@@@@@…•„ร–“ค”•z@๔๓๒๔@@@@@@@@@@@@@@@@@@@@@@@@@@ะ@@@@@@@@@@@@@@@@@@@@@@@@ะ@@@@@@@@@@@@@@@@@@@@@@ะ@@@@@@@@@@@@@@@@@@@@ะ@@@@@@@@@@@@@@@@@@Y@@@@@@@@@@@@@@@@ะ@@@@@@@@@@@@@@Y@@@@@@@@@@@@ะ@@@@@@@@@@Y@@@@@@@@ะ@@@@@@Yk@@@@@@“•‡ค‡…z@…•`คขk@@@@@@ƒ–“ค”•า‰•„z@คฃ†๑๖ร–„…ไ•‰ฃข@@@@ะ@@Yะ \ No newline at end of file -- cgit v1.2.3