[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 )