Skip to content

Commit 19e59a5

Browse files
committed
review fixes
1 parent 4f7c4c9 commit 19e59a5

4 files changed

Lines changed: 54 additions & 2 deletions

File tree

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/languageserver/ProjectConfigBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ private static String calculateProjectConfigHash(WurstProjectConfigData projectC
180180
.append("\n");
181181
WurstBuildConfig buildConfig = buildConfigFromBuildDir(buildDir);
182182
sb.append("scriptMode:").append(buildConfig.scriptMode()).append("\n");
183-
sb.append("wc3Patch:").append(buildConfig.wc3Patch()).append("\n");
183+
sb.append("wc3Patch:").append(buildConfig.wc3PatchName()).append("\n");
184184

185185
return ImportFile.calculateHash(sb.toString().getBytes(StandardCharsets.UTF_8));
186186
} catch (Exception e) {

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/utils/W3InstallationData.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public W3InstallationData(WurstLanguageServer languageServer, File wc3Path, bool
8989
}
9090

9191
private void loadFromPath(File wc3Path) {
92-
loadFromPath(wc3Path, true);
92+
loadFromPath(wc3Path, !version.isPresent());
9393
}
9494

9595
private void loadFromPath(File wc3Path, boolean shouldParseVersion) {
@@ -160,6 +160,10 @@ private void showFileChooser() {
160160
}
161161
});
162162

163+
if (selectedFolder == null) {
164+
return;
165+
}
166+
163167
loadFromPath(selectedFolder);
164168

165169
if (gameExe.isPresent()) {

de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/MapRequestPatchTargetTests.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.io.ByteArrayOutputStream;
1212
import java.io.File;
1313
import java.io.PrintStream;
14+
import java.lang.reflect.Method;
1415
import java.nio.charset.StandardCharsets;
1516
import java.nio.file.Files;
1617
import java.nio.file.Path;
@@ -63,6 +64,16 @@ public void pinnedRunMapUsesPatchVersionWithoutParsingExecutable() throws Except
6364
assertEquals(request.gameExe().orElseThrow().getAbsoluteFile(), fakeExe.toFile().getAbsoluteFile());
6465
}
6566

67+
@Test
68+
public void configuredVersionSurvivesManualPathLoad() throws Exception {
69+
W3InstallationData data = new W3InstallationData(Optional.empty(), Optional.of(new GameVersion("2.0")));
70+
Method loadFromPath = W3InstallationData.class.getDeclaredMethod("loadFromPath", File.class);
71+
loadFromPath.setAccessible(true);
72+
73+
loadFromPath.invoke(data, Files.createTempDirectory("not-warcraft-folder").toFile());
74+
75+
assertEquals(data.getWc3PatchVersion().orElseThrow(), new GameVersion("2.0"));
76+
}
6677

6778
@Test
6879
public void gameVersionParseFailurePrintsShortMessageOnly() throws Exception {

de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/WurstBuildConfigTests.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
package tests.wurstscript.tests;
22

3+
import config.WurstProjectConfigData;
34
import de.peeeq.wurstio.languageserver.WFile;
5+
import de.peeeq.wurstio.languageserver.ProjectConfigBuilder;
46
import de.peeeq.wurstio.languageserver.WurstBuildConfig;
57
import de.peeeq.wurstio.languageserver.WurstCommands;
68
import net.moonlightflower.wc3libs.port.GameVersion;
79
import org.testng.annotations.Test;
810

11+
import java.io.File;
12+
import java.lang.reflect.Method;
913
import java.nio.file.Files;
1014
import java.nio.file.Path;
1115
import java.util.List;
1216
import java.util.Optional;
1317

1418
import static org.testng.Assert.assertEquals;
1519
import static org.testng.Assert.assertFalse;
20+
import static org.testng.Assert.assertNotEquals;
1621
import static org.testng.Assert.assertTrue;
1722

1823
public class WurstBuildConfigTests {
@@ -162,4 +167,36 @@ public void compileArgsFollowConfiguredScriptMode() throws Exception {
162167
assertTrue(args.contains("-runcompiletimefunctions"));
163168
assertFalse(args.contains("-lua"));
164169
}
170+
171+
@Test
172+
public void projectConfigHashIncludesExactPatchTarget() throws Exception {
173+
Path project132 = Files.createTempDirectory("wurst-build-config-hash-132");
174+
Files.createDirectories(project132.resolve("_build"));
175+
Files.writeString(project132.resolve("wurst.build"), """
176+
projectName: Test
177+
wc3Patch: v1.32
178+
""");
179+
180+
Path project20 = Files.createTempDirectory("wurst-build-config-hash-20");
181+
Files.createDirectories(project20.resolve("_build"));
182+
Files.writeString(project20.resolve("wurst.build"), """
183+
projectName: Test
184+
wc3Patch: v2.0
185+
""");
186+
187+
String hash132 = calculateProjectConfigHash(project132.resolve("_build").toFile());
188+
String hash20 = calculateProjectConfigHash(project20.resolve("_build").toFile());
189+
190+
assertNotEquals(hash132, hash20);
191+
}
192+
193+
private static String calculateProjectConfigHash(File buildDir) throws Exception {
194+
Method method = ProjectConfigBuilder.class.getDeclaredMethod(
195+
"calculateProjectConfigHash",
196+
WurstProjectConfigData.class,
197+
File.class
198+
);
199+
method.setAccessible(true);
200+
return (String) method.invoke(null, new WurstProjectConfigData(), buildDir);
201+
}
165202
}

0 commit comments

Comments
 (0)