IDEA-CR-43780 sort by name if no anchor files

This commit is contained in:
Vladimir Krivosheev
2019-02-21 12:11:17 +01:00
parent 291ac583c2
commit bc94afe67f
2 changed files with 34 additions and 5 deletions
@@ -88,12 +88,35 @@ class ConfigImportHelperTest {
""".trimIndent())
}
private fun writeStorageFile(version: String, lastModified: Long, isMacOs: Boolean) {
val path = fsRule.fs.getPath("/data/" + (constructConfigPath(version, isMacOs)),
PathManager.OPTIONS_DIRECTORY + '/' + StoragePathMacros.NOT_ROAMABLE_FILE)
Files.setLastModifiedTime(path.write(version), FileTime.fromMillis(lastModified))
@Test
fun `sort if no anchor files`() {
val isMacOs = true
fun writeStorageDir(version: String) {
val dir = fsRule.fs.getPath("/data/" + (constructConfigPath(version, isMacOs)))
dir.createDirectories()
}
val fs = fsRule.fs
writeStorageDir("2022.1")
writeStorageDir("2021.1")
writeStorageDir("2020.1")
val newConfigPath = fs.getPath("/data/${constructConfigPath("2022.3", isMacOs)}")
// create new config dir to test that it will be not suggested too (as on start of new version config dir can be created)
newConfigPath.createDirectories()
assertThat(ConfigImportHelper.findRecentConfigDirectory(newConfigPath, isMacOs).joinToString("\n")).isEqualTo("""
/data/${constructConfigPath("2022.1", isMacOs)}
/data/${constructConfigPath("2021.1", isMacOs)}
/data/${constructConfigPath("2020.1", isMacOs)}
""".trimIndent())
}
private fun writeStorageFile(version: String, lastModified: Long, isMacOs: Boolean) {
val dir = fsRule.fs.getPath("/data/" + (constructConfigPath(version, isMacOs)))
val file = dir.resolve(PathManager.OPTIONS_DIRECTORY + '/' + StoragePathMacros.NOT_ROAMABLE_FILE)
Files.setLastModifiedTime(file.write(version), FileTime.fromMillis(lastModified))
}
}
private fun constructConfigPath(version: String, isMacOs: Boolean): String {
@@ -197,7 +197,13 @@ public class ConfigImportHelper {
for (Object key : fileToLastModified.keys()) {
result.add((Path)key);
}
result.sort((o1, o2) -> (int)(fileToLastModified.get(o2) - fileToLastModified.get(o1)));
result.sort((o1, o2) -> {
int diff = (int)(fileToLastModified.get(o2) - fileToLastModified.get(o1));
if (diff == 0) {
return StringUtil.naturalCompare(o2.toString(), o1.toString());
}
return diff;
});
return result;
}