From ecc4469c3eb5b1af3faedde76b40bda36a626e9a Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Fri, 27 Jan 2023 11:59:04 +0100 Subject: [PATCH] Test diagnostics from Java --- .../src/server-test/buildserver/build.sbt | 6 +++++ .../src/main/java/example/Hello.java | 12 +++++++++ .../test/scala/testpkg/BuildServerTest.scala | 26 +++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 server-test/src/server-test/buildserver/java-proj/src/main/java/example/Hello.java diff --git a/server-test/src/server-test/buildserver/build.sbt b/server-test/src/server-test/buildserver/build.sbt index e41e0192b..7cab7de2e 100644 --- a/server-test/src/server-test/buildserver/build.sbt +++ b/server-test/src/server-test/buildserver/build.sbt @@ -36,6 +36,12 @@ lazy val util = project.settings( lazy val diagnostics = project +lazy val javaProj = project + .in(file("java-proj")) + .settings( + javacOptions += "-Xlint:all" + ) + def somethingBad = throw new MessageOnlyException("I am a bad build target") // other build targets should not be affected by this bad build target lazy val badBuildTarget = project.in(file("bad-build-target")) diff --git a/server-test/src/server-test/buildserver/java-proj/src/main/java/example/Hello.java b/server-test/src/server-test/buildserver/java-proj/src/main/java/example/Hello.java new file mode 100644 index 000000000..ddcab20e4 --- /dev/null +++ b/server-test/src/server-test/buildserver/java-proj/src/main/java/example/Hello.java @@ -0,0 +1,12 @@ +package example; + +import java.util.List; +import java.util.ArrayList; + +class Hello { + public static void main(String[] args) { + List list = new ArrayList(); + String msg = 42; + System.out.println(msg); + } +} diff --git a/server-test/src/test/scala/testpkg/BuildServerTest.scala b/server-test/src/test/scala/testpkg/BuildServerTest.scala index d2ca73d64..b4f25aa88 100644 --- a/server-test/src/test/scala/testpkg/BuildServerTest.scala +++ b/server-test/src/test/scala/testpkg/BuildServerTest.scala @@ -245,6 +245,32 @@ object BuildServerTest extends AbstractServerTest { } + test("buildTarget/compile: Java diagnostics") { _ => + val buildTarget = buildTargetUri("javaProj", "Compile") + + compile(buildTarget) + + assert( + svr.waitForString(10.seconds) { s => + s.contains("build/publishDiagnostics") && + s.contains("Hello.java") && + s.contains(""""severity":2""") && + s.contains("""missing type arguments for generic class java.util.List""") + }, + "should send publishDiagnostics with serverity 2 for Hello.java" + ) + + assert( + svr.waitForString(1.seconds) { s => + s.contains("build/publishDiagnostics") && + s.contains("Hello.java") && + s.contains(""""severity":1""") && + s.contains("""incompatible types: int cannot be converted to java.lang.String""") + }, + "should send publishDiagnostics with serverity 1 for Hello.java" + ) + } + test("buildTarget/scalacOptions") { _ => val buildTarget = buildTargetUri("util", "Compile") val badBuildTarget = buildTargetUri("badBuildTarget", "Compile")