diff --git a/cli/src/main/java/net/neoforged/jst/cli/intellij/ClasspathSetup.java b/cli/src/main/java/net/neoforged/jst/cli/intellij/ClasspathSetup.java index ad19d4c..662e03f 100644 --- a/cli/src/main/java/net/neoforged/jst/cli/intellij/ClasspathSetup.java +++ b/cli/src/main/java/net/neoforged/jst/cli/intellij/ClasspathSetup.java @@ -104,7 +104,8 @@ public static void addLibrary(Logger logger, Path libraryPath, IntelliJEnvironme if (!Files.exists(libraryPath)) { throw new UncheckedIOException(new NoSuchFileException(libraryPath.toString())); } - ijEnv.addJarToClassPath(libraryPath); + if (Files.isDirectory(libraryPath)) ijEnv.addFolderToClasspath(libraryPath); + else ijEnv.addJarToClassPath(libraryPath); logger.debug("Added %s", libraryPath); } } diff --git a/tests/data/accesstransformer/folder_classpath_entry/accesstransformer.cfg b/tests/data/accesstransformer/folder_classpath_entry/accesstransformer.cfg new file mode 100644 index 0000000..14e8cc6 --- /dev/null +++ b/tests/data/accesstransformer/folder_classpath_entry/accesstransformer.cfg @@ -0,0 +1 @@ +public C1 get()La/b/c/Reference; diff --git a/tests/data/accesstransformer/folder_classpath_entry/deps/a/b/c/Reference.java b/tests/data/accesstransformer/folder_classpath_entry/deps/a/b/c/Reference.java new file mode 100644 index 0000000..3de7dfc --- /dev/null +++ b/tests/data/accesstransformer/folder_classpath_entry/deps/a/b/c/Reference.java @@ -0,0 +1,5 @@ +package a.b.c; + +public record Reference(int a) { + +} \ No newline at end of file diff --git a/tests/data/accesstransformer/folder_classpath_entry/expected/C1.java b/tests/data/accesstransformer/folder_classpath_entry/expected/C1.java new file mode 100644 index 0000000..dd66ac2 --- /dev/null +++ b/tests/data/accesstransformer/folder_classpath_entry/expected/C1.java @@ -0,0 +1,7 @@ +import a.b.c.Reference; + +public class C1 { + public Reference get() { + return new Reference(1); + } +} \ No newline at end of file diff --git a/tests/data/accesstransformer/folder_classpath_entry/source/C1.java b/tests/data/accesstransformer/folder_classpath_entry/source/C1.java new file mode 100644 index 0000000..3fe93a3 --- /dev/null +++ b/tests/data/accesstransformer/folder_classpath_entry/source/C1.java @@ -0,0 +1,7 @@ +import a.b.c.Reference; + +public class C1 { + private Reference get() { + return new Reference(1); + } +} \ No newline at end of file diff --git a/tests/src/test/java/net/neoforged/jst/tests/EmbeddedTest.java b/tests/src/test/java/net/neoforged/jst/tests/EmbeddedTest.java index 082c293..842fc84 100644 --- a/tests/src/test/java/net/neoforged/jst/tests/EmbeddedTest.java +++ b/tests/src/test/java/net/neoforged/jst/tests/EmbeddedTest.java @@ -1,5 +1,6 @@ package net.neoforged.jst.tests; +import com.intellij.util.ArrayUtil; import net.neoforged.jst.cli.Main; import org.assertj.core.util.CanIgnoreReturnValue; import org.junit.jupiter.api.BeforeEach; @@ -286,6 +287,11 @@ void testImplicitConstructors() throws Exception { void testIllegal() throws Exception { runATTest("illegal"); } + + @Test + void testFolderClasspathEntries() throws Exception { + runATTest("folder_classpath_entry", "--classpath=" + testDataRoot.resolve("accesstransformer/folder_classpath_entry/deps")); + } } @Nested @@ -350,10 +356,15 @@ protected final void runInterfaceInjectionTest(String testDirName, Path tempDir, } } - protected final void runATTest(String testDirName) throws Exception { + protected final void runATTest(String testDirName, final String... extraArgs) throws Exception { testDirName = "accesstransformer/" + testDirName; var atPath = testDataRoot.resolve(testDirName).resolve("accesstransformer.cfg"); - runTest(testDirName, txt -> txt.replace(atPath.toAbsolutePath().toString(), "{atpath}"), "--enable-accesstransformers", "--access-transformer", atPath.toString()); + runTest(testDirName, txt -> txt.replace(atPath.toAbsolutePath().toString(), "{atpath}"), ArrayUtil.mergeArrays( + new String[]{ + "--enable-accesstransformers", "--access-transformer", atPath.toString() + }, + extraArgs + )); } protected final void runParchmentTest(String testDirName, String mappingsFilename) throws Exception {