flacoco icon indicating copy to clipboard operation
flacoco copied to clipboard

Flacoco crashes when a test method name contains spaces

Open xmcp opened this issue 1 year ago • 3 comments
trafficstars

Some JVM languages (e.g., Kotlin) allow method names to contain spaces. This convention is used in many projects, such as lettuce-core, which is a subject in the APR-Comp. It has a test method that looks like this:

@Test
fun `should scan iteratively`() = runBlocking<Unit> {
    ...
}

Flacoco will crash on such projects because it won't escape the spaces.

I forgot the exact error because I encountered this bug a few months ago and now I don't have a Kotlin environment at hand, but I still remember what's going on in the code:

  1. Flacoco calls the runOnlineCoveredTestResultPerTestMethods method in test-runner with a list of collected test method names (code).
  2. runOnlineCoveredTestResultPerTestMethods will then concatenate all test method names with a space (code),
  3. ... and then transform it into a command-line argument and call runGivenCommandLine (code).
  4. runGivenCommandLine will then spawn a new Java process with the given argument (code).

Therefore, if a test method name contains a space, it will be parsed as two arguments, crashing the command-line parser.

Maybe you can reproduce this issue and forward it to test-runner if necessary. Thanks again for your great project!

xmcp avatar Dec 30 '23 14:12 xmcp

thanks for the bug report @xmcp

@andre15silva WDYT?

monperrus avatar Jan 11 '24 07:01 monperrus

Hi @xmcp ,

Thanks a lot for the bug report :)

I will try to reproduce this ASAP and ping you when it is fixed!

andre15silva avatar Jan 15 '24 10:01 andre15silva

Thanks for the response! The lettuce-core bug (id=6) in the APR-Comp Functional-Java benchmark should be able to reproduce this issue, as I have encountered.

xmcp avatar Jan 15 '24 19:01 xmcp