diff --git a/app/src/main/java/com/droiddeck/launcher/frontend/AddedGames.kt b/app/src/main/java/com/droiddeck/launcher/frontend/AddedGames.kt index 3fbf9c215..7057cadd3 100644 --- a/app/src/main/java/com/droiddeck/launcher/frontend/AddedGames.kt +++ b/app/src/main/java/com/droiddeck/launcher/frontend/AddedGames.kt @@ -103,7 +103,7 @@ object AddedGames { val key = "${folder.path}|${folder.lastModified()}" val now = System.currentTimeMillis() ranked[key]?.takeIf { now - it.first < RANK_FRESH_MS }?.let { return it.second } - if (reuse) kept?.rank(folder)?.let { ranked[key] = now to it; return it } + if (reuse) kept?.rank(folder)?.let { return it } val guessed = GameExePicker.rank(folder) { !skipExe(it.name) } val declared = declaredExes(folder) val preferred = declared.map { it.path }.toSet() diff --git a/app/src/test/java/com/droiddeck/launcher/frontend/AddedGamesCacheTest.kt b/app/src/test/java/com/droiddeck/launcher/frontend/AddedGamesCacheTest.kt index 804223911..7ef43d7b3 100644 --- a/app/src/test/java/com/droiddeck/launcher/frontend/AddedGamesCacheTest.kt +++ b/app/src/test/java/com/droiddeck/launcher/frontend/AddedGamesCacheTest.kt @@ -111,6 +111,23 @@ class AddedGamesCacheTest { assertEquals("Bastion", AddedGamesCache(file).name("named")) } + @Test fun aRankingAScanReusedIsNotHandedToAFreshLookup() { + val folder = tmp.newFolder("Game") + val walked = File(folder, "Game.exe").apply { writeText("game") } + val kept = File(folder, "Other.exe").apply { writeText("other") } + val files = tmp.newFolder("files") + val context = object : android.content.ContextWrapper(app) { + override fun getFilesDir() = files + } + AddedGamesCache(File(files, AddedGamesCache.FILE)).apply { + keepRank(folder, GameExePicker.Ranking(listOf(kept), listOf(10), false)) + save() + } + AddedGames.scan(context) + assertEquals(listOf(kept), AddedGames.rank(folder, reuse = true).exes) + assertEquals(walked, AddedGames.candidates(folder).first()) + } + @Test fun aScanKeepsEachGamesRankingForTheNextLaunch() { val (folder, exe) = game("Card Game") AddedExes.put(app, AddedExes.Entry(folder.path, exe.path, picked = false))