2020-02-17 00:01:45 +01:00
|
|
|
/*
|
|
|
|
|
* sbt
|
|
|
|
|
* Copyright 2011 - 2018, Lightbend, Inc.
|
|
|
|
|
* Copyright 2008 - 2010, Mark Harrah
|
|
|
|
|
* Licensed under Apache License 2.0 (see LICENSE)
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package testpkg
|
|
|
|
|
|
|
|
|
|
import scala.concurrent.duration._
|
|
|
|
|
|
|
|
|
|
// starts svr using server-test/buildserver and perform custom server tests
|
|
|
|
|
object BuildServerTest extends AbstractServerTest {
|
|
|
|
|
override val testDirectory: String = "buildserver"
|
|
|
|
|
|
|
|
|
|
test("build/initialize") { _ =>
|
|
|
|
|
initializeRequest()
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains """"id":"10"""")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
test("workspace/buildTargets") { _ =>
|
|
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
"""{ "jsonrpc": "2.0", "id": "11", "method": "workspace/buildTargets", "params": {} }"""
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains """"id":"11"""") &&
|
|
|
|
|
(s contains """"displayName":"util"""")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
test("buildTarget/sources") { _ =>
|
|
|
|
|
val x = s"${svr.baseDirectory.getAbsoluteFile.toURI}#util/Compile"
|
|
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
s"""{ "jsonrpc": "2.0", "id": "12", "method": "buildTarget/sources", "params": {
|
|
|
|
|
| "targets": [{ "uri": "$x" }]
|
|
|
|
|
|} }""".stripMargin
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
2020-02-24 07:02:16 +01:00
|
|
|
(s contains """"id":"12"""") &&
|
|
|
|
|
(s contains "util/src/main/scala")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-28 18:03:42 +02:00
|
|
|
test("buildTarget/compile") { _ =>
|
|
|
|
|
val x = s"${svr.baseDirectory.getAbsoluteFile.toURI}#util/Compile"
|
|
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
s"""{ "jsonrpc": "2.0", "id": "13", "method": "buildTarget/compile", "params": {
|
|
|
|
|
| "targets": [{ "uri": "$x" }]
|
|
|
|
|
|} }""".stripMargin
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains """"id":"13"""") &&
|
|
|
|
|
(s contains """"statusCode":1""")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2020-02-24 07:02:16 +01:00
|
|
|
test("buildTarget/scalacOptions") { _ =>
|
|
|
|
|
val x = s"${svr.baseDirectory.getAbsoluteFile.toURI}#util/Compile"
|
|
|
|
|
svr.sendJsonRpc(
|
2020-04-28 18:03:42 +02:00
|
|
|
s"""{ "jsonrpc": "2.0", "id": "14", "method": "buildTarget/scalacOptions", "params": {
|
2020-02-24 07:02:16 +01:00
|
|
|
| "targets": [{ "uri": "$x" }]
|
|
|
|
|
|} }""".stripMargin
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
2020-04-28 18:03:42 +02:00
|
|
|
(s contains """"id":"14"""") &&
|
2020-02-24 07:02:16 +01:00
|
|
|
(s contains "scala-library-2.13.1.jar")
|
2020-02-17 00:01:45 +01:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-11 11:33:13 +02:00
|
|
|
test("workspace/reload") { _ =>
|
|
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
"""{ "jsonrpc": "2.0", "id": "15", "method": "workspace/reload"}"""
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains """"id":"15"""") &&
|
|
|
|
|
(s contains """"result":null""")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-14 13:58:51 +02:00
|
|
|
test("buildTarget/scalaMainClasses") { _ =>
|
2020-10-22 11:09:00 +02:00
|
|
|
val x = s"${svr.baseDirectory.getAbsoluteFile.toURI}#runAndTest/Compile"
|
2020-09-14 13:58:51 +02:00
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
s"""{ "jsonrpc": "2.0", "id": "16", "method": "buildTarget/scalaMainClasses", "params": {
|
|
|
|
|
| "targets": [{ "uri": "$x" }]
|
|
|
|
|
|} }""".stripMargin
|
|
|
|
|
)
|
2020-09-21 09:18:07 +02:00
|
|
|
assert(svr.waitForString(30.seconds) { s =>
|
2020-09-14 13:58:51 +02:00
|
|
|
println(s)
|
|
|
|
|
(s contains """"id":"16"""") &&
|
2020-10-22 11:09:00 +02:00
|
|
|
(s contains """"class":"main.Main"""")
|
2020-09-14 13:58:51 +02:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-17 14:23:07 +02:00
|
|
|
test("buildTarget/run") { _ =>
|
2020-10-22 11:09:00 +02:00
|
|
|
val x = s"${svr.baseDirectory.getAbsoluteFile.toURI}#runAndTest/Compile"
|
2020-09-17 14:23:07 +02:00
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
s"""{ "jsonrpc": "2.0", "id": "17", "method": "buildTarget/run", "params": {
|
|
|
|
|
| "target": { "uri": "$x" },
|
|
|
|
|
| "dataKind": "scala-main-class",
|
2020-10-22 11:09:00 +02:00
|
|
|
| "data": { "class": "main.Main" }
|
2020-09-17 14:23:07 +02:00
|
|
|
|} }""".stripMargin
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains "build/logMessage") &&
|
|
|
|
|
(s contains """"message":"Hello World!"""")
|
|
|
|
|
})
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains """"id":"17"""") &&
|
|
|
|
|
(s contains """"statusCode":1""")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-17 15:58:14 +02:00
|
|
|
test("buildTarget/scalaTestClasses") { _ =>
|
2020-10-22 11:09:00 +02:00
|
|
|
val x = s"${svr.baseDirectory.getAbsoluteFile.toURI}#runAndTest/Test"
|
2020-09-17 15:58:14 +02:00
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
s"""{ "jsonrpc": "2.0", "id": "18", "method": "buildTarget/scalaTestClasses", "params": {
|
|
|
|
|
| "targets": [{ "uri": "$x" }]
|
|
|
|
|
|} }""".stripMargin
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains """"id":"18"""") &&
|
2020-10-22 11:09:00 +02:00
|
|
|
(s contains """"tests.FailingTest"""") &&
|
|
|
|
|
(s contains """"tests.PassingTest"""")
|
2020-09-21 12:16:31 +02:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
test("buildTarget/test: run all tests") { _ =>
|
2020-10-22 11:09:00 +02:00
|
|
|
val x = s"${svr.baseDirectory.getAbsoluteFile.toURI}#runAndTest/Test"
|
2020-09-21 12:16:31 +02:00
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
s"""{ "jsonrpc": "2.0", "id": "19", "method": "buildTarget/test", "params": {
|
|
|
|
|
| "targets": [{ "uri": "$x" }]
|
|
|
|
|
|} }""".stripMargin
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains """"id":"19"""") &&
|
|
|
|
|
(s contains """"statusCode":2""")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
test("buildTarget/test: run one test class") { _ =>
|
2020-10-22 11:09:00 +02:00
|
|
|
val x = s"${svr.baseDirectory.getAbsoluteFile.toURI}#runAndTest/Test"
|
2020-09-21 12:16:31 +02:00
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
s"""{ "jsonrpc": "2.0", "id": "20", "method": "buildTarget/test", "params": {
|
|
|
|
|
| "targets": [{ "uri": "$x" }],
|
|
|
|
|
| "dataKind": "scala-test",
|
|
|
|
|
| "data": {
|
|
|
|
|
| "testClasses": [
|
|
|
|
|
| {
|
|
|
|
|
| "target": { "uri": "$x" },
|
2020-10-22 11:09:00 +02:00
|
|
|
| "classes": ["tests.PassingTest"]
|
2020-09-21 12:16:31 +02:00
|
|
|
| }
|
|
|
|
|
| ]
|
|
|
|
|
| }
|
|
|
|
|
|} }""".stripMargin
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains """"id":"20"""") &&
|
|
|
|
|
(s contains """"statusCode":1""")
|
2020-09-17 15:58:14 +02:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-22 11:09:00 +02:00
|
|
|
test("buildTarget/compile: report error") { _ =>
|
|
|
|
|
val x = s"${svr.baseDirectory.getAbsoluteFile.toURI}#reportError/Compile"
|
|
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
s"""{ "jsonrpc": "2.0", "id": "21", "method": "buildTarget/compile", "params": {
|
|
|
|
|
| "targets": [{ "uri": "$x" }]
|
|
|
|
|
|} }""".stripMargin
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains s""""buildTarget":{"uri":"$x"}""") &&
|
|
|
|
|
(s contains """"severity":1""") &&
|
|
|
|
|
(s contains """"reset":true""")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
test("buildTarget/compile: report warning") { _ =>
|
|
|
|
|
val x = s"${svr.baseDirectory.getAbsoluteFile.toURI}#reportWarning/Compile"
|
|
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
s"""{ "jsonrpc": "2.0", "id": "22", "method": "buildTarget/compile", "params": {
|
|
|
|
|
| "targets": [{ "uri": "$x" }]
|
|
|
|
|
|} }""".stripMargin
|
|
|
|
|
)
|
|
|
|
|
assert(svr.waitForString(10.seconds) { s =>
|
|
|
|
|
println(s)
|
|
|
|
|
(s contains s""""buildTarget":{"uri":"$x"}""") &&
|
|
|
|
|
(s contains """"severity":2""") &&
|
|
|
|
|
(s contains """"reset":true""")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2020-02-17 00:01:45 +01:00
|
|
|
def initializeRequest(): Unit = {
|
|
|
|
|
svr.sendJsonRpc(
|
|
|
|
|
"""{ "jsonrpc": "2.0", "id": "10", "method": "build/initialize",
|
|
|
|
|
| "params": {
|
|
|
|
|
| "displayName": "test client",
|
|
|
|
|
| "version": "1.0.0",
|
|
|
|
|
| "bspVersion": "2.0.0-M5",
|
|
|
|
|
| "rootUri": "file://root/",
|
|
|
|
|
| "capabilities": { "languageIds": ["scala"] }
|
|
|
|
|
| }
|
|
|
|
|
|}""".stripMargin
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|