From 114b9b099c3b0528e9402f5a11045badfcbaa0a6 Mon Sep 17 00:00:00 2001 From: ktkk Date: Mon, 6 Jul 2026 11:28:58 +0000 Subject: [PATCH] Put testsuite in its own directory --- flake.nix | 2 ++ testsuite/.gitignore | 3 +++ testsuite/classes/java/CustomAttribute.java | 10 ++++++++ testsuite/classes/java/Hello.java | 6 +++++ .../classes/java/Interface.java | 0 Main.java => testsuite/classes/java/Main.java | 1 + testsuite/classes/java/MultiThreading.java | 22 ++++++++++++++++++ testsuite/classes/java/Object.class | Bin 0 -> 2412 bytes testsuite/classes/kotlin/Main.kt | 12 ++++++++++ testsuite/modules/compile-simple-modules.sh | 2 ++ testsuite/modules/run-simple-module-app.sh | 2 ++ .../katkak/modules/hello/HelloInterface.java | 6 +++++ .../katkak/modules/hello/HelloModules.java | 12 ++++++++++ .../hello.modules/module-info.java | 6 +++++ .../dev/katkak/modules/main/MainApp.java | 17 ++++++++++++++ .../simple-modules/main.app/module-info.java | 6 +++++ 16 files changed, 107 insertions(+) create mode 100644 testsuite/.gitignore create mode 100644 testsuite/classes/java/CustomAttribute.java create mode 100644 testsuite/classes/java/Hello.java rename Interface.java => testsuite/classes/java/Interface.java (100%) rename Main.java => testsuite/classes/java/Main.java (98%) create mode 100644 testsuite/classes/java/MultiThreading.java create mode 100644 testsuite/classes/java/Object.class create mode 100644 testsuite/classes/kotlin/Main.kt create mode 100755 testsuite/modules/compile-simple-modules.sh create mode 100755 testsuite/modules/run-simple-module-app.sh create mode 100644 testsuite/modules/simple-modules/hello.modules/dev/katkak/modules/hello/HelloInterface.java create mode 100644 testsuite/modules/simple-modules/hello.modules/dev/katkak/modules/hello/HelloModules.java create mode 100644 testsuite/modules/simple-modules/hello.modules/module-info.java create mode 100644 testsuite/modules/simple-modules/main.app/dev/katkak/modules/main/MainApp.java create mode 100644 testsuite/modules/simple-modules/main.app/module-info.java diff --git a/flake.nix b/flake.nix index c48263a..b1ef715 100644 --- a/flake.nix +++ b/flake.nix @@ -19,6 +19,8 @@ zls javaPackages.compiler.openjdk25 jdt-language-server + kotlin + kotlin-language-server ]; buildInputs = with pkgs; []; diff --git a/testsuite/.gitignore b/testsuite/.gitignore new file mode 100644 index 0000000..415ec0f --- /dev/null +++ b/testsuite/.gitignore @@ -0,0 +1,3 @@ +*.class +!Object.class +META-INF diff --git a/testsuite/classes/java/CustomAttribute.java b/testsuite/classes/java/CustomAttribute.java new file mode 100644 index 0000000..e3fe264 --- /dev/null +++ b/testsuite/classes/java/CustomAttribute.java @@ -0,0 +1,10 @@ +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.lang.annotation.ElementType; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface CustomAttribute { +} + diff --git a/testsuite/classes/java/Hello.java b/testsuite/classes/java/Hello.java new file mode 100644 index 0000000..a5a4fbf --- /dev/null +++ b/testsuite/classes/java/Hello.java @@ -0,0 +1,6 @@ +class Hello { + public static void main(String[] args) { + System.out.println("Hello, world!"); + } +} + diff --git a/Interface.java b/testsuite/classes/java/Interface.java similarity index 100% rename from Interface.java rename to testsuite/classes/java/Interface.java diff --git a/Main.java b/testsuite/classes/java/Main.java similarity index 98% rename from Main.java rename to testsuite/classes/java/Main.java index a3c6d9b..ec77f66 100644 --- a/Main.java +++ b/testsuite/classes/java/Main.java @@ -1,5 +1,6 @@ import java.util.function.Supplier; +@CustomAttribute public class Main implements Runnable, Supplier, Interface { private static final String name = "John"; private static final int number = 42; diff --git a/testsuite/classes/java/MultiThreading.java b/testsuite/classes/java/MultiThreading.java new file mode 100644 index 0000000..62d84f5 --- /dev/null +++ b/testsuite/classes/java/MultiThreading.java @@ -0,0 +1,22 @@ +import java.util.concurrent.Executors; +import java.util.stream.IntStream; +import java.util.concurrent.TimeUnit; + +public class MultiThreading { + private int number = 0; + + public static void main(String[] args) throws InterruptedException { + final var multiThreading = new MultiThreading(); + + final var service = Executors.newFixedThreadPool(3); + IntStream.range(0, 1000) + .forEach(count -> service.submit(multiThreading::increment)); + service.awaitTermination(1000, TimeUnit.MILLISECONDS); + + System.out.println(multiThreading.number); + } + + public synchronized void increment() { + number += 1; + } +} diff --git a/testsuite/classes/java/Object.class b/testsuite/classes/java/Object.class new file mode 100644 index 0000000000000000000000000000000000000000..d33531f70deffc2ee62a65b89a7a44e7773be646 GIT binary patch literal 2412 zcmX^0Z`VEs1_oD#Vs-{5Mh5Y$#Ii*FoW#6z{os101ty8gAgMFKbkxv1ABUEiC@9#URHZ&(5I0!=T8Z#K<6saHMBmNosm(5hDY4NxnyF1;k)R22l-9O#8rYRpDV! z1$mUCBp;#}WUV?6g9d{pBLho$VrB^=1B-^2W*9qzHY0-)l1(`|sp*M1jz#IExv6<2 zt`*6t1tppJc^nM7j0}<`nYpR?r6mewi8-aI3Yo>LGnnu&m@=55L}5rqQEFleBLi=8X;D#XUI~nk8W9jtYjy?;l=KspSyWP* zm;;dodD4o9!5ZXAR*)wR*cogY8RU?>msgTnR8(3}l9~ed8W)2(gFO#}1A`+YgGhR6 ziDO=hb53ev5h&2XYQeD+#lhgr$RH050pHA=oXld(aA0QOce3YTaARap%}dP7FHTL) z&r4B&YJw^U1z>)fLQ!H~dMZ1E2O|R?!hJsZdFib6{~>^pfd!H{_k4| z*5sW0JdAt@)yBxc1&_C4c7_;61{H*7ok1G?@=JnC3kvd!kfWH9fh{k;Br~m&k%1G! zaLmbJWME8XWKcj#tne5|N*&gW4D4kk&?G8}q!=aTSu-;5f`T`{v;>kg7#SG77#UbK zygW6-7#Uc>iGh)U(UXyZBP}y8F(I{BlrqGBR+vq!tvVCMTAp zrZ6&yAz6wLw`OEuEzZnKPGw|Zv}9!9O3N<_O3lqLOUz+rU|?WmWZ(+UFD*(=b;|^$ z7j8)S>49uxP-Ng>fB;?wMo?+Xz{KFqz`&pl(g?yE85kIt7*OT8GF z7?>Cs7`U~xmoc!jEN5V0UcH-5DzNop5M@y785p=3!WjG+7#YGD7#LU?m^d96 z8Ce)27$O;%7@`;$7+4q>8KTi_Rb>!@+Um!^1on-}ZU)B4?F`IX+ZfolG4O6<5Ec^O z#vrVzy=L& z69#6m8`!isw=t+8!ki1_QO0-%R>lM*o7f;W!Tn|fHcJy~)>#G?237_J25WiFDRUTj zcQa^33h8WT(A&R*!O)6DlI0+S`Ai0BNtOc)=6+i8+ZZgDGYDC+=x$@M3zuZs4;IAUB*TRBgQ5MQ^r;X zE5>%PL$w%K7<3sp7~&Zc7+4sT8H5-T8Il-4$cm@V*hGd2mXsk&vun7ETkYZqF zXW(FAXE0}AWM{DX#lXpe@Fb%Us5EC_M2LXBoeK5#0tOZa76t|eDPx# literal 0 HcmV?d00001 diff --git a/testsuite/classes/kotlin/Main.kt b/testsuite/classes/kotlin/Main.kt new file mode 100644 index 0000000..ca75765 --- /dev/null +++ b/testsuite/classes/kotlin/Main.kt @@ -0,0 +1,12 @@ +fun main() { + println("Hello, world!") + + Test().apply { + test = true + } +} + +class Test { + var test: Boolean = false +} + diff --git a/testsuite/modules/compile-simple-modules.sh b/testsuite/modules/compile-simple-modules.sh new file mode 100755 index 0000000..ca384d8 --- /dev/null +++ b/testsuite/modules/compile-simple-modules.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +javac -g -d outDir --module-source-path simple-modules $(find simple-modules -name "*.java") diff --git a/testsuite/modules/run-simple-module-app.sh b/testsuite/modules/run-simple-module-app.sh new file mode 100755 index 0000000..533d45a --- /dev/null +++ b/testsuite/modules/run-simple-module-app.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +java --module-path outDir -m main.app/dev.katkak.modules.main.MainApp diff --git a/testsuite/modules/simple-modules/hello.modules/dev/katkak/modules/hello/HelloInterface.java b/testsuite/modules/simple-modules/hello.modules/dev/katkak/modules/hello/HelloInterface.java new file mode 100644 index 0000000..b98b718 --- /dev/null +++ b/testsuite/modules/simple-modules/hello.modules/dev/katkak/modules/hello/HelloInterface.java @@ -0,0 +1,6 @@ +package dev.katkak.modules.hello; + +public interface HelloInterface { + void sayHello(); +} + diff --git a/testsuite/modules/simple-modules/hello.modules/dev/katkak/modules/hello/HelloModules.java b/testsuite/modules/simple-modules/hello.modules/dev/katkak/modules/hello/HelloModules.java new file mode 100644 index 0000000..cdbc53a --- /dev/null +++ b/testsuite/modules/simple-modules/hello.modules/dev/katkak/modules/hello/HelloModules.java @@ -0,0 +1,12 @@ +package dev.katkak.modules.hello; + +public class HelloModules implements HelloInterface { + public static void doSomething() { + System.out.println("Hello, Modules!"); + } + + public void sayHello() { + System.out.println("Hello!"); + } +} + diff --git a/testsuite/modules/simple-modules/hello.modules/module-info.java b/testsuite/modules/simple-modules/hello.modules/module-info.java new file mode 100644 index 0000000..4dfc3e0 --- /dev/null +++ b/testsuite/modules/simple-modules/hello.modules/module-info.java @@ -0,0 +1,6 @@ +module hello.modules { + exports dev.katkak.modules.hello; + + provides dev.katkak.modules.hello.HelloInterface with dev.katkak.modules.hello.HelloModules; +} + diff --git a/testsuite/modules/simple-modules/main.app/dev/katkak/modules/main/MainApp.java b/testsuite/modules/simple-modules/main.app/dev/katkak/modules/main/MainApp.java new file mode 100644 index 0000000..ac4eda3 --- /dev/null +++ b/testsuite/modules/simple-modules/main.app/dev/katkak/modules/main/MainApp.java @@ -0,0 +1,17 @@ +package dev.katkak.modules.main; + +import dev.katkak.modules.hello.HelloModules; +import dev.katkak.modules.hello.HelloInterface; + +import java.util.ServiceLoader; + +public class MainApp { + public static void main(String[] args) { + HelloModules.doSomething(); + + final var services = ServiceLoader.load(HelloInterface.class); + final var service = services.iterator().next(); + service.sayHello(); + } +} + diff --git a/testsuite/modules/simple-modules/main.app/module-info.java b/testsuite/modules/simple-modules/main.app/module-info.java new file mode 100644 index 0000000..d7e9447 --- /dev/null +++ b/testsuite/modules/simple-modules/main.app/module-info.java @@ -0,0 +1,6 @@ +module main.app { + requires hello.modules; + + uses dev.katkak.modules.hello.HelloInterface; +} +