From c93bdd696fe5d8fef8773a3d8cd787eebaed76db Mon Sep 17 00:00:00 2001 From: Mark Rogers Date: Tue, 15 Mar 2016 11:57:03 +0000 Subject: [PATCH] Merged WOLF-6 (WOLF.0.0) to 5.1.1 (5.1.1) 122949 mrogers: UTF-378 - Added some code to ignore module.install date within module.properties git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/services/full-installer/branches/5.1.1@124020 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../tool/dircomp/FileTreeCompareImpl.java | 15 ++++- .../tool/dircomp/FileTreeCompareImplTest.java | 55 ++++++++++++++++--- 2 files changed, 62 insertions(+), 8 deletions(-) diff --git a/enterprise-update-test/src/main/java/org/alfresco/update/tool/dircomp/FileTreeCompareImpl.java b/enterprise-update-test/src/main/java/org/alfresco/update/tool/dircomp/FileTreeCompareImpl.java index 24cd8cd493..6af60562e0 100644 --- a/enterprise-update-test/src/main/java/org/alfresco/update/tool/dircomp/FileTreeCompareImpl.java +++ b/enterprise-update-test/src/main/java/org/alfresco/update/tool/dircomp/FileTreeCompareImpl.java @@ -23,6 +23,8 @@ import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * Class capable of comparing two trees of files to determine which directories or @@ -216,6 +218,9 @@ public class FileTreeCompareImpl implements FileTreeCompare // a known token allows us to remove differences (that we're not interested in) in the files. Map replacements = new HashMap<>(); replacements.put(tree.toAbsolutePath().toString(), replacementToken("comparison_root")); + + // Create a pattern for module.installDate + Pattern installDatePattern = Pattern.compile("module.installDate=.*[\n\r\f]*$"); File processed = Files.createTempFile(orig.getName(), ".tmp").toFile(); try(Reader r = new FileReader(orig); @@ -224,13 +229,21 @@ public class FileTreeCompareImpl implements FileTreeCompare PrintWriter pw = new PrintWriter(w)) { String line; + while ((line = br.readLine()) != null) - { + { for (String replKey : replacements.keySet()) { String replVal = replacements.get(replKey); line = line.replace(replKey, replVal); } + Matcher m = installDatePattern.matcher(line); + if(m.matches()) + { + // replace module.installDate + line = m.replaceFirst("module.installDate="); + } + pw.println(line); } } diff --git a/enterprise-update-test/src/test/java/org/alfresco/update/tool/dircomp/FileTreeCompareImplTest.java b/enterprise-update-test/src/test/java/org/alfresco/update/tool/dircomp/FileTreeCompareImplTest.java index 0df6df50aa..093d09a766 100644 --- a/enterprise-update-test/src/test/java/org/alfresco/update/tool/dircomp/FileTreeCompareImplTest.java +++ b/enterprise-update-test/src/test/java/org/alfresco/update/tool/dircomp/FileTreeCompareImplTest.java @@ -16,6 +16,7 @@ import java.io.IOException; import java.net.URISyntaxException; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -199,6 +200,12 @@ public class FileTreeCompareImplTest // Check that two identical trees are... identical! ResultSet resultSet = comparator.compare(tree1, tree2); + + System.out.println("Comparison results:"); + for (Result r : resultSet.results) + { + System.out.println("\t"+r); + } assertEquals(0, resultSet.stats.differenceCount); assertEquals(0, resultSet.stats.ignoredFileCount); assertEquals(4, resultSet.stats.resultCount); @@ -212,17 +219,33 @@ public class FileTreeCompareImplTest File t2File = new File(tree2.toFile(), "different.txt"); t2File.deleteOnExit(); FileUtils.write(t2File, sampleText(tree2.toAbsolutePath().toString())); + + // Now add a module.properties that are different in their "installDate" property only. + File t3File = new File(tree1.toFile(), "module.properties"); + t3File.deleteOnExit(); + Date date = new Date(); + FileUtils.write(t3File, sampleModuleProperties("2016-02-29T16\\:26\\:18.053Z")); + + File t4File = new File(tree2.toFile(), "module.properties"); + t4File.deleteOnExit(); + FileUtils.write(t4File, sampleModuleProperties("2016-02-28T14\\:30\\:14.035Z")); + // Perform the comparison comparator = new FileTreeCompareImpl(new HashSet(), new HashSet()); resultSet = comparator.compare(tree1, tree2); + System.out.println("Comparison results:"); + for (Result r : resultSet.results) + { + System.out.println("\t"+r); + } // We should see a difference assertEquals(0, resultSet.stats.suppressedDifferenceCount); - assertEquals(1, resultSet.stats.differenceCount); + assertEquals(2, resultSet.stats.differenceCount); assertEquals(0, resultSet.stats.ignoredFileCount); - assertEquals(5, resultSet.stats.resultCount); - assertEquals(5, resultSet.results.size()); + assertEquals(6, resultSet.stats.resultCount); + assertEquals(6, resultSet.results.size()); Iterator rit = resultSet.results.iterator(); assertResultEquals(tree1.resolve("different.txt"), tree2.resolve("different.txt"), false, rit.next()); @@ -230,17 +253,18 @@ public class FileTreeCompareImplTest // Perform the comparison again, but after allowing the files to be different. Set allowedDiffsPaths = new HashSet<>(); allowedDiffsPaths.add(toPlatformPath("**/*.txt")); + allowedDiffsPaths.add(toPlatformPath("**/module.properties")); - // Perform the comparison + // Perform the comparison, this time with some allowed differences comparator = new FileTreeCompareImpl(new HashSet(), allowedDiffsPaths); resultSet = comparator.compare(tree1, tree2); // We should see a difference - but it is in the 'suppressed' list. - assertEquals(1, resultSet.stats.suppressedDifferenceCount); + assertEquals(2, resultSet.stats.suppressedDifferenceCount); assertEquals(0, resultSet.stats.differenceCount); assertEquals(0, resultSet.stats.ignoredFileCount); - assertEquals(5, resultSet.stats.resultCount); - assertEquals(5, resultSet.results.size()); + assertEquals(6, resultSet.stats.resultCount); + assertEquals(6, resultSet.results.size()); rit = resultSet.results.iterator(); assertResultEquals(tree1.resolve("different.txt"), tree2.resolve("different.txt"), true, rit.next()); @@ -256,6 +280,23 @@ public class FileTreeCompareImplTest sb.append("The End."); return sb.toString(); } + + private String sampleModuleProperties(String installDateAsString) + { + StringBuilder sb = new StringBuilder(); + sb.append("module.id=org.alfresco.integrations.share.google.docs\n"); + sb.append("module.version=3.0.3\n"); + sb.append("module.buildnumber=4ent\n"); + sb.append("module.title=Alfresco / Google Docs Share Module\n"); + sb.append("module.description=The Share side artifacts of the Alfresco / Google Docs Integration.\n"); + sb.append("module.repo.version.min=5.0.0\n"); + sb.append("module.repo.version.max=5.99.99\n"); + sb.append("module.installState=INSTALLED\n"); + // this is the problem we are trying to solve + sb.append("module.installDate=" + installDateAsString + "\n"); + + return sb.toString(); + } @Test public void canDiffTreesContainingWarFiles()