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
>

Reply via email to