[MDEP-778] [MDEP-655] Fix unpack testcase for intermittent timing
diff --git a/src/test/java/org/apache/maven/plugins/dependency/fromConfiguration/TestUnpackMojo.java b/src/test/java/org/apache/maven/plugins/dependency/fromConfiguration/TestUnpackMojo.java
index 7659029..1a9b6fe 100644
--- a/src/test/java/org/apache/maven/plugins/dependency/fromConfiguration/TestUnpackMojo.java
+++ b/src/test/java/org/apache/maven/plugins/dependency/fromConfiguration/TestUnpackMojo.java
@@ -38,6 +38,8 @@
import java.util.Collections;
import java.util.List;
+import static org.apache.commons.lang3.time.DateFormatUtils.ISO_8601_EXTENDED_DATETIME_FORMAT;
+
public class TestUnpackMojo
extends AbstractDependencyMojoTestCase
{
@@ -531,12 +533,9 @@
public void testUnpackOverWriteIfNewer()
throws Exception
{
- final long now = System.currentTimeMillis();
-
mojo.setSilent( false );
stubFactory.setCreateFiles( true );
Artifact artifact = stubFactory.getSnapshotArtifact();
- assertTrue( artifact.getFile().setLastModified( now - 20000 ) );
ArtifactItem item = new ArtifactItem( createArtifact( artifact ) );
@@ -547,27 +546,35 @@
File unpackedFile = getUnpackedFile( item );
// round down to the last second
- long time = now;
+ long time = unpackedFile.lastModified();
time = time - ( time % 1000 );
- // go back 10 more seconds for linux
- time -= 10000;
- // set to known value
- assertTrue( unpackedFile.setLastModified( time ) );
- // set source to be newer about some seconds,
- // especially on macOS it shouldn't be smaller than 8s in order to mitigate flapping test
- assertTrue( artifact.getFile().setLastModified( time + 8000 ) );
+ // set source to be newer
+ assertTrue( artifact.getFile().setLastModified( time + 2000 ) );
// manually set markerfile (must match getMarkerFile in DefaultMarkerFileHandler)
File marker = new File( mojo.getMarkersDirectory(), artifact.getId().replace( ':', '-' ) + ".marker" );
- assertTrue( marker.setLastModified( time ) );
+ assertTrue( marker.setLastModified( time - 2000 ) );
+ displayFile( "unpackedFile", unpackedFile );
+ displayFile( "artifact ", artifact.getFile() );
+ displayFile( "marker ", marker );
+ System.out.println( "mojo.execute()" );
mojo.execute();
+ displayFile( "unpackedFile", unpackedFile );
+ displayFile( "artifact ", artifact.getFile() );
+ displayFile( "marker ", marker );
- long markerLastModifiedMillis = Files.getLastModifiedTime( marker.toPath() ).toMillis();
- long unpackedFileLastModifiedMillis = Files.getLastModifiedTime( unpackedFile.toPath() ).toMillis();
+ assertTrue( "unpackedFile '" + unpackedFile + "' lastModified() != " + marker.lastModified()
+ + ": should be different", marker.lastModified() > unpackedFile.lastModified() );
+ assertEquals( "artifact '" + artifact.getFile() + "' lastModified() == " + marker.lastModified()
+ + ": should be equal", marker.lastModified(), artifact.getFile().lastModified() );
+ }
- assertTrue( "unpackedFile '" + unpackedFile + "' lastModified() == " + markerLastModifiedMillis
- + ": should be different", markerLastModifiedMillis != unpackedFileLastModifiedMillis );
+ private void displayFile( String description, File file ) throws IOException
+ {
+ long toMillis = Files.getLastModifiedTime( file.toPath() ).toMillis();
+ System.out.println( description + ' ' + ISO_8601_EXTENDED_DATETIME_FORMAT.format( file.lastModified() ) + ' '
+ + toMillis + ' ' + file.getPath().substring( getBasedir().length() ) );
}
public void assertUnpacked( ArtifactItem item, boolean overWrite )