Skip to content

Commit 559db4c

Browse files
authored
[SUREFIRE-2086] Management of temporary files (#535)
1 parent bce6b43 commit 559db4c

File tree

15 files changed

+434
-33
lines changed

15 files changed

+434
-33
lines changed

maven-failsafe-plugin/src/test/java/org/apache/maven/plugin/failsafe/MarshallerUnmarshallerTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.apache.maven.plugin.failsafe.util.FailsafeSummaryXmlUtils;
2323
import org.apache.maven.surefire.api.suite.RunResult;
24+
import org.apache.maven.surefire.api.util.SureFireFileManager;
2425
import org.junit.Test;
2526

2627
import java.io.File;
@@ -73,7 +74,7 @@ public void shouldMarshallAndUnmarshallSameXml() throws Exception
7374
+ "\n\tat org.apache.maven.plugin.surefire.booterclient.ForkStarter"
7475
+ ".awaitResultsDone(ForkStarter.java:489)", true );
7576

76-
File xml = File.createTempFile( "failsafe-summary", ".xml" );
77+
File xml = SureFireFileManager.createTempFile( "failsafe-summary", ".xml" );
7778
FailsafeSummaryXmlUtils.writeSummary( expected, xml, false );
7879

7980
RunResult actual = FailsafeSummaryXmlUtils.toRunResult( xml );

maven-failsafe-plugin/src/test/java/org/apache/maven/plugin/failsafe/RunResultTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.apache.maven.plugin.failsafe.util.FailsafeSummaryXmlUtils;
2323
import org.apache.maven.surefire.api.suite.RunResult;
24+
import org.apache.maven.surefire.api.util.SureFireFileManager;
2425
import org.junit.Test;
2526

2627
import java.io.File;
@@ -84,7 +85,7 @@ public void testAppendSerialization()
8485
RunResult simpleAggregate = getSimpleAggregate();
8586
RunResult additional = new RunResult( 2, 1, 2, 2, "msg " + ( (char) 0x0E01 ), true );
8687

87-
File summary = File.createTempFile( "failsafe", "test" );
88+
File summary = SureFireFileManager.createTempFile( "failsafe", "test" );
8889
FailsafeSummaryXmlUtils.writeSummary( simpleAggregate, summary, false );
8990
FailsafeSummaryXmlUtils.writeSummary( additional, summary, true );
9091
RunResult actual = FailsafeSummaryXmlUtils.toRunResult( summary );
@@ -121,7 +122,7 @@ public void testAppendSerialization()
121122
private void writeReadCheck( RunResult expected )
122123
throws Exception
123124
{
124-
File tmp = File.createTempFile( "test", "xml" );
125+
File tmp = SureFireFileManager.createTempFile( "test", "xml" );
125126
FailsafeSummaryXmlUtils.fromRunResultToFile( expected, tmp );
126127

127128
RunResult actual = FailsafeSummaryXmlUtils.toRunResult( tmp );

maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.apache.maven.plugin.surefire.booterclient.lazytestprovider.Commandline;
2626
import org.apache.maven.plugin.surefire.booterclient.output.InPluginProcessDumpSingleton;
2727
import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
28+
import org.apache.maven.surefire.api.util.TempFileManager;
2829
import org.apache.maven.surefire.booter.Classpath;
2930
import org.apache.maven.surefire.booter.StartupConfiguration;
3031
import org.apache.maven.surefire.booter.SurefireBooterForkException;
@@ -113,7 +114,7 @@ private File createJar( @Nonnull List<String> classPath, @Nonnull String startCl
113114
@Nonnull File dumpLogDirectory )
114115
throws IOException
115116
{
116-
File file = File.createTempFile( "surefirebooter", ".jar", getTempDirectory() );
117+
File file = TempFileManager.instance( getTempDirectory() ).createTempFile( "surefirebooter", ".jar" );
117118
if ( !isDebug() )
118119
{
119120
file.deleteOnExit();

maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.maven.plugin.surefire.booterclient.lazytestprovider.Commandline;
2323
import org.apache.maven.plugin.surefire.booterclient.output.InPluginProcessDumpSingleton;
2424
import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
25+
import org.apache.maven.surefire.api.util.TempFileManager;
2526
import org.apache.maven.surefire.booter.AbstractPathConfiguration;
2627
import org.apache.maven.surefire.booter.Classpath;
2728
import org.apache.maven.surefire.booter.ModularClasspath;
@@ -42,7 +43,6 @@
4243
import java.util.Map;
4344
import java.util.Properties;
4445

45-
import static java.io.File.createTempFile;
4646
import static java.io.File.pathSeparatorChar;
4747
import static org.apache.maven.plugin.surefire.SurefireHelper.escapeToPlatformPath;
4848
import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
@@ -118,7 +118,7 @@ File createArgsFile( @Nonnull String moduleName, @Nonnull List<String> modulePat
118118
@Nonnull List<String[]> providerJpmsArguments )
119119
throws IOException
120120
{
121-
File surefireArgs = createTempFile( "surefireargs", "", getTempDirectory() );
121+
File surefireArgs = TempFileManager.instance( getTempDirectory() ).createTempFile( "surefireargs", "" );
122122
if ( isDebug() )
123123
{
124124
getLogger().debug( "Path to args file: " + surefireArgs.getCanonicalPath() );

maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/Utf8RecodingDeferredFileOutputStream.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import static java.util.Objects.requireNonNull;
3333
import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
3434

35+
import org.apache.maven.surefire.api.util.SureFireFileManager;
36+
3537
/**
3638
* A deferred file output stream decorator that recodes the bytes written into the stream from the VM default encoding
3739
* to UTF-8.
@@ -66,7 +68,8 @@ public synchronized void write( String output, boolean newLine )
6668

6769
if ( storage == null )
6870
{
69-
file = Files.createTempFile( channel, "deferred" );
71+
72+
file = SureFireFileManager.createTempFile( channel, "deferred" ).toPath();
7073
storage = new RandomAccessFile( file.toFile(), "rw" );
7174
}
7275

maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import org.apache.maven.repository.RepositorySystem;
6060
import org.apache.maven.surefire.api.suite.RunResult;
6161
import org.apache.maven.surefire.api.util.DefaultScanResult;
62+
import org.apache.maven.surefire.api.util.SureFireFileManager;
6263
import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
6364
import org.apache.maven.surefire.booter.Classpath;
6465
import org.apache.maven.surefire.booter.ModularClasspathConfiguration;
@@ -2522,7 +2523,7 @@ public void shouldNotPerformMethodFilteringOnIncludes() throws Exception
25222523
{
25232524
Mojo plugin = new Mojo();
25242525

2525-
File includesExcludes = File.createTempFile( "surefire", "-includes" );
2526+
File includesExcludes = SureFireFileManager.createTempFile( "surefire", "includes" );
25262527
FileUtils.write( includesExcludes, "AnotherTest#method" , UTF_8 );
25272528
plugin.setIncludesFile( includesExcludes );
25282529

@@ -2533,7 +2534,7 @@ public void shouldNotPerformMethodFilteringOnIncludes() throws Exception
25332534
VersionRange version = VersionRange.createFromVersion( "1.0" );
25342535
ArtifactHandler handler = new DefaultArtifactHandler();
25352536
Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "jar", null, handler );
2536-
File artifactFile = File.createTempFile( "surefire", ".jar" );
2537+
File artifactFile = SureFireFileManager.createTempFile( "surefire", ".jar" );
25372538
artifactFile.deleteOnExit();
25382539
testDeps.setFile( artifactFile );
25392540
plugin.setProjectTestArtifacts( singletonList( testDeps ) );
@@ -2550,14 +2551,14 @@ public void shouldFilterTestsOnIncludesFile() throws Exception
25502551

25512552
plugin.setLogger( mock( Logger.class ) );
25522553

2553-
File includes = File.createTempFile( "surefire", "-includes" );
2554+
File includes = SureFireFileManager.createTempFile( "surefire", "includes" );
25542555
FileUtils.write( includes, "AnotherTest#method" , UTF_8 );
25552556
plugin.setIncludesFile( includes );
25562557

25572558
VersionRange version = VersionRange.createFromVersion( "1.0" );
25582559
ArtifactHandler handler = new DefaultArtifactHandler();
25592560
Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "test-jar", null, handler );
2560-
File artifactFile = File.createTempFile( "surefire", "-classes" );
2561+
File artifactFile = SureFireFileManager.createTempFile( "surefire", "classes" );
25612562
String classDir = artifactFile.getCanonicalPath();
25622563
assertThat( artifactFile.delete() ).isTrue();
25632564
File classes = new File( classDir );
@@ -2580,14 +2581,14 @@ public void shouldFilterTestsOnExcludesFile() throws Exception
25802581

25812582
plugin.setLogger( mock( Logger.class ) );
25822583

2583-
File excludes = File.createTempFile( "surefire", "-excludes" );
2584+
File excludes = SureFireFileManager.createTempFile( "surefire", "-excludes" );
25842585
FileUtils.write( excludes, "AnotherTest" , UTF_8 );
25852586
plugin.setExcludesFile( excludes );
25862587

25872588
VersionRange version = VersionRange.createFromVersion( "1.0" );
25882589
ArtifactHandler handler = new DefaultArtifactHandler();
25892590
Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "test-jar", null, handler );
2590-
File artifactFile = File.createTempFile( "surefire", "-classes" );
2591+
File artifactFile = SureFireFileManager.createTempFile( "surefire", "-classes" );
25912592
String classDir = artifactFile.getCanonicalPath();
25922593
assertThat( artifactFile.delete() ).isTrue();
25932594
File classes = new File( classDir );
@@ -2615,7 +2616,7 @@ public void shouldFilterTestsOnExcludes() throws Exception
26152616
VersionRange version = VersionRange.createFromVersion( "1.0" );
26162617
ArtifactHandler handler = new DefaultArtifactHandler();
26172618
Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "jar", null, handler );
2618-
File artifactFile = File.createTempFile( "surefire", "-classes" );
2619+
File artifactFile = SureFireFileManager.createTempFile( "surefire", "-classes" );
26192620
String classDir = artifactFile.getCanonicalPath();
26202621
assertThat( artifactFile.delete() ).isTrue();
26212622
File classes = new File( classDir );
@@ -2638,15 +2639,15 @@ public void shouldUseOnlySpecificTests() throws Exception
26382639

26392640
plugin.setLogger( mock( Logger.class ) );
26402641

2641-
File includes = File.createTempFile( "surefire", "-includes" );
2642+
File includes = SureFireFileManager.createTempFile( "surefire", "-includes" );
26422643
FileUtils.write( includes, "AnotherTest" , UTF_8 );
26432644
plugin.setIncludesFile( includes );
26442645
plugin.setTest( "DifferentTest" );
26452646

26462647
VersionRange version = VersionRange.createFromVersion( "1.0" );
26472648
ArtifactHandler handler = new DefaultArtifactHandler();
26482649
Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "test-jar", null, handler );
2649-
File artifactFile = File.createTempFile( "surefire", "-classes" );
2650+
File artifactFile = SureFireFileManager.createTempFile( "surefire", "-classes" );
26502651
String classDir = artifactFile.getCanonicalPath();
26512652
assertThat( artifactFile.delete() ).isTrue();
26522653
File classes = new File( classDir );

maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.apache.maven.surefire.extensions.ForkNodeFactory;
3232
import org.apache.maven.surefire.api.suite.RunResult;
3333
import org.apache.maven.surefire.api.util.DefaultScanResult;
34+
import org.apache.maven.surefire.api.util.SureFireFileManager;
3435
import org.apache.maven.toolchain.Toolchain;
3536
import org.codehaus.plexus.logging.Logger;
3637
import org.junit.Test;
@@ -213,7 +214,7 @@ public void scanDependenciesShouldReturnNullWithExistingWAR()
213214
VersionRange version = VersionRange.createFromVersion( "1.0" );
214215
ArtifactHandler handler = new DefaultArtifactHandler();
215216
Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "war", null, handler );
216-
File artifactFile = File.createTempFile( "surefire", ".war" );
217+
File artifactFile = SureFireFileManager.createTempFile( "surefire", ".war" );
217218
testDeps.setFile( artifactFile );
218219
List<Artifact> projectTestArtifacts = singletonList( testDeps );
219220
String[] dependenciesToScan = { "g:a" };
@@ -231,7 +232,7 @@ public void scanDependenciesShouldReturnClassWithExistingTestJAR()
231232
ArtifactHandler handler = new DefaultArtifactHandler();
232233
Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "test-jar", null, handler );
233234

234-
File artifactFile = File.createTempFile( "surefire", ".jar" );
235+
File artifactFile = SureFireFileManager.createTempFile( "surefire", ".jar" );
235236
testDeps.setFile( artifactFile );
236237
try ( ZipOutputStream os = new ZipOutputStream( new FileOutputStream( artifactFile ) ) )
237238
{
@@ -266,7 +267,7 @@ public void scanDependenciesShouldReturnNullWithEmptyTestJAR()
266267
ArtifactHandler handler = new DefaultArtifactHandler();
267268
Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "jar", null, handler );
268269

269-
File artifactFile = File.createTempFile( "surefire", ".jar" );
270+
File artifactFile = SureFireFileManager.createTempFile( "surefire", ".jar" );
270271
testDeps.setFile( artifactFile );
271272
try ( ZipOutputStream os = new ZipOutputStream( new FileOutputStream( artifactFile ) ) )
272273
{
@@ -296,7 +297,7 @@ public void scanDependenciesShouldReturnClassWithDirectory()
296297
ArtifactHandler handler = new DefaultArtifactHandler();
297298
Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "test-jar", null, handler );
298299

299-
File artifactFile = File.createTempFile( "surefire", "-classes" );
300+
File artifactFile = SureFireFileManager.createTempFile( "surefire", "-classes" );
300301
String classDir = artifactFile.getCanonicalPath();
301302
assertThat( artifactFile.delete() ).isTrue();
302303
File classes = new File( classDir );
@@ -331,7 +332,7 @@ public void scanMultipleDependencies()
331332
ArtifactHandler handler = new DefaultArtifactHandler();
332333
Artifact testDep1 = new DefaultArtifact( "g", "x", version, "compile", "jar", null, handler );
333334

334-
File artifactFile1 = File.createTempFile( "surefire", "-classes" );
335+
File artifactFile1 = SureFireFileManager.createTempFile( "surefire", "-classes" );
335336
String classDir = artifactFile1.getCanonicalPath();
336337
assertThat( artifactFile1.delete() ).isTrue();
337338
File classes = new File( classDir );
@@ -343,7 +344,7 @@ public void scanMultipleDependencies()
343344
.isTrue();
344345

345346
Artifact testDep2 = new DefaultArtifact( "g", "a", version, "test", "jar", null, handler );
346-
File artifactFile2 = File.createTempFile( "surefire", ".jar" );
347+
File artifactFile2 = SureFireFileManager.createTempFile( "surefire", ".jar" );
347348
testDep2.setFile( artifactFile2 );
348349
try ( ZipOutputStream os = new ZipOutputStream( new FileOutputStream( artifactFile2 ) ) )
349350
{

maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfigurationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.apache.maven.plugin.surefire.booterclient.lazytestprovider.Commandline;
2323
import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger;
24+
import org.apache.maven.surefire.api.util.SureFireFileManager;
2425
import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
2526
import org.apache.maven.surefire.booter.Classpath;
2627
import org.apache.maven.surefire.booter.ForkedBooter;
@@ -36,7 +37,6 @@
3637
import java.util.List;
3738
import java.util.Properties;
3839

39-
import static java.io.File.createTempFile;
4040
import static java.io.File.pathSeparatorChar;
4141
import static java.io.File.separator;
4242
import static java.io.File.separatorChar;
@@ -147,7 +147,7 @@ public void shouldCreateModularArgsFile() throws Exception
147147
modularClasspathConfiguration, clc, null, Collections.<String[]>emptyList() );
148148
Commandline cli = new Commandline();
149149
config.resolveClasspath( cli, ForkedBooter.class.getName(), startupConfiguration,
150-
createTempFile( "surefire", "surefire-reports" ) );
150+
SureFireFileManager.createTempFile( "surefire", "surefire-reports" ) );
151151

152152
assertThat( cli.getArguments() ).isNotNull();
153153
assertThat( cli.getArguments() ).hasSize( 1 );

maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMapTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.apache.maven.surefire.api.report.SimpleReportEntry;
3636

3737
import junit.framework.TestCase;
38+
import org.apache.maven.surefire.api.util.SureFireFileManager;
3839
import org.apache.maven.surefire.api.util.internal.ClassMethod;
3940

4041
import static java.nio.charset.StandardCharsets.UTF_8;
@@ -85,7 +86,7 @@ private InputStream getStatisticsFile()
8586
public void testSerializeClass()
8687
throws Exception
8788
{
88-
File data = File.createTempFile( "surefire-unit", "test" );
89+
File data = SureFireFileManager.createTempFile( "surefire-unit", "test" );
8990
RunEntryStatisticsMap newResults = new RunEntryStatisticsMap();
9091
ReportEntry reportEntry = new SimpleReportEntry( NORMAL_RUN, 0L,
9192
"abc", null, null, null, 42 );
@@ -107,7 +108,7 @@ public void testSerializeClass()
107108
public void testDeserializeClass()
108109
throws Exception
109110
{
110-
File data = File.createTempFile( "surefire-unit", "test" );
111+
File data = SureFireFileManager.createTempFile( "surefire-unit", "test" );
111112
Files.write( data.toPath(), "1,42,abc".getBytes( UTF_8 ) );
112113
RunEntryStatisticsMap existingEntries = RunEntryStatisticsMap.fromFile( data );
113114
Map<?, ?> runEntryStatistics = getInternalState( existingEntries, "runEntryStatistics" );
@@ -129,7 +130,7 @@ public void testDeserializeClass()
129130
public void testSerialize()
130131
throws Exception
131132
{
132-
File data = File.createTempFile( "surefire-unit", "test" );
133+
File data = SureFireFileManager.createTempFile( "surefire-unit", "test" );
133134
RunEntryStatisticsMap existingEntries = RunEntryStatisticsMap.fromFile( data );
134135
RunEntryStatisticsMap newResults = new RunEntryStatisticsMap();
135136

@@ -186,7 +187,7 @@ public void testSerialize()
186187
@SuppressWarnings( "checkstyle:magicnumber" )
187188
public void testMultiLineTestMethodName() throws IOException
188189
{
189-
File data = File.createTempFile( "surefire-unit", "test" );
190+
File data = SureFireFileManager.createTempFile( "surefire-unit", "test" );
190191
RunEntryStatisticsMap reportEntries = RunEntryStatisticsMap.fromFile( data );
191192
ReportEntry reportEntry = new SimpleReportEntry( NORMAL_RUN, 0L,
192193
"abc", null, "line1\nline2" + NL + " line3", null, 42 );
@@ -222,7 +223,7 @@ public void testMultiLineTestMethodName() throws IOException
222223
@SuppressWarnings( "checkstyle:magicnumber" )
223224
public void testCombinedMethodNames() throws IOException
224225
{
225-
File data = File.createTempFile( "surefire-unit", "test" );
226+
File data = SureFireFileManager.createTempFile( "surefire-unit", "test" );
226227
RunEntryStatisticsMap reportEntries = RunEntryStatisticsMap.fromFile( data );
227228
reportEntries.add( reportEntries.createNextGeneration( new SimpleReportEntry( NORMAL_RUN, 0L,
228229
"abc", null, "line1\nline2", null, 42 ) ) );
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.apache.maven.surefire.api.util;
2+
3+
/*
4+
* Licensed to the Apache Software Foundation (ASF) under one
5+
* or more contributor license agreements. See the NOTICE file
6+
* distributed with this work for additional information
7+
* regarding copyright ownership. The ASF licenses this file
8+
* to you under the Apache License, Version 2.0 (the
9+
* "License"); you may not use this file except in compliance
10+
* with the License. You may obtain a copy of the License at
11+
*
12+
* http://www.apache.org/licenses/LICENSE-2.0
13+
*
14+
* Unless required by applicable law or agreed to in writing,
15+
* software distributed under the License is distributed on an
16+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17+
* KIND, either express or implied. See the License for the
18+
* specific language governing permissions and limitations
19+
* under the License.
20+
*/
21+
22+
import java.io.File;
23+
24+
/**
25+
* Centralized file management of surefire.
26+
*
27+
* @author Markus Spann
28+
*/
29+
public final class SureFireFileManager
30+
{
31+
32+
public static File createTempFile( String prefix, String suffix )
33+
{
34+
35+
return TempFileManager.instance( "surefire" ).createTempFile( prefix, suffix );
36+
37+
}
38+
39+
}

0 commit comments

Comments
 (0)