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
This commit is contained in:
Mark Rogers
2016-03-15 11:57:03 +00:00
parent df3acfd11a
commit c93bdd696f
2 changed files with 62 additions and 8 deletions

View File

@@ -23,6 +23,8 @@ import java.io.*;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.*; 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 * Class capable of comparing two trees of files to determine which directories or
@@ -217,6 +219,9 @@ public class FileTreeCompareImpl implements FileTreeCompare
Map<String, String> replacements = new HashMap<>(); Map<String, String> replacements = new HashMap<>();
replacements.put(tree.toAbsolutePath().toString(), replacementToken("comparison_root")); 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(); File processed = Files.createTempFile(orig.getName(), ".tmp").toFile();
try(Reader r = new FileReader(orig); try(Reader r = new FileReader(orig);
BufferedReader br = new BufferedReader(r); BufferedReader br = new BufferedReader(r);
@@ -224,6 +229,7 @@ public class FileTreeCompareImpl implements FileTreeCompare
PrintWriter pw = new PrintWriter(w)) PrintWriter pw = new PrintWriter(w))
{ {
String line; String line;
while ((line = br.readLine()) != null) while ((line = br.readLine()) != null)
{ {
for (String replKey : replacements.keySet()) for (String replKey : replacements.keySet())
@@ -231,6 +237,13 @@ public class FileTreeCompareImpl implements FileTreeCompare
String replVal = replacements.get(replKey); String replVal = replacements.get(replKey);
line = line.replace(replKey, replVal); line = line.replace(replKey, replVal);
} }
Matcher m = installDatePattern.matcher(line);
if(m.matches())
{
// replace module.installDate
line = m.replaceFirst("module.installDate=<install-date>");
}
pw.println(line); pw.println(line);
} }
} }

View File

@@ -16,6 +16,7 @@ import java.io.IOException;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@@ -199,6 +200,12 @@ public class FileTreeCompareImplTest
// Check that two identical trees are... identical! // Check that two identical trees are... identical!
ResultSet resultSet = comparator.compare(tree1, tree2); 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.differenceCount);
assertEquals(0, resultSet.stats.ignoredFileCount); assertEquals(0, resultSet.stats.ignoredFileCount);
assertEquals(4, resultSet.stats.resultCount); assertEquals(4, resultSet.stats.resultCount);
@@ -213,16 +220,32 @@ public class FileTreeCompareImplTest
t2File.deleteOnExit(); t2File.deleteOnExit();
FileUtils.write(t2File, sampleText(tree2.toAbsolutePath().toString())); 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 // Perform the comparison
comparator = new FileTreeCompareImpl(new HashSet<String>(), new HashSet<String>()); comparator = new FileTreeCompareImpl(new HashSet<String>(), new HashSet<String>());
resultSet = comparator.compare(tree1, tree2); 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 // We should see a difference
assertEquals(0, resultSet.stats.suppressedDifferenceCount); assertEquals(0, resultSet.stats.suppressedDifferenceCount);
assertEquals(1, resultSet.stats.differenceCount); assertEquals(2, resultSet.stats.differenceCount);
assertEquals(0, resultSet.stats.ignoredFileCount); assertEquals(0, resultSet.stats.ignoredFileCount);
assertEquals(5, resultSet.stats.resultCount); assertEquals(6, resultSet.stats.resultCount);
assertEquals(5, resultSet.results.size()); assertEquals(6, resultSet.results.size());
Iterator<Result> rit = resultSet.results.iterator(); Iterator<Result> rit = resultSet.results.iterator();
assertResultEquals(tree1.resolve("different.txt"), tree2.resolve("different.txt"), false, rit.next()); 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. // Perform the comparison again, but after allowing the files to be different.
Set<String> allowedDiffsPaths = new HashSet<>(); Set<String> allowedDiffsPaths = new HashSet<>();
allowedDiffsPaths.add(toPlatformPath("**/*.txt")); 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<String>(), allowedDiffsPaths); comparator = new FileTreeCompareImpl(new HashSet<String>(), allowedDiffsPaths);
resultSet = comparator.compare(tree1, tree2); resultSet = comparator.compare(tree1, tree2);
// We should see a difference - but it is in the 'suppressed' list. // 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.differenceCount);
assertEquals(0, resultSet.stats.ignoredFileCount); assertEquals(0, resultSet.stats.ignoredFileCount);
assertEquals(5, resultSet.stats.resultCount); assertEquals(6, resultSet.stats.resultCount);
assertEquals(5, resultSet.results.size()); assertEquals(6, resultSet.results.size());
rit = resultSet.results.iterator(); rit = resultSet.results.iterator();
assertResultEquals(tree1.resolve("different.txt"), tree2.resolve("different.txt"), true, rit.next()); assertResultEquals(tree1.resolve("different.txt"), tree2.resolve("different.txt"), true, rit.next());
@@ -257,6 +281,23 @@ public class FileTreeCompareImplTest
return sb.toString(); 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 @Test
public void canDiffTreesContainingWarFiles() public void canDiffTreesContainingWarFiles()
{ {