private void doExecute(ProcessorTestCase child, Description description) throws Exception { File destination = extractTest(child, description); PrintStream originalOut = System.out; final Verifier verifier; if (Boolean.getBoolean(SYS_PROP_DEBUG)) { if (child.processor.getToolchain() == null) { // when not using toolchains for a test, then the compiler is executed within the Maven JVM. // So make // sure we fork a new JVM for that, and let that new JVM use the command 'mvnDebug' instead // of 'mvn' verifier = new Verifier(destination.getCanonicalPath(), null, true, true); verifier.setDebugJvm(true); } else { verifier = new Verifier(destination.getCanonicalPath()); verifier.addCliOption("-Pdebug-forked-javac"); } } else { verifier = new Verifier(destination.getCanonicalPath()); } List<String> goals = new ArrayList<String>(3); goals.add("clean"); try { configureToolchains(child, verifier, goals, originalOut); configureProcessor(child, verifier); verifier.addCliOption( "-Dcompiler-source-target-version=" + child.processor.getSourceTargetVersion()); if ("1.8".equals(child.processor.getSourceTargetVersion()) || "1.9".equals(child.processor.getSourceTargetVersion())) { verifier.addCliOption("-Dmapstruct-artifact-id=mapstruct-jdk8"); } else { verifier.addCliOption("-Dmapstruct-artifact-id=mapstruct"); } if (Boolean.getBoolean(SYS_PROP_DEBUG)) { originalOut.print("Processor Integration Test: "); originalOut.println("Listening for transport dt_socket at address: 8000 (in some seconds)"); } goals.add("test"); addAdditionalCliArguments(child, verifier); originalOut.println("executing " + child.processor.name().toLowerCase()); verifier.executeGoals(goals); verifier.verifyErrorFreeLog(); } finally { verifier.resetStreams(); } }