This is an automated email from the ASF dual-hosted git repository. tibordigana pushed a commit to branch 1546-1222-v2 in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit fd2f7fd8a2676303b2feaede3f7af032e023f723 Author: tibordigana <tibordig...@apache.org> AuthorDate: Thu May 23 01:24:37 2019 +0200 refactoring --- .../output/ThreadedStreamConsumer.java | 2 +- .../surefire/report/DefaultReporterFactory.java | 3 +- .../maven/surefire/report/RunStatistics.java | 21 +------ .../plugin/surefire/SurefireReflectorTest.java | 72 +++++++++++++++++++++- .../report/DefaultReporterFactoryTest.java | 11 ++-- .../maven/surefire/booter/SurefireReflector.java | 49 +++------------ 6 files changed, 88 insertions(+), 70 deletions(-) diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ThreadedStreamConsumer.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ThreadedStreamConsumer.java index dad88fd..388f16d 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ThreadedStreamConsumer.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ThreadedStreamConsumer.java @@ -40,7 +40,7 @@ public final class ThreadedStreamConsumer { private static final String END_ITEM = ""; - private static final int ITEM_LIMIT_BEFORE_SLEEP = 10 * 1000; + private static final int ITEM_LIMIT_BEFORE_SLEEP = 10_000; private final BlockingQueue<String> items = new ArrayBlockingQueue<>( ITEM_LIMIT_BEFORE_SLEEP ); diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java index d51b3e9..0d7ca78 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java @@ -272,7 +272,7 @@ public class DefaultReporterFactory * Merge all the TestMethodStats in each TestRunListeners and put results into flakyTests, failedTests and * errorTests, indexed by test class and method name. Update globalStatistics based on the result of the merge. */ - void mergeTestHistoryResult() + private void mergeTestHistoryResult() { globalStats = new RunStatistics(); flakyTests = new TreeMap<>(); @@ -388,7 +388,6 @@ public class DefaultReporterFactory for ( Map.Entry<String, List<TestMethodStats>> entry : testStats.entrySet() ) { - printed = true; List<TestMethodStats> testMethodStats = entry.getValue(); if ( testMethodStats.size() == 1 ) { diff --git a/maven-surefire-common/src/main/java/org/apache/maven/surefire/report/RunStatistics.java b/maven-surefire-common/src/main/java/org/apache/maven/surefire/report/RunStatistics.java index 29aa8dc..7c911ec 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/surefire/report/RunStatistics.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/surefire/report/RunStatistics.java @@ -19,13 +19,12 @@ package org.apache.maven.surefire.report; * under the License. */ -import org.apache.maven.plugin.surefire.report.TestSetStats; import org.apache.maven.surefire.suite.RunResult; /** * @author Kristian Rosenvold */ -public class RunStatistics +public final class RunStatistics { private int completedCount; @@ -37,16 +36,6 @@ public class RunStatistics private int flakes; - public synchronized boolean hadFailures() - { - return failures > 0; - } - - public synchronized boolean hadErrors() - { - return errors > 0; - } - public synchronized int getCompletedCount() { return completedCount; @@ -72,14 +61,6 @@ public class RunStatistics return flakes; } - public synchronized void add( TestSetStats testSetStats ) - { - this.completedCount += testSetStats.getCompletedCount(); - this.errors += testSetStats.getErrors(); - this.failures += testSetStats.getFailures(); - this.skipped += testSetStats.getSkipped(); - } - public synchronized void set( int completedCount, int errors, int failures, int skipped, int flakes ) { this.completedCount = completedCount; diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireReflectorTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireReflectorTest.java index a7c8b9d..2553617 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireReflectorTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireReflectorTest.java @@ -1 +1,71 @@ -package org.apache.maven.plugin.surefire; /* * 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 org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.plugin.surefire.log.api.ConsoleLoggerDecorator; import o rg.apache.maven.plugin.surefire.log.api.PrintStreamLogger; import org.apache.maven.surefire.booter.IsolatedClassLoader; import org.apache.maven.surefire.booter.SurefireReflector; import org.junit.Before; import org.junit.Test; import static org.apache.maven.surefire.util.ReflectionUtils.getMethod; import static org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.CoreMatchers.sameInstance; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; /** * @author <a href="mailto:tibordig...@apache.org">Tibor Digana (tibor17)</a> * @see ConsoleLogger * @see SurefireReflector * @since 2.20 */ public class SurefireReflectorTest { private ConsoleLogger logger; private SurefireReflector reflector; @Before public void prepareData() { logger = spy( new PrintStreamLogger( System.out ) ); ClassLoader cl = new IsolatedClassLoader( Thread.currentThread().getContextClassLoader(), false, "role" ); reflector = new SurefireReflector( cl ); } @Test public void shouldProxyConsoleLogger() { Object mirror = reflector.createConsoleLogger( logger ); assertThat( mirror, is( notNullValue() ) ); assertThat( mirror.getClass().getInterfaces()[0].getName(), is( ConsoleLogger.class.getName() ) ); assertThat( mirror, is( not( sameInstance( (Object) logger ) ) ) ); assertThat( mirror, is( instanceOf( ConsoleLoggerDecorator.class ) ) ); invokeMethodWithArray( mirror, getMethod( mirror, "info", String.class ), "Hi There!" ); verify( logger, times( 1 ) ).info( "Hi There!" ); } } \ No newline at end of file +package org.apache.maven.plugin.surefire; + +/* + * 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 org.apache.maven.plugin.surefire.log.api.ConsoleLogger; +import org.apache.maven.plugin.surefire.log.api.ConsoleLoggerDecorator; +import org.apache.maven.plugin.surefire.log.api.PrintStreamLogger; +import org.apache.maven.surefire.booter.IsolatedClassLoader; +import org.apache.maven.surefire.booter.SurefireReflector; +import org.junit.Before; +import org.junit.Test; + +import static org.apache.maven.surefire.util.ReflectionUtils.getMethod; +import static org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.CoreMatchers.sameInstance; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +/** + * @author <a href="mailto:tibordig...@apache.org">Tibor Digana (tibor17)</a> + * @see ConsoleLogger + * @see SurefireReflector + * @since 2.20 + */ +public class SurefireReflectorTest +{ + private ConsoleLogger logger; + private ClassLoader cl; + + @Before + public void prepareData() + { + logger = spy( new PrintStreamLogger( System.out ) ); + cl = new IsolatedClassLoader( Thread.currentThread().getContextClassLoader(), false, "role" ); + } + + @Test + public void shouldProxyConsoleLogger() + { + Object mirror = SurefireReflector.createConsoleLogger( logger, cl ); + assertThat( mirror, is( notNullValue() ) ); + assertThat( mirror.getClass().getInterfaces()[0].getName(), is( ConsoleLogger.class.getName() ) ); + assertThat( mirror, is( not( sameInstance( (Object) logger ) ) ) ); + assertThat( mirror, is( instanceOf( ConsoleLoggerDecorator.class ) ) ); + invokeMethodWithArray( mirror, getMethod( mirror, "info", String.class ), "Hi There!" ); + verify( logger, times( 1 ) ).info( "Hi There!" ); + } +} diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java index 55c3a64..4bdfe8b 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java @@ -35,6 +35,7 @@ import org.apache.maven.surefire.report.SafeThrowable; import org.apache.maven.surefire.report.StackTraceWriter; import static java.util.Arrays.asList; +import static java.util.Collections.emptyList; import static org.apache.maven.plugin.surefire.report.DefaultReporterFactory.TestResultType.error; import static org.apache.maven.plugin.surefire.report.DefaultReporterFactory.TestResultType.failure; import static org.apache.maven.plugin.surefire.report.DefaultReporterFactory.TestResultType.flake; @@ -44,6 +45,7 @@ import static org.apache.maven.plugin.surefire.report.DefaultReporterFactory.Tes import static org.apache.maven.plugin.surefire.report.DefaultReporterFactory.getTestResultType; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import static org.powermock.reflect.Whitebox.invokeMethod; public class DefaultReporterFactoryTest extends TestCase @@ -63,6 +65,7 @@ public class DefaultReporterFactoryTest private final static String ERROR = "error"; public void testMergeTestHistoryResult() + throws Exception { MessageUtils.setColorEnabled( false ); File reportsDirectory = new File("target"); @@ -111,7 +114,7 @@ public class DefaultReporterFactoryTest factory.addListener( secondRunListener ); factory.addListener( thirdRunListener ); - factory.mergeTestHistoryResult(); + invokeMethod( factory, "mergeTestHistoryResult" ); RunStatistics mergedStatistics = factory.getGlobalRunStatistics(); // Only TEST_THREE is a failing test, other three are flaky tests @@ -132,14 +135,12 @@ public class DefaultReporterFactoryTest reporter.reset(); factory.printTestFailures( error ); String[] expectedFailureOutput = - { "Errors: ", TEST_THREE, " Run 1: " + ASSERTION_FAIL, " Run 2: " + ERROR, " Run 3: " + ERROR, "" - }; + { "Errors: ", TEST_THREE, " Run 1: " + ASSERTION_FAIL, " Run 2: " + ERROR, " Run 3: " + ERROR, "" }; assertEquals( asList( expectedFailureOutput ), reporter.getMessages() ); reporter.reset(); factory.printTestFailures( failure ); - String[] expectedErrorOutput = { }; - assertEquals( asList( expectedErrorOutput ), reporter.getMessages() ); + assertEquals( emptyList(), reporter.getMessages() ); } static final class DummyTestReporter implements ConsoleLogger diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java b/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java index 360c802..5cc1415 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java @@ -34,10 +34,8 @@ import org.apache.maven.surefire.testset.TestRequest; import org.apache.maven.surefire.util.RunOrder; import org.apache.maven.surefire.util.SurefireReflectionException; -import javax.annotation.Nonnull; import java.io.File; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; @@ -147,32 +145,9 @@ public class SurefireReflector int getSkipped = (Integer) invokeGetter( result, "getSkipped" ); int getFailures = (Integer) invokeGetter( result, "getFailures" ); return new RunResult( getCompletedCount1, getErrors, getFailures, getSkipped ); - - } - - class ClassLoaderProxy - implements InvocationHandler - { - private final Object target; - - /** - * @param delegate a target - */ - ClassLoaderProxy( Object delegate ) - { - this.target = delegate; - } - - @Override - public Object invoke( Object proxy, Method method, Object[] args ) - throws Throwable - { - Method delegateMethod = target.getClass().getMethod( method.getName(), method.getParameterTypes() ); - return delegateMethod.invoke( target, args ); - } } - Object createTestRequest( TestRequest suiteDefinition ) + private Object createTestRequest( TestRequest suiteDefinition ) { if ( suiteDefinition == null ) { @@ -191,7 +166,7 @@ public class SurefireReflector } } - Object createTestListResolver( TestListResolver resolver ) + private Object createTestListResolver( TestListResolver resolver ) { if ( resolver == null ) { @@ -204,7 +179,7 @@ public class SurefireReflector } } - Object createDirectoryScannerParameters( DirectoryScannerParameters directoryScannerParameters ) + private Object createDirectoryScannerParameters( DirectoryScannerParameters directoryScannerParameters ) { if ( directoryScannerParameters == null ) { @@ -222,8 +197,7 @@ public class SurefireReflector RunOrder.asString( directoryScannerParameters.getRunOrder() ) ); } - - Object createRunOrderParameters( RunOrderParameters runOrderParameters ) + private Object createRunOrderParameters( RunOrderParameters runOrderParameters ) { if ( runOrderParameters == null ) { @@ -236,7 +210,7 @@ public class SurefireReflector return newInstance( constructor, RunOrder.asString( runOrderParameters.getRunOrder() ), runStatisticsFile ); } - Object createTestArtifactInfo( TestArtifactInfo testArtifactInfo ) + private Object createTestArtifactInfo( TestArtifactInfo testArtifactInfo ) { if ( testArtifactInfo == null ) { @@ -247,7 +221,7 @@ public class SurefireReflector return newInstance( constructor, testArtifactInfo.getVersion(), testArtifactInfo.getClassifier() ); } - Object createReporterConfiguration( ReporterConfiguration reporterConfig ) + private Object createReporterConfiguration( ReporterConfiguration reporterConfig ) { Constructor constructor = getConstructor( reporterConfiguration, File.class, boolean.class ); return newInstance( constructor, reporterConfig.getReportsDirectory(), reporterConfig.isTrimStackTrace() ); @@ -315,7 +289,7 @@ public class SurefireReflector invokeSetter( o, "setSystemExitTimeout", Integer.class, systemExitTimeout ); } - public void setDirectoryScannerParameters( Object o, DirectoryScannerParameters dirScannerParams ) + void setDirectoryScannerParameters( Object o, DirectoryScannerParameters dirScannerParams ) { Object param = createDirectoryScannerParameters( dirScannerParams ); invokeSetter( o, "setDirectoryScannerParameters", directoryScannerParameters, param ); @@ -362,8 +336,7 @@ public class SurefireReflector } } - - void setReporterConfiguration( Object o, ReporterConfiguration reporterConfiguration ) + private void setReporterConfiguration( Object o, ReporterConfiguration reporterConfiguration ) { Object param = createReporterConfiguration( reporterConfiguration ); invokeSetter( o, "setReporterConfiguration", this.reporterConfiguration, param ); @@ -402,11 +375,6 @@ public class SurefireReflector return runResult.isAssignableFrom( o.getClass() ); } - public Object createConsoleLogger( @Nonnull ConsoleLogger consoleLogger ) - { - return createConsoleLogger( consoleLogger, surefireClassLoader ); - } - private static Collection<Integer> toOrdinals( Collection<? extends Enum> enums ) { Collection<Integer> ordinals = new ArrayList<>( enums.size() ); @@ -429,5 +397,4 @@ public class SurefireReflector throw new SurefireReflectionException( e ); } } - }