Buggy code:
@ Category ( SystemTest . class ) public class CoverageProcessSystemTest { private final MethodName foo = MethodName . fromString ( "foo" ) ; @ Test public void shouldRecordSomeCoverage ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageForSingleBlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor3BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageForConstructors ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor4BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor5BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageForBlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor7BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor8BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor9BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor10BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor11BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor12BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor13BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor14BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageFor15BlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageForLargeBlockMethods ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageForAllRelevantClasses ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageForSmallMethodThatThrowsException ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageForMethodThatThrowsExceptionWithFinallyBlock ( ) throws IOException , InterruptedException , ExecutionException { } @ Test public void shouldCalculateCoverageForLargeMethodThatThrowsException ( ) throws IOException , InterruptedException , ExecutionException { } public static class TestInDifferentClassLoader { @ Test public void testFoo ( ) { } } @ Test public void shouldCalculateCoverageOfClassesRunInDifferentClassLoader ( ) throws IOException , InterruptedException , ExecutionException { } public static class ReliesOnNewLine { public static String parseNewLines ( ) throws IOException { } } public static class ReliesOnNewLineTest { @ Test public void testNewLine ( ) throws IOException { } } @ Test public void shouldNotCorruptedTheSystemNewLineProperty ( ) throws Exception { } @ Test public void shouldFailWithExitCode ( ) throws Exception { final SideEffect1 < CoverageResult > noOpHandler = new SideEffect1 < CoverageResult > ( ) { public void apply ( final CoverageResult a ) { } } ; final CoverageOptions sa = new CoverageOptions ( coverOnlyTestees ( ) , new org . pitest . junit . JUnitCompatibleConfiguration ( new TestGroupConfig ( ) ) , true , ( - 1 ) ) ; final JarCreatingJarFinder agent = new JarCreatingJarFinder ( ) ; final LaunchOptions lo = new LaunchOptions ( agent ) ; final SocketFinder sf = new SocketFinder ( ) ; final CoverageProcess process = new CoverageProcess ( ProcessArgs . withClassPath ( classPathWithoutJUnit ( ) ) . andLaunchOptions ( lo ) , sa , sf . getNextAvailableServerSocket ( ) , Arrays . asList ( TestsForMultiBlockCoverage . class . getName ( ) ) , noOpHandler ) ; process . start ( ) ; final ExitCode exitCode = process . waitToDie ( ) ; <START_BUG> assertThat ( exitCode , is ( UNKNOWN_ERROR ) ) ; <END_BUG> } private ClassPath classPathWithoutJUnit ( ) { } private F < CoverageResult , Boolean > failingTest ( ) { } private FunctionalList < CoverageResult > runCoverageForTest ( final Class < ? > test ) throws IOException , InterruptedException , ExecutionException { } private void runCoverageProcess ( final Class < ? > test , final FunctionalList < CoverageResult > coveredClasses ) throws IOException , InterruptedException { } private F < CoverageResult , Boolean > coverageFor ( final Class < ? > class1 ) { } private F < CoverageResult , Boolean > coverageFor ( final BlockLocation location ) { } private Predicate < String > coverOnlyTestees ( ) { } private F < CoverageResult , Boolean > coverage ( final String testName , final int numberOfBlocks ) { } private void assertCoverage ( final FunctionalList < CoverageResult > coveredClasses , final String testName , final int numberOfBlocks ) { } private boolean coversBlock ( final FunctionalList < CoverageResult > coveredClasses , final String testName , final int block ) { } private F < CoverageResult , Boolean > hitsBlock ( final String testName , final int block ) { } }

Fix:
assertThat ( exitCode , is ( JUNIT_ISSUE ) ) ;