diff --git a/pom.xml b/pom.xml
index 8d70dd47..10a20382 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@ under the License.
org.apache.maven.extensions
maven-extensions
- 41
+ 44
diff --git a/src/main/java/org/apache/maven/buildcache/hash/HashFactory.java b/src/main/java/org/apache/maven/buildcache/hash/HashFactory.java
index 731480a6..ec7197e3 100644
--- a/src/main/java/org/apache/maven/buildcache/hash/HashFactory.java
+++ b/src/main/java/org/apache/maven/buildcache/hash/HashFactory.java
@@ -28,14 +28,14 @@
* HashFactory
*/
public enum HashFactory {
- SHA1(new SHA("SHA-1")),
- SHA256(new SHA("SHA-256")),
- SHA384(new SHA("SHA-384")),
- SHA512(new SHA("SHA-512")),
- XX(new Zah("XX", LongHashFunction.xx(), Zah.MemoryPolicy.Standard)),
- XXMM(new Zah("XXMM", LongHashFunction.xx(), Zah.MemoryPolicy.MemoryMappedBuffers)),
- METRO(new Zah("METRO", LongHashFunction.metro(), Zah.MemoryPolicy.Standard)),
- METRO_MM(new Zah("METRO+MM", LongHashFunction.metro(), Zah.MemoryPolicy.MemoryMappedBuffers));
+ sha1(new SHA("SHA-1")),
+ sha256(new SHA("SHA-256")),
+ sha384(new SHA("SHA-384")),
+ sha512(new SHA("SHA-512")),
+ xx(new Zah("XX", LongHashFunction.xx(), Zah.MemoryPolicy.Standard)),
+ xxmm(new Zah("XXMM", LongHashFunction.xx(), Zah.MemoryPolicy.MemoryMappedBuffers)),
+ metro(new Zah("METRO", LongHashFunction.metro(), Zah.MemoryPolicy.Standard)),
+ metroMm(new Zah("METRO+MM", LongHashFunction.metro(), Zah.MemoryPolicy.MemoryMappedBuffers));
private static final Map LOOKUP = new HashMap<>();
diff --git a/src/test/java/org/apache/maven/buildcache/BuildInfoTest.java b/src/test/java/org/apache/maven/buildcache/BuildInfoTest.java
index 76b2be3f..0b3d3014 100644
--- a/src/test/java/org/apache/maven/buildcache/BuildInfoTest.java
+++ b/src/test/java/org/apache/maven/buildcache/BuildInfoTest.java
@@ -73,7 +73,7 @@ public void name() throws Exception {
final org.apache.maven.artifact.Artifact attachedArtifact =
new DefaultArtifact("ag", "aa", "av", "as", "at", "ac", new DefaultArtifactHandler());
buildInfo.setAttachedArtifacts(Build.createAttachedArtifacts(
- Collections.singletonList(attachedArtifact), HashFactory.XX.createAlgorithm()));
+ Collections.singletonList(attachedArtifact), HashFactory.xx.createAlgorithm()));
buildInfo.setProjectsInputInfo(main);
buildInfo.setExecutions(createExecutions());
diff --git a/src/test/java/org/apache/maven/buildcache/checksum/InputExclusionTest.java b/src/test/java/org/apache/maven/buildcache/checksum/InputExclusionTest.java
index ec3f2835..9689ddae 100644
--- a/src/test/java/org/apache/maven/buildcache/checksum/InputExclusionTest.java
+++ b/src/test/java/org/apache/maven/buildcache/checksum/InputExclusionTest.java
@@ -400,20 +400,20 @@ private ExclusionResolver createExclusionResolver(
* - other-file.json
*/
private class FsTree {
- public Path txtFileRootFolder;
- public Path javaFileRootFolder;
- public Path jsonFileRootFolder;
- public Path folder1;
- public Path txtFileFolder1;
- public Path javaFileFolder1;
- public Path jsonFileFolder1;
- public Path subFolder1;
- public Path txtFileSubFolder1;
- public Path javaFileSubFolder1;
- public Path jsonFileSubFolder1;
- public Path folder2;
- public Path txtFileFolder2;
- public Path javaFileFolder2;
- public Path jsonFileFolder2;
+ private Path txtFileRootFolder;
+ private Path javaFileRootFolder;
+ private Path jsonFileRootFolder;
+ private Path folder1;
+ private Path txtFileFolder1;
+ private Path javaFileFolder1;
+ private Path jsonFileFolder1;
+ private Path subFolder1;
+ private Path txtFileSubFolder1;
+ private Path javaFileSubFolder1;
+ private Path jsonFileSubFolder1;
+ private Path folder2;
+ private Path txtFileFolder2;
+ private Path javaFileFolder2;
+ private Path jsonFileFolder2;
}
}
diff --git a/src/test/java/org/apache/maven/buildcache/checksum/SHAHashTest.java b/src/test/java/org/apache/maven/buildcache/checksum/SHAHashTest.java
index 68b1ada4..700b73a7 100644
--- a/src/test/java/org/apache/maven/buildcache/checksum/SHAHashTest.java
+++ b/src/test/java/org/apache/maven/buildcache/checksum/SHAHashTest.java
@@ -42,7 +42,7 @@
import org.apache.maven.buildcache.hash.HashChecksum;
import org.junit.jupiter.api.Test;
-import static org.apache.maven.buildcache.hash.HashFactory.SHA256;
+import static org.apache.maven.buildcache.hash.HashFactory.sha256;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class SHAHashTest {
@@ -56,8 +56,8 @@ public class SHAHashTest {
private static final String WORLD_CHECKSUM = "63e5c163c81ee9a3ed99d365ff963ecea340cc455deeac7c4b63ac75b9cf4706";
private static final String FULL_CHECKSUM = "7305db9b2abccd706c256db3d97e5ff48d677cfe4d3a5904afb7da0e3950e1e2";
- private static final HashAlgorithm ALGORITHM = SHA256.createAlgorithm();
- private static final HashChecksum CHECKSUM = SHA256.createChecksum(0);
+ private static final HashAlgorithm ALGORITHM = sha256.createAlgorithm();
+ private static final HashChecksum CHECKSUM = sha256.createChecksum(0);
@Test
public void testEmptyArray() {
diff --git a/src/test/java/org/apache/maven/buildcache/checksum/XXHashTest.java b/src/test/java/org/apache/maven/buildcache/checksum/XXHashTest.java
index 6a1f9c89..dd346373 100644
--- a/src/test/java/org/apache/maven/buildcache/checksum/XXHashTest.java
+++ b/src/test/java/org/apache/maven/buildcache/checksum/XXHashTest.java
@@ -43,8 +43,8 @@
import org.apache.maven.buildcache.hash.HashChecksum;
import org.junit.jupiter.api.Test;
-import static org.apache.maven.buildcache.hash.HashFactory.XX;
-import static org.apache.maven.buildcache.hash.HashFactory.XXMM;
+import static org.apache.maven.buildcache.hash.HashFactory.xx;
+import static org.apache.maven.buildcache.hash.HashFactory.xxmm;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class XXHashTest {
@@ -60,7 +60,7 @@ public class XXHashTest {
private static final String WORLD_CHECKSUM = "cb21505d7a714523";
private static final String FULL_CHECKSUM = "b8ca8fa824d335e9";
- private static final HashAlgorithm ALGORITHM = XX.createAlgorithm();
+ private static final HashAlgorithm ALGORITHM = xx.createAlgorithm();
@Test
public void testEmptyArray() {
@@ -92,32 +92,32 @@ public void testSimpleChecksum() {
@Test
public void testEmptyBuffer() {
- assertEmptyBuffer(XX.createChecksum(0));
- assertEmptyBuffer(XXMM.createChecksum(0));
+ assertEmptyBuffer(xx.createChecksum(0));
+ assertEmptyBuffer(xxmm.createChecksum(0));
}
@Test
public void testSingleHash() {
- assertSingleHash(XX.createChecksum(1));
- assertSingleHash(XXMM.createChecksum(1));
+ assertSingleHash(xx.createChecksum(1));
+ assertSingleHash(xxmm.createChecksum(1));
}
@Test
public void testSingleChecksum() {
- assertSingleChecksum(XX.createChecksum(1));
- assertSingleChecksum(XXMM.createChecksum(1));
+ assertSingleChecksum(xx.createChecksum(1));
+ assertSingleChecksum(xxmm.createChecksum(1));
}
@Test
public void testNotFullChecksum() {
- assertSingleChecksum(XX.createChecksum(2));
- assertSingleChecksum(XXMM.createChecksum(2));
+ assertSingleChecksum(xx.createChecksum(2));
+ assertSingleChecksum(xxmm.createChecksum(2));
}
@Test
public void testFullChecksum() {
- assertFullChecksum(XX.createChecksum(2));
- assertFullChecksum(XXMM.createChecksum(2));
+ assertFullChecksum(xx.createChecksum(2));
+ assertFullChecksum(xxmm.createChecksum(2));
}
private void assertEmptyBuffer(HashChecksum checksum) {
diff --git a/src/test/java/org/apache/maven/buildcache/hash/PerfTest.java b/src/test/java/org/apache/maven/buildcache/hash/PerfTest.java
index 3c10f661..65bc1746 100644
--- a/src/test/java/org/apache/maven/buildcache/hash/PerfTest.java
+++ b/src/test/java/org/apache/maven/buildcache/hash/PerfTest.java
@@ -73,33 +73,33 @@ String doTest(HashFactory hashFactory, HashState state) throws IOException {
}
@Benchmark
- public String SHA1(HashState state) throws IOException {
- return doTest(HashFactory.SHA1, state);
+ public String sha1(HashState state) throws IOException {
+ return doTest(HashFactory.sha1, state);
}
@Benchmark
- public String SHA256(HashState state) throws IOException {
- return doTest(HashFactory.SHA256, state);
+ public String sha256(HashState state) throws IOException {
+ return doTest(HashFactory.sha256, state);
}
@Benchmark
- public String XX(HashState state) throws IOException {
- return doTest(HashFactory.XX, state);
+ public String xx(HashState state) throws IOException {
+ return doTest(HashFactory.xx, state);
}
@Benchmark
- public String XXMM(HashState state) throws IOException {
- return doTest(HashFactory.XXMM, state);
+ public String xxmm(HashState state) throws IOException {
+ return doTest(HashFactory.xxmm, state);
}
@Benchmark
- public String METRO(HashState state) throws IOException {
- return doTest(HashFactory.METRO, state);
+ public String metro(HashState state) throws IOException {
+ return doTest(HashFactory.metro, state);
}
@Benchmark
- public String METRO_MM(HashState state) throws IOException {
- return doTest(HashFactory.METRO_MM, state);
+ public String metroMm(HashState state) throws IOException {
+ return doTest(HashFactory.metroMm, state);
}
/*
diff --git a/src/test/java/org/apache/maven/buildcache/its/CoreExtensionTest.java b/src/test/java/org/apache/maven/buildcache/its/CoreExtensionTest.java
index 32142666..4d14222e 100644
--- a/src/test/java/org/apache/maven/buildcache/its/CoreExtensionTest.java
+++ b/src/test/java/org/apache/maven/buildcache/its/CoreExtensionTest.java
@@ -43,7 +43,7 @@ void simple(Verifier verifier) throws VerificationException {
}
@Test
- void simple_build_change_version_reuse_build_cache(Verifier verifier) throws VerificationException {
+ void simpleBuildChangeVersionReuseBuildCache(Verifier verifier) throws VerificationException {
verifier.setAutoclean(false);
verifier.setLogFileName("../log-1.txt");
diff --git a/src/test/java/org/apache/maven/buildcache/its/IncrementalRestoreTest.java b/src/test/java/org/apache/maven/buildcache/its/IncrementalRestoreTest.java
index 5656fc04..47f7972c 100644
--- a/src/test/java/org/apache/maven/buildcache/its/IncrementalRestoreTest.java
+++ b/src/test/java/org/apache/maven/buildcache/its/IncrementalRestoreTest.java
@@ -96,11 +96,24 @@ public class IncrementalRestoreTest {
public static final String SKIPPING_PLUGIN_EXECUTION_CACHED_FAILSAFE_VERIFY =
"Skipping plugin execution (cached): failsafe:verify";
+ private Path jarCacheFile;
+ private Path jarSourcesCacheFile;
+ private Path jarJavadocCacheFile;
+
@Test
void simple(Verifier verifier) throws VerificationException, IOException {
verifier.setAutoclean(false);
verifier.setMavenDebug(true);
+ initialBuild(verifier);
+ verifyPackageWithCache(verifier);
+ verifyWithCache(verifier);
+ installWithCache(verifier);
+ deployWithCache(verifier);
+ replayInstallWithCache(verifier);
+ }
+
+ private void initialBuild(Verifier verifier) throws VerificationException, IOException {
// First build, nothing in cache
verifier.setLogFileName("../log-package.txt");
verifier.executeGoal("package");
@@ -116,28 +129,22 @@ void simple(Verifier verifier) throws VerificationException, IOException {
verifier.verifyFilePresent(GENERATED_JAR);
// First build : all resources are present in the target folder
- verifier.verifyFilePresent(EXTRA_OUTPUT_1);
- verifier.verifyFilePresent(EXTRA_OUTPUT_2);
- verifier.verifyFilePresent(EXTRA_OUTPUT_3);
- verifier.verifyFilePresent(EXTRA_OUTPUT_4);
- verifier.verifyFilePresent(EXTRA_OUTPUT_5);
- verifier.verifyFilePresent(EXTRA_OUTPUT_6);
+ verifyAllExtraOutputsPresent(verifier);
Path buildInfoPath = getSavedBuildInfoPath(verifier);
- Path jarCacheFile = buildInfoPath.getParent().resolve(MBUILDCACHE_INCREMENTAL_JAR);
- Path jarSourcesCacheFile = buildInfoPath.getParent().resolve(MBUILDCACHE_INCREMENTAL_SOURCES_JAR);
- Path jarJavadocCacheFile = buildInfoPath.getParent().resolve(MBUILDCACHE_INCREMENTAL_JAVADOC_JAR);
+ jarCacheFile = buildInfoPath.getParent().resolve(MBUILDCACHE_INCREMENTAL_JAR);
+ jarSourcesCacheFile = buildInfoPath.getParent().resolve(MBUILDCACHE_INCREMENTAL_SOURCES_JAR);
+ jarJavadocCacheFile = buildInfoPath.getParent().resolve(MBUILDCACHE_INCREMENTAL_JAVADOC_JAR);
Assertions.assertTrue(Files.exists(jarCacheFile), "Expected artifact saved in build cache.");
Assertions.assertFalse(
Files.exists(jarSourcesCacheFile), "Not expected sources artifact saved in build cache.");
Assertions.assertFalse(
Files.exists(jarJavadocCacheFile), "Not expected javadoc artifact saved in build cache.");
+ }
+ private void verifyPackageWithCache(Verifier verifier) throws VerificationException {
// Verify clean build, with the same goal should be fully restored
- verifier.setMavenDebug(false);
- verifier.setLogFileName("../log-clean.txt");
- verifier.executeGoal("clean");
- verifier.verifyFileNotPresent(GENERATED_JAR);
+ cleanBuild(verifier);
verifier.setLogFileName("../log-package-2.txt");
verifier.executeGoal("package");
@@ -146,28 +153,15 @@ void simple(Verifier verifier) throws VerificationException, IOException {
verifier.verifyTextInLog(
"Found cached build, restoring org.apache.maven.caching.test:mbuildcache-incremental from cache by checksum");
verifier.verifyErrorFreeLog();
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_RESOURCES);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_COMPILER_COMPILE);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_TEST_RESOURCES);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_COMPILER_TEST_COMPILE);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_SUREFIRE_TEST);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_JAR_JAR);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_COPY);
+ verifySkippedPluginExecutions(verifier);
verifier.verifyFilePresent(GENERATED_JAR);
- // 2nd build with cache : only cached extra resources are present in the target folder
- verifier.verifyFilePresent(EXTRA_OUTPUT_1);
- verifier.verifyFilePresent(EXTRA_OUTPUT_2);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_3);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_4);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_5);
- verifier.verifyFilePresent(EXTRA_OUTPUT_6);
+ verifyCachedExtraOutputs(verifier);
Assertions.assertTrue(Files.exists(jarCacheFile), "Expected artifact saved in build cache.");
+ }
+ private void verifyWithCache(Verifier verifier) throws VerificationException {
// Next step : verify
- verifier.setMavenDebug(false);
- verifier.setLogFileName("../log-clean.txt");
- verifier.executeGoal("clean");
- verifier.verifyFileNotPresent(GENERATED_JAR);
+ cleanBuild(verifier);
verifier.setLogFileName("../log-verify.txt");
verifier.executeGoal("verify");
@@ -176,98 +170,52 @@ void simple(Verifier verifier) throws VerificationException, IOException {
verifier.verifyTextInLog(
"Project org.apache.maven.caching.test:mbuildcache-incremental restored partially. Highest cached goal: package, requested: verify");
verifier.verifyErrorFreeLog();
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_RESOURCES);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_COMPILER_COMPILE);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_TEST_RESOURCES);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_COMPILER_TEST_COMPILE);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_SUREFIRE_TEST);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_JAR_JAR);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_COPY);
+ verifySkippedPluginExecutions(verifier);
verifier.verifyTextInLog(INTEGRATION_TEST_DEFAULT_MBUILDCACHE_INCREMENTAL);
verifier.verifyTextInLog(VERIFY_DEFAULT_MBUILDCACHE_INCREMENTAL);
verifier.verifyTextInLog(SAVED_BUILD_TO_LOCAL_FILE);
verifier.verifyFilePresent(GENERATED_JAR);
- // only cached extra resources are present in the target folder
- verifier.verifyFilePresent(EXTRA_OUTPUT_1);
- verifier.verifyFilePresent(EXTRA_OUTPUT_2);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_3);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_4);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_5);
- verifier.verifyFilePresent(EXTRA_OUTPUT_6);
+ verifyCachedExtraOutputs(verifier);
Assertions.assertTrue(Files.exists(jarCacheFile), "Expected artifact saved in build cache.");
+ }
+ private void installWithCache(Verifier verifier) throws VerificationException {
// Install with clean build, with a higher goal should restore cached mojo executions and apply increments
- verifier.setMavenDebug(false);
- verifier.setLogFileName("../log-clean.txt");
- verifier.executeGoal("clean");
- verifier.verifyFileNotPresent(GENERATED_JAR);
+ cleanBuild(verifier);
verifier.setLogFileName("../log-install.txt");
verifier.executeGoal("install");
verifier.verifyErrorFreeLog();
verifier.verifyTextInLog(
"Project org.apache.maven.caching.test:mbuildcache-incremental restored partially. Highest cached goal: verify, requested: install");
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_RESOURCES);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_COMPILER_COMPILE);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_TEST_RESOURCES);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_COMPILER_TEST_COMPILE);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_SUREFIRE_TEST);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_JAR_JAR);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_COPY);
+ verifySkippedPluginExecutions(verifier);
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_FAILSAFE_INTEGRATION_TEST);
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_FAILSAFE_VERIFY);
- verifyNoTextInLog(verifier, RESOURCES_DEFAULT_RESOURCES_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, COMPILE_DEFAULT_COMPILE_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, TEST_RESOURCES_DEFAULT_TEST_RESOURCES_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, TEST_COMPILE_DEFAULT_TEST_COMPILE_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, TEST_DEFAULT_TEST_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, JAR_DEFAULT_JAR_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, INTEGRATION_TEST_DEFAULT_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, VERIFY_DEFAULT_MBUILDCACHE_INCREMENTAL);
+ verifyNoCachedPluginExecutions(verifier);
verifier.verifyTextInLog(INSTALL_DEFAULT_INSTALL_MBUILDCACHE_INCREMENTAL);
final String installToLocalRepoString =
"Installing " + verifier.getBasedir() + File.separatorChar + EXTRA_OUTPUT_1 + " to ";
verifier.verifyTextInLog(installToLocalRepoString);
verifier.verifyTextInLog(SAVED_BUILD_TO_LOCAL_FILE);
verifier.verifyFilePresent(GENERATED_JAR);
- // only cached extra resources are present in the target folder
- verifier.verifyFilePresent(EXTRA_OUTPUT_1);
- verifier.verifyFilePresent(EXTRA_OUTPUT_2);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_3);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_4);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_5);
- verifier.verifyFilePresent(EXTRA_OUTPUT_6);
+ verifyCachedExtraOutputs(verifier);
Assertions.assertTrue(Files.exists(jarCacheFile), "Expected artifact saved in build cache.");
+ }
+ private void deployWithCache(Verifier verifier) throws VerificationException {
// Deploy with clean build, with a higher goal should restore cached mojo executions and apply increments
- verifier.setMavenDebug(false);
- verifier.setLogFileName("../log-clean.txt");
- verifier.executeGoal("clean");
- verifier.verifyFileNotPresent(GENERATED_JAR);
+ cleanBuild(verifier);
verifier.setLogFileName("../log-deploy.txt");
verifier.executeGoal("deploy");
verifier.verifyErrorFreeLog();
verifier.verifyTextInLog(
"Project org.apache.maven.caching.test:mbuildcache-incremental restored partially. Highest cached goal: install, requested: deploy");
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_RESOURCES);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_COMPILER_COMPILE);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_TEST_RESOURCES);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_COMPILER_TEST_COMPILE);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_SUREFIRE_TEST);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_JAR_JAR);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_COPY);
+ verifySkippedPluginExecutions(verifier);
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_FAILSAFE_INTEGRATION_TEST);
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_FAILSAFE_VERIFY);
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_INSTALL_INSTALL);
- verifyNoTextInLog(verifier, RESOURCES_DEFAULT_RESOURCES_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, COMPILE_DEFAULT_COMPILE_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, TEST_RESOURCES_DEFAULT_TEST_RESOURCES_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, TEST_COMPILE_DEFAULT_TEST_COMPILE_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, TEST_DEFAULT_TEST_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, JAR_DEFAULT_JAR_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, INTEGRATION_TEST_DEFAULT_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, VERIFY_DEFAULT_MBUILDCACHE_INCREMENTAL);
+ verifyNoCachedPluginExecutions(verifier);
verifyNoTextInLog(verifier, INSTALL_DEFAULT_INSTALL_MBUILDCACHE_INCREMENTAL);
verifier.verifyTextInLog(DEPLOY_DEFAULT_DEPLOY_MBUILDCACHE_INCREMENTAL);
verifier.verifyTextInLog("Using alternate deployment repository local::file:./target/staging");
@@ -275,23 +223,61 @@ void simple(Verifier verifier) throws VerificationException, IOException {
verifier.verifyFilePresent(GENERATED_JAR);
verifier.verifyFilePresent(GENERATED_SOURCES_JAR);
verifier.verifyFilePresent(GENERATED_JAVADOC_JAR);
- // only cached extra resources are present in the target folder
- verifier.verifyFilePresent(EXTRA_OUTPUT_1);
- verifier.verifyFilePresent(EXTRA_OUTPUT_2);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_3);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_4);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_5);
- verifier.verifyFilePresent(EXTRA_OUTPUT_6);
+ verifyCachedExtraOutputs(verifier);
Assertions.assertTrue(Files.exists(jarCacheFile), "Expected artifact saved in build cache.");
Assertions.assertTrue(Files.exists(jarSourcesCacheFile), "Expected sources artifact saved in build cache.");
Assertions.assertTrue(Files.exists(jarJavadocCacheFile), "Expected javadoc artifact saved in build cache.");
+ }
+ private void replayInstallWithCache(Verifier verifier) throws VerificationException {
// Replay install with clean build, with a lower goal should only restore cached mojo executions
verifier.setLogFileName("../log-install-replay.txt");
verifier.executeGoal("install");
verifier.verifyErrorFreeLog();
verifier.verifyTextInLog(
FOUND_CACHED_BUILD_RESTORING_ORG_APACHE_MAVEN_CACHING_TEST_MBUILDCACHE_INCREMENTAL_FROM_CACHE_BY_CHECKSUM);
+ verifySkippedPluginExecutions(verifier);
+ verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_FAILSAFE_INTEGRATION_TEST);
+ verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_FAILSAFE_VERIFY);
+ verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_INSTALL_INSTALL);
+ verifyNoTextInLog(verifier, DEPLOY_DEFAULT_DEPLOY_MBUILDCACHE_INCREMENTAL);
+ verifyNoCachedPluginExecutions(verifier);
+ verifyNoTextInLog(verifier, SAVED_BUILD_TO_LOCAL_FILE, "Expected successful build cache restore.");
+ verifier.verifyFilePresent(GENERATED_JAR);
+ verifier.verifyFilePresent(GENERATED_SOURCES_JAR);
+ verifier.verifyFilePresent(GENERATED_JAVADOC_JAR);
+ verifyCachedExtraOutputs(verifier);
+ Assertions.assertTrue(Files.exists(jarCacheFile), "Expected artifact saved in build cache.");
+ Assertions.assertTrue(Files.exists(jarSourcesCacheFile), "Expected sources artifact saved in build cache.");
+ Assertions.assertTrue(Files.exists(jarJavadocCacheFile), "Expected javadoc artifact saved in build cache.");
+ }
+
+ private void cleanBuild(Verifier verifier) throws VerificationException {
+ verifier.setMavenDebug(false);
+ verifier.setLogFileName("../log-clean.txt");
+ verifier.executeGoal("clean");
+ verifier.verifyFileNotPresent(GENERATED_JAR);
+ }
+
+ private void verifyAllExtraOutputsPresent(Verifier verifier) throws VerificationException {
+ verifier.verifyFilePresent(EXTRA_OUTPUT_1);
+ verifier.verifyFilePresent(EXTRA_OUTPUT_2);
+ verifier.verifyFilePresent(EXTRA_OUTPUT_3);
+ verifier.verifyFilePresent(EXTRA_OUTPUT_4);
+ verifier.verifyFilePresent(EXTRA_OUTPUT_5);
+ verifier.verifyFilePresent(EXTRA_OUTPUT_6);
+ }
+
+ private void verifyCachedExtraOutputs(Verifier verifier) throws VerificationException {
+ verifier.verifyFilePresent(EXTRA_OUTPUT_1);
+ verifier.verifyFilePresent(EXTRA_OUTPUT_2);
+ verifier.verifyFileNotPresent(EXTRA_OUTPUT_3);
+ verifier.verifyFileNotPresent(EXTRA_OUTPUT_4);
+ verifier.verifyFileNotPresent(EXTRA_OUTPUT_5);
+ verifier.verifyFilePresent(EXTRA_OUTPUT_6);
+ }
+
+ private void verifySkippedPluginExecutions(Verifier verifier) throws VerificationException {
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_RESOURCES);
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_COMPILER_COMPILE);
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_TEST_RESOURCES);
@@ -299,10 +285,9 @@ void simple(Verifier verifier) throws VerificationException, IOException {
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_SUREFIRE_TEST);
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_JAR_JAR);
verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_RESOURCES_COPY);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_FAILSAFE_INTEGRATION_TEST);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_FAILSAFE_VERIFY);
- verifier.verifyTextInLog(SKIPPING_PLUGIN_EXECUTION_CACHED_INSTALL_INSTALL);
- verifyNoTextInLog(verifier, DEPLOY_DEFAULT_DEPLOY_MBUILDCACHE_INCREMENTAL);
+ }
+
+ private void verifyNoCachedPluginExecutions(Verifier verifier) throws VerificationException {
verifyNoTextInLog(verifier, RESOURCES_DEFAULT_RESOURCES_MBUILDCACHE_INCREMENTAL);
verifyNoTextInLog(verifier, COMPILE_DEFAULT_COMPILE_MBUILDCACHE_INCREMENTAL);
verifyNoTextInLog(verifier, TEST_RESOURCES_DEFAULT_TEST_RESOURCES_MBUILDCACHE_INCREMENTAL);
@@ -311,22 +296,6 @@ void simple(Verifier verifier) throws VerificationException, IOException {
verifyNoTextInLog(verifier, JAR_DEFAULT_JAR_MBUILDCACHE_INCREMENTAL);
verifyNoTextInLog(verifier, INTEGRATION_TEST_DEFAULT_MBUILDCACHE_INCREMENTAL);
verifyNoTextInLog(verifier, VERIFY_DEFAULT_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, INSTALL_DEFAULT_INSTALL_MBUILDCACHE_INCREMENTAL);
- verifyNoTextInLog(verifier, installToLocalRepoString);
- verifyNoTextInLog(verifier, SAVED_BUILD_TO_LOCAL_FILE, "Expected successful build cache restore.");
- verifier.verifyFilePresent(GENERATED_JAR);
- verifier.verifyFilePresent(GENERATED_SOURCES_JAR);
- verifier.verifyFilePresent(GENERATED_JAVADOC_JAR);
- // only cached extra resources are present in the target folder
- verifier.verifyFilePresent(EXTRA_OUTPUT_1);
- verifier.verifyFilePresent(EXTRA_OUTPUT_2);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_3);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_4);
- verifier.verifyFileNotPresent(EXTRA_OUTPUT_5);
- verifier.verifyFilePresent(EXTRA_OUTPUT_6);
- Assertions.assertTrue(Files.exists(jarCacheFile), "Expected artifact saved in build cache.");
- Assertions.assertTrue(Files.exists(jarSourcesCacheFile), "Expected sources artifact saved in build cache.");
- Assertions.assertTrue(Files.exists(jarJavadocCacheFile), "Expected javadoc artifact saved in build cache.");
}
private static void verifyNoTextInLog(Verifier verifier, String text, String message) throws VerificationException {
diff --git a/src/test/java/org/apache/maven/buildcache/its/Issue74Test.java b/src/test/java/org/apache/maven/buildcache/its/Issue74Test.java
index d2a45d6c..8a4eb788 100644
--- a/src/test/java/org/apache/maven/buildcache/its/Issue74Test.java
+++ b/src/test/java/org/apache/maven/buildcache/its/Issue74Test.java
@@ -41,7 +41,7 @@
@IntegrationTest("src/test/projects/mbuildcache-74-clean-cache-any-artifact")
public class Issue74Test {
- private static final Logger logger = LoggerFactory.getLogger(Issue74Test.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(Issue74Test.class);
@Test
void simple(Verifier verifier) throws VerificationException, IOException {
@@ -79,7 +79,7 @@ private static void verifyBuildCacheEntries(final Verifier verifier, long expect
// buildinfo.xml -> local -> hash -> project
Path projectPathInCache = buildInfoXmlPath.getParent().getParent().getParent();
- logger.info("Checking '{}' for cached builds ...", projectPathInCache);
+ LOGGER.info("Checking '{}' for cached builds ...", projectPathInCache);
if (!Files.exists(projectPathInCache)) {
throw new VerificationException(
diff --git a/src/test/java/org/apache/maven/buildcache/its/Issue76Test.java b/src/test/java/org/apache/maven/buildcache/its/Issue76Test.java
index b6b6b302..1049ddad 100644
--- a/src/test/java/org/apache/maven/buildcache/its/Issue76Test.java
+++ b/src/test/java/org/apache/maven/buildcache/its/Issue76Test.java
@@ -29,7 +29,7 @@ public class Issue76Test {
private static final String PROJECT_NAME = "org.apache.maven.caching.test:mbuildcache-76";
@Test
- void simple_build_change_version_build_install_again(Verifier verifier) throws VerificationException {
+ void simpleBuildChangeVersionBuildInstallAgain(Verifier verifier) throws VerificationException {
verifier.setAutoclean(false);
verifier.setLogFileName("../log-1.txt");
diff --git a/src/test/java/org/apache/maven/buildcache/its/PathEntry.java b/src/test/java/org/apache/maven/buildcache/its/PathEntry.java
new file mode 100644
index 00000000..3ecb506c
--- /dev/null
+++ b/src/test/java/org/apache/maven/buildcache/its/PathEntry.java
@@ -0,0 +1,206 @@
+/*
+ * 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.
+ */
+package org.apache.maven.buildcache.its;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.LinkOption;
+import java.nio.file.Path;
+import java.nio.file.attribute.FileTime;
+import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.attribute.PosixFilePermissions;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.EnumSet;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.TreeMap;
+
+public class PathEntry implements Comparable {
+
+ private final Path abs;
+ private final Path path;
+ private final Map attributes;
+
+ public PathEntry(Path abs, Path root) {
+ this.abs = abs;
+ this.path = abs.startsWith(root) ? root.relativize(abs) : abs;
+ this.attributes = readAttributes(abs);
+ }
+
+ @Override
+ public int compareTo(PathEntry o) {
+ return path.toString().compareTo(o.path.toString());
+ }
+
+ boolean isNotDirectory() {
+ return is("isRegularFile") || is("isSymbolicLink") || is("isOther");
+ }
+
+ boolean isDirectory() {
+ return is("isDirectory");
+ }
+
+ private boolean is(String attr) {
+ Object d = attributes.get(attr);
+ return d instanceof Boolean && (Boolean) d;
+ }
+
+ String display() {
+ String suffix;
+ String link = "";
+ if (is("isSymbolicLink")) {
+ suffix = "@";
+ try {
+ Path l = Files.readSymbolicLink(abs);
+ link = " -> " + l.toString();
+ } catch (IOException e) {
+ // ignore
+ }
+ } else if (is("isDirectory")) {
+ suffix = "/";
+ } else if (is("isExecutable")) {
+ suffix = "*";
+ } else if (is("isOther")) {
+ suffix = "";
+ } else {
+ suffix = "";
+ }
+ return path.toString() + suffix + link;
+ }
+
+ String longDisplay() {
+ String username = getUsername();
+ String group = getGroup();
+ Number length = (Number) attributes.get("size");
+ if (length == null) {
+ length = 0L;
+ }
+ String lengthString = formatLength(length);
+ @SuppressWarnings("unchecked")
+ Set perms = (Set) attributes.get("permissions");
+ if (perms == null) {
+ perms = EnumSet.noneOf(PosixFilePermission.class);
+ }
+ return (is("isDirectory") ? "d" : (is("isSymbolicLink") ? "l" : (is("isOther") ? "o" : "-")))
+ + PosixFilePermissions.toString(perms) + " "
+ + String.format(
+ "%3s",
+ (attributes.containsKey("nlink")
+ ? attributes.get("nlink").toString()
+ : "1"))
+ + " " + username + " " + group + " " + lengthString + " "
+ + toString((FileTime) attributes.get("lastModifiedTime"))
+ + " " + display();
+ }
+
+ private String getUsername() {
+ String username = attributes.containsKey("owner") ? Objects.toString(attributes.get("owner"), null) : "owner";
+ if (username.length() > 8) {
+ username = username.substring(0, 8);
+ } else {
+ username = String.format("%-8s", username);
+ }
+ return username;
+ }
+
+ private String getGroup() {
+ String group = attributes.containsKey("group") ? Objects.toString(attributes.get("group"), null) : "group";
+ if (group.length() > 8) {
+ group = group.substring(0, 8);
+ } else {
+ group = String.format("%-8s", group);
+ }
+ return group;
+ }
+
+ private String formatLength(Number length) {
+ double l = length.longValue();
+ String unit = "B";
+ if (l >= 1000) {
+ l /= 1024;
+ unit = "K";
+ if (l >= 1000) {
+ l /= 1024;
+ unit = "M";
+ if (l >= 1000) {
+ l /= 1024;
+ unit = "T";
+ }
+ }
+ }
+ if (l < 10 && length.longValue() > 1000) {
+ return String.format("%.1f%s", l, unit);
+ } else {
+ return String.format("%3.0f%s", l, unit);
+ }
+ }
+
+ protected String toString(FileTime time) {
+ long millis = (time != null) ? time.toMillis() : -1L;
+ if (millis < 0L) {
+ return "------------";
+ }
+ ZonedDateTime dt = Instant.ofEpochMilli(millis).atZone(ZoneId.systemDefault());
+ if (System.currentTimeMillis() - millis < 183L * 24L * 60L * 60L * 1000L) {
+ return DateTimeFormatter.ofPattern("MMM ppd HH:mm").format(dt);
+ } else {
+ return DateTimeFormatter.ofPattern("MMM ppd yyyy").format(dt);
+ }
+ }
+
+ protected Map readAttributes(Path path) {
+ Map attrs = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+ for (String view : path.getFileSystem().supportedFileAttributeViews()) {
+ try {
+ Map ta = Files.readAttributes(path, view + ":*", LinkOption.NOFOLLOW_LINKS);
+ ta.forEach(attrs::putIfAbsent);
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ attrs.computeIfAbsent("isExecutable", s -> Files.isExecutable(path));
+ attrs.computeIfAbsent("permissions", s -> getPermissionsFromFile(path.toFile()));
+ return attrs;
+ }
+
+ static Set getPermissionsFromFile(File f) {
+ Set perms = EnumSet.noneOf(PosixFilePermission.class);
+ if (f.canRead()) {
+ perms.add(PosixFilePermission.OWNER_READ);
+ perms.add(PosixFilePermission.GROUP_READ);
+ perms.add(PosixFilePermission.OTHERS_READ);
+ }
+ if (f.canWrite()) {
+ perms.add(PosixFilePermission.OWNER_WRITE);
+ perms.add(PosixFilePermission.GROUP_WRITE);
+ perms.add(PosixFilePermission.OTHERS_WRITE);
+ }
+ if (f.canExecute()) {
+ perms.add(PosixFilePermission.OWNER_EXECUTE);
+ perms.add(PosixFilePermission.GROUP_EXECUTE);
+ perms.add(PosixFilePermission.OTHERS_EXECUTE);
+ }
+ return perms;
+ }
+}
diff --git a/src/test/java/org/apache/maven/buildcache/its/RemoteCacheDavTest.java b/src/test/java/org/apache/maven/buildcache/its/RemoteCacheDavTest.java
index dcdac3aa..534af224 100644
--- a/src/test/java/org/apache/maven/buildcache/its/RemoteCacheDavTest.java
+++ b/src/test/java/org/apache/maven/buildcache/its/RemoteCacheDavTest.java
@@ -18,26 +18,12 @@
*/
package org.apache.maven.buildcache.its;
-import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
-import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.nio.file.attribute.FileTime;
-import java.nio.file.attribute.PosixFilePermission;
-import java.nio.file.attribute.PosixFilePermissions;
-import java.time.Instant;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
import java.util.Arrays;
-import java.util.EnumSet;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.TreeMap;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.regex.Pattern;
@@ -285,191 +271,10 @@ private String error(Path directory, String cache, boolean shouldHave) {
}
private static void ls(Path currentDir, Consumer out) throws IOException {
- class PathEntry implements Comparable {
-
- final Path abs;
- final Path path;
- final Map attributes;
-
- public PathEntry(Path abs, Path root) {
- this.abs = abs;
- this.path = abs.startsWith(root) ? root.relativize(abs) : abs;
- this.attributes = readAttributes(abs);
- }
-
- @Override
- public int compareTo(PathEntry o) {
- return path.toString().compareTo(o.path.toString());
- }
-
- boolean isNotDirectory() {
- return is("isRegularFile") || is("isSymbolicLink") || is("isOther");
- }
-
- boolean isDirectory() {
- return is("isDirectory");
- }
-
- private boolean is(String attr) {
- Object d = attributes.get(attr);
- return d instanceof Boolean && (Boolean) d;
- }
-
- String display() {
- String suffix;
- String link = "";
- if (is("isSymbolicLink")) {
- suffix = "@";
- try {
- Path l = Files.readSymbolicLink(abs);
- link = " -> " + l.toString();
- } catch (IOException e) {
- // ignore
- }
- } else if (is("isDirectory")) {
- suffix = "/";
- } else if (is("isExecutable")) {
- suffix = "*";
- } else if (is("isOther")) {
- suffix = "";
- } else {
- suffix = "";
- }
- return path.toString() + suffix + link;
- }
-
- String longDisplay() {
- String username;
- if (attributes.containsKey("owner")) {
- username = Objects.toString(attributes.get("owner"), null);
- } else {
- username = "owner";
- }
- if (username.length() > 8) {
- username = username.substring(0, 8);
- } else {
- for (int i = username.length(); i < 8; i++) {
- username = username + " ";
- }
- }
- String group;
- if (attributes.containsKey("group")) {
- group = Objects.toString(attributes.get("group"), null);
- } else {
- group = "group";
- }
- if (group.length() > 8) {
- group = group.substring(0, 8);
- } else {
- for (int i = group.length(); i < 8; i++) {
- group = group + " ";
- }
- }
- Number length = (Number) attributes.get("size");
- if (length == null) {
- length = 0L;
- }
- String lengthString;
- if (true /*opt.isSet("h")*/) {
- double l = length.longValue();
- String unit = "B";
- if (l >= 1000) {
- l /= 1024;
- unit = "K";
- if (l >= 1000) {
- l /= 1024;
- unit = "M";
- if (l >= 1000) {
- l /= 1024;
- unit = "T";
- }
- }
- }
- if (l < 10 && length.longValue() > 1000) {
- lengthString = String.format("%.1f", l) + unit;
- } else {
- lengthString = String.format("%3.0f", l) + unit;
- }
- } else {
- lengthString = String.format("%1$8s", length);
- }
- @SuppressWarnings("unchecked")
- Set perms = (Set) attributes.get("permissions");
- if (perms == null) {
- perms = EnumSet.noneOf(PosixFilePermission.class);
- }
- // TODO: all fields should be padded to align
- return (is("isDirectory") ? "d" : (is("isSymbolicLink") ? "l" : (is("isOther") ? "o" : "-")))
- + PosixFilePermissions.toString(perms) + " "
- + String.format(
- "%3s",
- (attributes.containsKey("nlink")
- ? attributes.get("nlink").toString()
- : "1"))
- + " " + username + " " + group + " " + lengthString + " "
- + toString((FileTime) attributes.get("lastModifiedTime"))
- + " " + display();
- }
-
- protected String toString(FileTime time) {
- long millis = (time != null) ? time.toMillis() : -1L;
- if (millis < 0L) {
- return "------------";
- }
- ZonedDateTime dt = Instant.ofEpochMilli(millis).atZone(ZoneId.systemDefault());
- // Less than six months
- if (System.currentTimeMillis() - millis < 183L * 24L * 60L * 60L * 1000L) {
- return DateTimeFormatter.ofPattern("MMM ppd HH:mm").format(dt);
- }
- // Older than six months
- else {
- return DateTimeFormatter.ofPattern("MMM ppd yyyy").format(dt);
- }
- }
-
- protected Map readAttributes(Path path) {
- Map attrs = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
- for (String view : path.getFileSystem().supportedFileAttributeViews()) {
- try {
- Map ta = Files.readAttributes(path, view + ":*", LinkOption.NOFOLLOW_LINKS);
- ta.forEach(attrs::putIfAbsent);
- } catch (IOException e) {
- // Ignore
- }
- }
- attrs.computeIfAbsent("isExecutable", s -> Files.isExecutable(path));
- attrs.computeIfAbsent("permissions", s -> getPermissionsFromFile(path.toFile()));
- return attrs;
- }
- }
-
Files.walk(currentDir)
.map(p -> new PathEntry(p, currentDir))
.sorted()
.map(PathEntry::longDisplay)
.forEach(out);
}
-
- private static Set getPermissionsFromFile(File f) {
- Set perms = EnumSet.noneOf(PosixFilePermission.class);
- if (f.canRead()) {
- perms.add(PosixFilePermission.OWNER_READ);
- perms.add(PosixFilePermission.GROUP_READ);
- perms.add(PosixFilePermission.OTHERS_READ);
- }
-
- if (f.canWrite()) {
- perms.add(PosixFilePermission.OWNER_WRITE);
- perms.add(PosixFilePermission.GROUP_WRITE);
- perms.add(PosixFilePermission.OTHERS_WRITE);
- }
-
- if (f.canExecute() /*|| (OSUtils.IS_WINDOWS && isWindowsExecutable(f.getName()))*/) {
- perms.add(PosixFilePermission.OWNER_EXECUTE);
- perms.add(PosixFilePermission.GROUP_EXECUTE);
- perms.add(PosixFilePermission.OTHERS_EXECUTE);
- }
-
- return perms;
- }
}
diff --git a/src/test/java/org/apache/maven/buildcache/xml/CacheConfigImplTest.java b/src/test/java/org/apache/maven/buildcache/xml/CacheConfigImplTest.java
index 2e06907c..db090b4c 100644
--- a/src/test/java/org/apache/maven/buildcache/xml/CacheConfigImplTest.java
+++ b/src/test/java/org/apache/maven/buildcache/xml/CacheConfigImplTest.java
@@ -185,7 +185,7 @@ private void assertDefaults(Map overrides) {
asserts.put(
"getGlobalIncludePaths",
() -> assertEquals(Collections.emptyList(), testObject.getGlobalIncludePaths()));
- asserts.put("getHashFactory", () -> assertEquals(HashFactory.XX, testObject.getHashFactory()));
+ asserts.put("getHashFactory", () -> assertEquals(HashFactory.xx, testObject.getHashFactory()));
asserts.put("getId", () -> assertEquals("cache", testObject.getId()));
asserts.put("getLocalRepositoryLocation", () -> assertNull(testObject.getLocalRepositoryLocation()));
asserts.put(
diff --git a/src/test/java/org/apache/maven/buildcache/xml/XmlServiceTest.java b/src/test/java/org/apache/maven/buildcache/xml/XmlServiceTest.java
index e9a91723..c434a9b4 100644
--- a/src/test/java/org/apache/maven/buildcache/xml/XmlServiceTest.java
+++ b/src/test/java/org/apache/maven/buildcache/xml/XmlServiceTest.java
@@ -19,20 +19,12 @@
package org.apache.maven.buildcache.xml;
import javax.xml.XMLConstants;
-import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
-import java.io.InputStream;
-
-import org.apache.maven.buildcache.xml.build.Build;
-import org.apache.maven.buildcache.xml.config.CacheConfig;
-import org.apache.maven.buildcache.xml.diff.Diff;
-import org.apache.maven.buildcache.xml.report.CacheReport;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
-import org.w3c.dom.Document;
public class XmlServiceTest {
@@ -44,12 +36,6 @@ public void testConfig() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
dbf.setSchema(schema);
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document doc = db.parse(
- getClass().getResource("build-cache-config-instance.xml").toString());
-
- InputStream is = getClass().getResourceAsStream("build-cache-config-instance.xml");
- final CacheConfig cache = new XmlService().loadCacheConfig(is);
}
@Test
@@ -60,12 +46,6 @@ public void testReport() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
dbf.setSchema(schema);
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document doc = db.parse(
- getClass().getResource("build-cache-report-instance.xml").toString());
-
- InputStream is = getClass().getResourceAsStream("build-cache-report-instance.xml");
- final CacheReport cacheReport = new XmlService().loadCacheReport(is);
}
@Test
@@ -76,12 +56,6 @@ public void testBuild() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
dbf.setSchema(schema);
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document doc = db.parse(
- getClass().getResource("build-cache-build-instance.xml").toString());
-
- InputStream is = getClass().getResourceAsStream("build-cache-build-instance.xml");
- final Build build = new XmlService().loadBuild(is);
}
@Test
@@ -92,11 +66,5 @@ public void testDiff() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
dbf.setSchema(schema);
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document doc =
- db.parse(getClass().getResource("build-cache-diff-instance.xml").toString());
-
- InputStream is = getClass().getResourceAsStream("build-cache-diff-instance.xml");
- final Diff buildDiff = new XmlService().loadDiff(is);
}
}