On Thu, Jun 7, 2018 at 9:12 PM, GitBox <g...@apache.org> wrote:
> marcphilipp commented on a change in pull request #184: Donate current > sources from junit-platform-surefire-provider > URL: https://github.com/apache/maven-surefire/pull/184# > discussion_r193795566 > > > > ########## > File path: surefire-providers/surefire-junit-platform/src/main/java/ > org/apache/maven/surefire/junitplatform/RunListenerAdapter.java > ########## > @@ -0,0 +1,272 @@ > +package org.apache.maven.surefire.junitplatform; > + > +/* > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > + > +import static org.apache.maven.surefire.report.SimpleReportEntry.ignored; > +import static org.junit.platform.engine.TestExecutionResult.Status. > ABORTED; > +import static org.junit.platform.engine.TestExecutionResult.Status. > FAILED; > + > +import java.util.Optional; > +import java.util.Set; > +import java.util.concurrent.ConcurrentHashMap; > + > +import org.apache.maven.surefire.report.PojoStackTraceWriter; > +import org.apache.maven.surefire.report.RunListener; > +import org.apache.maven.surefire.report.SimpleReportEntry; > +import org.apache.maven.surefire.report.StackTraceWriter; > +import org.junit.platform.engine.TestExecutionResult; > +import org.junit.platform.engine.TestSource; > +import org.junit.platform.engine.support.descriptor.ClassSource; > +import org.junit.platform.engine.support.descriptor.MethodSource; > +import org.junit.platform.launcher.TestExecutionListener; > +import org.junit.platform.launcher.TestIdentifier; > +import org.junit.platform.launcher.TestPlan; > +import org.junit.platform.launcher.listeners.LegacyReportingUtils; > + > +/** > + * @since 2.22.0 > + */ > +final class RunListenerAdapter > + implements TestExecutionListener > +{ > + > + private final RunListener runListener; > + > + private TestPlan testPlan; > + > + private Set<TestIdentifier> testSetNodes = > ConcurrentHashMap.newKeySet(); > + > + RunListenerAdapter( RunListener runListener ) > + { > + this.runListener = runListener; > + } > + > + @Override > + public void testPlanExecutionStarted( TestPlan testPlan ) > + { > + updateTestPlan( testPlan ); > + } > + > + @Override > + public void testPlanExecutionFinished( TestPlan testPlan ) > + { > + updateTestPlan( null ); > + } > + > + @Override > + public void executionStarted( TestIdentifier testIdentifier ) > + { > + if ( testIdentifier.isContainer() > + && testIdentifier.getSource().filter( > ClassSource.class::isInstance ).isPresent() ) > + { > + startTestSetIfPossible( testIdentifier ); > + } > + if ( testIdentifier.isTest() ) > + { > + ensureTestSetStarted( testIdentifier ); > + runListener.testStarting( createReportEntry( testIdentifier ) > ); > + } > + } > + > + @Override > + public void executionSkipped( TestIdentifier testIdentifier, String > reason ) > + { > + ensureTestSetStarted( testIdentifier ); > + String source = getLegacyReportingClassName( testIdentifier ); > + runListener.testSkipped( ignored( source, getLegacyReportingName( > testIdentifier ), reason ) ); > + completeTestSetIfNecessary( testIdentifier ); > + } > + > + @Override > + public void executionFinished( > + TestIdentifier testIdentifier, TestExecutionResult > testExecutionResult ) > + { > + if ( testExecutionResult.getStatus() == ABORTED ) > + { > + runListener.testAssumptionFailure( createReportEntry( > testIdentifier, testExecutionResult ) ); > + } > + else if ( testExecutionResult.getStatus() == FAILED ) > + { > + reportFailedTest( testIdentifier, testExecutionResult ); > + } > + else if ( testIdentifier.isTest() ) > + { > + runListener.testSucceeded( createReportEntry( testIdentifier > ) ); > + } > + completeTestSetIfNecessary( testIdentifier ); > + } > + > + private void updateTestPlan( TestPlan testPlan ) > + { > + this.testPlan = testPlan; > + testSetNodes.clear(); > + } > + > + private void ensureTestSetStarted( TestIdentifier testIdentifier ) > + { > + if ( isTestSetStarted( testIdentifier ) ) > + { > + return; > + } > + if ( testIdentifier.isTest() ) > + { > + startTestSet( testPlan.getParent( testIdentifier ).orElse( > testIdentifier ) ); > + } > + else > + { > + startTestSet( testIdentifier ); > + } > + } > + > + private boolean isTestSetStarted( TestIdentifier testIdentifier ) > + { > + return testSetNodes.contains( testIdentifier ) > + || testPlan.getParent( testIdentifier ).map( > this::isTestSetStarted ).orElse( false ); > > Review comment: > No real engine will do that so I don't think it's crucial to introduce > a (temporary) workaround in Surefire. > > ---------------------------------------------------------------- > This is an automated message from the Apache Git Service. > To respond to the message, please log on GitHub and use the > URL above to go to the specific comment. > > For queries about this service, please contact Infrastructure at: > us...@infra.apache.org > > > With regards, > Apache Git Services >