I have jacoco code coverage report for my Kotlin project and I am uploading it to the Codacy.
I am using codacy-coverage-reporter 7.1.0 and using the following gradle task to upload the report.
task("uploadTestCoverageReportToCodacy", JavaExec::class) {
dependsOn("codeCoverageReport")
main = "com.codacy.CodacyCoverageReporter"
classpath = codacy
args = arrayListOf(
"report",
"-l",
"Kotlin",
"-r",
"$buildDir/reports/jacoco/jacocoTestReport.xml")
}
The task "codeCoverageReport" is compeleted successfully and also I have the CODACY_PROJECT_TOKEN configured in my PROW CI.
The problem which I am facing is the following message :
Exception in thread "main" java.lang.IllegalArgumentException: Illegal character(s) in message header value: <CODACY_PROJECT_TOKEN> (the token value)
at java.base/sun.net.www.protocol.http.HttpURLConnection.checkMessageHeader(HttpURLConnection.java:559)
at java.base/sun.net.www.protocol.http.HttpURLConnection.isExternalMessageHeaderAllowed(HttpURLConnection.java:494)
at java.base/sun.net.www.protocol.http.HttpURLConnection.setRequestProperty(HttpURLConnection.java:3174)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.setRequestProperty(HttpsURLConnectionImpl.java:312)
at scalaj.http.HttpRequest.$anonfun$doConnection$3(Http.scala:359)
at scalaj.http.HttpRequest.$anonfun$doConnection$3$adapted(Http.scala:358)
at scala.collection.immutable.List.foreach(List.scala:392)
at scalaj.http.HttpRequest.doConnection(Http.scala:358)
at scalaj.http.HttpRequest.exec(Http.scala:343)
at scalaj.http.HttpRequest.asString(Http.scala:491)
at com.codacy.api.client.CodacyClient.post(CodacyClient.scala:71)
at com.codacy.api.service.CoverageServices.postRequest(CoverageServices.scala:91)
at com.codacy.api.service.CoverageServices.sendReport(CoverageServices.scala:27)
at com.codacy.rules.ReportRules.sendReport(ReportRules.scala:128)
at com.codacy.rules.ReportRules.$anonfun$codacyCoverage$8(ReportRules.scala:54)
at scala.util.Either.flatMap(Either.scala:341)
at com.codacy.rules.ReportRules.$anonfun$codacyCoverage$7(ReportRules.scala:53)
at scala.util.Either.flatMap(Either.scala:341)
at com.codacy.rules.ReportRules.$anonfun$codacyCoverage$6(ReportRules.scala:52)
at scala.util.Either.flatMap(Either.scala:341)
at com.codacy.rules.ReportRules.$anonfun$codacyCoverage$4(ReportRules.scala:51)
at scala.util.Either.flatMap(Either.scala:341)
at com.codacy.rules.ReportRules.$anonfun$codacyCoverage$3(ReportRules.scala:50)
at scala.collection.immutable.List.map(List.scala:286)
at com.codacy.rules.ReportRules.$anonfun$codacyCoverage$2(ReportRules.scala:47)
at scala.util.Either.flatMap(Either.scala:341)
at com.codacy.rules.ReportRules.$anonfun$codacyCoverage$1(ReportRules.scala:40)
at com.codacy.rules.ReportRules.$anonfun$withCommitUUID$4(ReportRules.scala:267)
at com.codacy.rules.ReportRules.$anonfun$withCommitUUID$4$adapted(ReportRules.scala:267)
at scala.util.Either.flatMap(Either.scala:341)
at com.codacy.rules.ReportRules.withCommitUUID(ReportRules.scala:267)
at com.codacy.rules.ReportRules.codacyCoverage(ReportRules.scala:35)
at com.codacy.CodacyCoverageReporter$.$anonfun$sendReport$1(CodacyCoverageReporter.scala:41)
at scala.util.Either.flatMap(Either.scala:341)
at com.codacy.CodacyCoverageReporter$.sendReport(CodacyCoverageReporter.scala:33)
at com.codacy.CodacyCoverageReporter$.run(CodacyCoverageReporter.scala:18)
at com.codacy.configuration.parser.ConfigurationParsingApp.run(ConfigurationParser.scala:13)
at com.codacy.configuration.parser.ConfigurationParsingApp.run(ConfigurationParser.scala:11)
at caseapp.CommandAppWithPreCommand.$anonfun$main$1(CommandAppWithPreCommand.scala:97)
at caseapp.CommandAppWithPreCommand.$anonfun$main$1$adapted(CommandAppWithPreCommand.scala:82)
at scala.Option.foreach(Option.scala:407)
at caseapp.CommandAppWithPreCommand.main(CommandAppWithPreCommand.scala:82)
at com.codacy.CodacyCoverageReporter.main(CodacyCoverageReporter.scala)
I have double checked that the codacy token is correct and doesn't have any leading or trailing space or any weird characters.
Anyone has an idea why the upload to the codacy has this issue? Note that, this gradle task is working fine in the local machine, but it is creating issue in the CI.
The CI was injecting the token with a new line. I solved this using the following: