in testSrc/org/jetbrains/jps/util/FileUtil.groovy [106:137]
private static int compareDirectories(File dir1, File dir2, String relativePath) {
def processed = 0
Set<String> dir2Files = dir2.listFiles()*.name as Set
dir1.listFiles().each {File child1 ->
File child2 = new File(dir2, child1.name)
if (!child2.exists()) {
if (!IGNORED.contains(child1.name)) {
System.out.println("#1: $relativePath/${child1.name}");
}
}
else {
if (child1.isFile() && child2.isFile()) {
processed += compareFiles(child1, child2, relativePath + "/" + child1.name)
}
else if (child1.isDirectory() && child2.isDirectory()) {
processed += compareDirectories(child1, child2, relativePath + "/" + child1.name)
}
else {
System.out.println("type mismatch for $relativePath: #1 is ${child1.isDirectory() ? "dir" : "file"}, #2 is ${child2.isDirectory() ? "dir" : "file"}");
}
}
dir2Files.remove(child1.name)
}
dir2Files.each {
if (!IGNORED.contains(it)) {
System.out.println("#2: $relativePath/$it");
}
}
return processed
}