diff --git a/build/jvm-rules/jvm-inc-builder-tests/src/com/intellij/tools/build/bazel/JavaTests.java b/build/jvm-rules/jvm-inc-builder-tests/src/com/intellij/tools/build/bazel/JavaTests.java index 9b6b0dd9b2b9..f52b6283e667 100644 --- a/build/jvm-rules/jvm-inc-builder-tests/src/com/intellij/tools/build/bazel/JavaTests.java +++ b/build/jvm-rules/jvm-inc-builder-tests/src/com/intellij/tools/build/bazel/JavaTests.java @@ -1,8 +1,13 @@ package com.intellij.tools.build.bazel; import com.intellij.tools.build.bazel.impl.BazelIncBuildTest; +import com.intellij.tools.build.bazel.impl.OutputConsumer; import org.junit.Test; +import java.io.IOException; +import java.nio.file.Path; +import java.time.Duration; + // Migrated from JPS-based test engine public class JavaTests extends BazelIncBuildTest { @Test @@ -1389,9 +1394,25 @@ public class JavaTests extends BazelIncBuildTest { // changeName tests + private static final String JAVA_CHANGE_CASE_TEST_PATH = "java/changeName/changeCaseOfName"; + @Test public void testChangeCaseOfName() throws Exception { - performTest("java/changeName/changeCaseOfName").assertSuccessful(); + performTest(JAVA_CHANGE_CASE_TEST_PATH).assertSuccessful(); + } + + @Override + protected void modify(Path testDataDir, Path testWorkDir, int stage) throws IOException { + if (stage == 0 && testDataDir.endsWith(JAVA_CHANGE_CASE_TEST_PATH)) { + // shutdown to ensure bazel re-reads paths with their original case + try { + runBazelCommand(OutputConsumer.allLinesConsumer(), Duration.ofMinutes(1), "shutdown").assertSuccessful(); + } + catch (Exception e) { + throw new IOException(e); + } + } + super.modify(testDataDir, testWorkDir, stage); } @Test diff --git a/build/jvm-rules/jvm-inc-builder/src/com/intellij/tools/build/bazel/jvmIncBuilder/impl/BuildContextImpl.java b/build/jvm-rules/jvm-inc-builder/src/com/intellij/tools/build/bazel/jvmIncBuilder/impl/BuildContextImpl.java index 76a1291da81a..585c6c7c3d18 100644 --- a/build/jvm-rules/jvm-inc-builder/src/com/intellij/tools/build/bazel/jvmIncBuilder/impl/BuildContextImpl.java +++ b/build/jvm-rules/jvm-inc-builder/src/com/intellij/tools/build/bazel/jvmIncBuilder/impl/BuildContextImpl.java @@ -20,7 +20,6 @@ import org.jetbrains.jps.util.Pair; import java.io.File; import java.io.IOException; -import java.nio.file.LinkOption; import java.nio.file.Path; import java.util.ArrayList; import java.util.Base64; @@ -121,14 +120,9 @@ public class BuildContextImpl implements BuildContext { Map sourcesMap = new HashMap<>(); for (String src : CLFlags.SRCS.getValue(flags)) { - try { - Path inputPath = baseDir.resolve(src).toRealPath(LinkOption.NOFOLLOW_LINKS); // ensure the input path names have exactly the same case as on the disk - assert isSourceDependency(inputPath); - sourcesMap.put(myPathMapper.toNodeSource(inputPath), getDigest.apply(src)); - } - catch (IOException e) { - report(Message.create(null, Message.Kind.ERROR, "Unable to resolve relative path " + src, e)); - } + Path inputPath = baseDir.resolve(src).normalize(); + assert isSourceDependency(inputPath); + sourcesMap.put(myPathMapper.toNodeSource(inputPath), getDigest.apply(src)); } mySources = new SourceSnapshotImpl(sourcesMap);