Skip to content

Commit 5d54c10

Browse files
committed
review
1 parent 645c80a commit 5d54c10

4 files changed

Lines changed: 59 additions & 8 deletions

File tree

src/main/kotlin/file/CoreJassProvider.kt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,7 @@ object CoreJassProvider {
175175
fun fetchJassHistoryVersions(): List<String> {
176176
val versionListUrl = "$JASS_HISTORY_RAW/$JASS_HISTORY_REF/$VERSION_LIST_FILE"
177177
return try {
178-
URI(versionListUrl).toURL().readText()
179-
.lineSequence()
180-
.map { it.substringBefore("#").trim() }
181-
.filter(::looksLikeJassHistoryFolder)
182-
.toList()
178+
parseJassHistoryVersionList(URI(versionListUrl).toURL().readText())
183179
.asReversed()
184180
.distinct()
185181
.ifEmpty { supportedPatches }
@@ -189,6 +185,19 @@ object CoreJassProvider {
189185
}
190186
}
191187

188+
internal fun parseJassHistoryVersionList(content: String): List<String> {
189+
return content
190+
.lineSequence()
191+
.flatMap { line ->
192+
line.substringBefore("#")
193+
.trim()
194+
.splitToSequence(Regex("""\s+"""))
195+
.filter(String::isNotBlank)
196+
}
197+
.filter(::looksLikeJassHistoryFolder)
198+
.toList()
199+
}
200+
192201
fun recommendedPatchOptions(versions: List<String>): List<String> {
193202
val base = listOf(DEFAULT_PATCH, "v1.31", PRE_129_PATCH)
194203
val latestExactVersion = versions.firstOrNull { version ->

src/main/kotlin/file/YamlHelper.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ object YamlHelper {
9090
putIfNotBlank(result, "name", name)
9191
putIfNotBlank(result, "fileName", fileName)
9292
putIfNotBlank(result, "author", author)
93-
scenarioData.toYamlValue()?.let { result["scenarioData"] = it }
94-
optionsFlags.toYamlValue()?.let { result["optionsFlags"] = it }
93+
scenarioData?.toYamlValue()?.let { result["scenarioData"] = it }
94+
optionsFlags?.toYamlValue()?.let { result["optionsFlags"] = it }
9595
if (players.isNotEmpty()) {
9696
result["players"] = players.map { it.toYamlValue() }
9797
}
@@ -142,7 +142,7 @@ object YamlHelper {
142142
private fun WurstProjectBuildForce.toYamlValue(): Map<String, Any?> {
143143
val result = linkedMapOf<String, Any?>()
144144
putIfNotBlank(result, "name", name)
145-
flags.toYamlValue()?.let { result["flags"] = it }
145+
flags?.toYamlValue()?.let { result["flags"] = it }
146146
if (playerIds.isNotEmpty()) {
147147
result["playerIds"] = playerIds
148148
}

src/test/kotlin/GenerateTests.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,23 @@ class GenerateTests {
9898
)
9999
}
100100

101+
@Test(priority = 10)
102+
fun testJassHistoryVersionListSplitsWhitespaceSeparatedTokens() {
103+
val parsed = CoreJassProvider.parseJassHistoryVersionList(
104+
"""
105+
Beta-ROC-v1.21 TFT-v1.27b-ru Reforged-v2.0.4.23745
106+
# comments and blank chunks should be ignored
107+
not-a-version ROC-v1.06-ru
108+
""".trimIndent()
109+
)
110+
111+
Assert.assertEquals(
112+
parsed,
113+
listOf("Beta-ROC-v1.21", "TFT-v1.27b-ru", "Reforged-v2.0.4.23745", "ROC-v1.06-ru")
114+
)
115+
Assert.assertFalse(parsed.any { it.contains(" ") })
116+
}
117+
101118
@Test(priority = 10)
102119
fun testStdlibDependencyFollowsPatchEra() {
103120
val legacyStdlib = "https://github.com/wurstscript/wurstStdlib2:pre1.29"

src/test/kotlin/YamlHelperTests.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,31 @@ class YamlHelperTests {
4848
Assert.assertFalse(dumped.contains("forces: []"))
4949
}
5050

51+
@Test
52+
fun testDumpBuildMapDataWithOmittedSections() {
53+
val dumped = YamlHelper.dumpProjectConfig(
54+
newProjectConfig(
55+
projectName = "minimal",
56+
buildMapData = WurstProjectBuildMapData(
57+
"Minimal Map",
58+
"Minimal Map.w3x",
59+
"Tester",
60+
null,
61+
null,
62+
emptyList(),
63+
emptyList()
64+
)
65+
)
66+
)
67+
68+
Assert.assertTrue(dumped.contains("buildMapData:"))
69+
Assert.assertTrue(dumped.contains("name: Minimal Map"))
70+
Assert.assertFalse(dumped.contains("scenarioData:"))
71+
Assert.assertFalse(dumped.contains("optionsFlags:"))
72+
Assert.assertFalse(dumped.contains("players: []"))
73+
Assert.assertFalse(dumped.contains("forces: []"))
74+
}
75+
5176
@Test
5277
fun testLoadMalformedConfigRecoversWithDefaults() {
5378
val dir = Files.createTempDirectory("wurstsetup-yaml-test")

0 commit comments

Comments
 (0)