public void testUnpackOverWriteIfNewer() throws Exception {
    final long now = System.currentTimeMillis();

    setSilent(mojo, false);
    stubFactory.setCreateFiles(true);
    Artifact artifact = stubFactory.getSnapshotArtifact();
    assertTrue(artifact.getFile().setLastModified(now - 20000));

    ArtifactItem item = new ArtifactItem(artifact);

    List<ArtifactItem> list = Collections.singletonList(item);
    mojo.setArtifactItems(list);
    mojo.setOverWriteIfNewer(true);
    mojo.execute();
    File unpackedFile = getUnpackedFile(item);

    // round down to the last second
    long time = now;
    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 was 4s but test is brittle on MacOS if less than 5s
    assertTrue(artifact.getFile().setLastModified(time + 5000));

    // manually set markerfile (must match getMarkerFile in DefaultMarkerFileHandler)
    File marker =
        new File(mojo.getMarkersDirectory(), artifact.getId().replace(':', '-') + ".marker");
    assertTrue(marker.setLastModified(time));

    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);
    System.out.println("marker.lastModified() = " + marker.lastModified());
    System.out.println("unpackedFile.lastModified() = " + unpackedFile.lastModified());
    assertTrue(
        "unpackedFile '"
            + unpackedFile
            + "' lastModified() == "
            + marker.lastModified()
            + ": should be different",
        marker.lastModified() != unpackedFile.lastModified());
  }
  public void testUnpackOverWriteReleases() throws Exception {
    stubFactory.setCreateFiles(true);
    Artifact release = stubFactory.getReleaseArtifact();
    release.getFile().setLastModified(System.currentTimeMillis() - 2000);

    ArtifactItem item = new ArtifactItem(release);

    List<ArtifactItem> list = new ArrayList<ArtifactItem>(1);
    list.add(item);
    mojo.setArtifactItems(list);

    mojo.setOverWriteIfNewer(false);
    mojo.setOverWriteReleases(true);
    mojo.execute();

    assertUnpacked(item, true);
  }