Skip to content

Handle JSON parsing error

Evidence: https://gitlab.com/pheix-pool/core-perl6/-/jobs/5913467378

at 0: expected a json object, but got '"error co"'
  in sub parse-thing at /usr/share/perl6/site/sources/F13CDD097310A0775131666979B65ADF692574DD (JSON::Fast) line 818
  in sub from-json at /usr/share/perl6/site/sources/F13CDD097310A0775131666979B65ADF692574DD (JSON::Fast) line 972
  in method send at /usr/share/perl6/site/sources/B1344F0110995DB47188A68FE8F5E81EBDAA927A (Trove::Coveralls) line 93
  in method coveralls at /usr/share/perl6/site/sources/64C18CD375201ECA91AFA186F000A3FF80224AF7 (Trove) line 302
  in method process at /usr/share/perl6/site/sources/64C18CD375201ECA91AFA186F000A3FF80224AF7 (Trove) line 104
  in sub MAIN at /usr/share/perl6/site/resources/77A63C5387DE8798D40D01D335B46113A209375F line 54
  in block <unit> at /usr/share/perl6/site/resources/77A63C5387DE8798D40D01D335B46113A209375F line 3
  in sub MAIN at /usr/share/perl6/site/bin/trove-cli line 3
  in block <unit> at /usr/share/perl6/site/bin/trove-cli line 1

Code: https://gitlab.com/pheix/raku-trove/-/blob/main/lib/Trove/Coveralls.rakumod#L93

Investigation

On error response there might be smth diff from JSON, so we have to try{ ... }. Code snippet:

try {
    self.msg(:m(to-json(from-json($response.content), :pretty)));

    CATCH {
        default {
            my $e = .message;

            self.msg(:m($e));
        }
    }
}