Skip to content

Commit 183409d

Browse files
committed
Fix scala-js/scala-js#3410: Add supportsExit to JSEnvSuiteConfig.
We also remove terminateVMJSCode. This is a source breaking change. However, leaving withTerminateVMJSCode would not relieve any burden of sub-projects as the Suite would fail anyways.
1 parent ede2024 commit 183409d

File tree

4 files changed

+13
-15
lines changed

4 files changed

+13
-15
lines changed

js-envs-test-kit/src/main/scala/org/scalajs/jsenv/test/ComTests.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ private[test] class ComTests(config: JSEnvSuiteConfig) {
3838

3939
@Test
4040
def jsExitsOnMessageTest: Unit = {
41-
assumeTrue(config.terminateVMJSCode.isDefined)
41+
assumeTrue(config.supportsExit)
4242

43-
val run = kit.start(s"""
44-
scalajsCom.init(function(msg) { ${config.terminateVMJSCode.get}; });
43+
val run = kit.start("""
44+
scalajsCom.init(function(msg) { __ScalaJSEnv.exitFunction(0); });
4545
for (var i = 0; i < 10; ++i)
4646
scalajsCom.send("msg: " + i);
4747
""", RunConfig())

js-envs-test-kit/src/main/scala/org/scalajs/jsenv/test/JSEnvSuiteConfig.scala

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,23 @@ import scala.concurrent.duration._
2626
*/
2727
final class JSEnvSuiteConfig private (
2828
val jsEnv: JSEnv,
29-
val terminateVMJSCode: Option[String],
29+
val supportsExit: Boolean,
3030
val supportsCom: Boolean,
3131
val supportsTimeout: Boolean,
3232
val awaitTimeout: FiniteDuration,
3333
val description: String
3434
) {
3535
private def this(jsEnv: JSEnv) = this(
3636
jsEnv = jsEnv,
37-
terminateVMJSCode = None,
37+
supportsExit = true,
3838
supportsCom = true,
3939
supportsTimeout = true,
4040
awaitTimeout = 1.minute,
4141
description = jsEnv.name
4242
)
4343

44-
def withTerminateVMJSCode(code: String): JSEnvSuiteConfig =
45-
copy(terminateVMJSCode = Some(code))
44+
def withSupportsExit(supportsExit: Boolean): JSEnvSuiteConfig =
45+
copy(supportsExit = supportsExit)
4646

4747
def withSupportsCom(supportsCom: Boolean): JSEnvSuiteConfig =
4848
copy(supportsCom = supportsCom)
@@ -56,12 +56,13 @@ final class JSEnvSuiteConfig private (
5656
def withDescription(description: String): JSEnvSuiteConfig =
5757
copy(description = description)
5858

59-
private def copy(terminateVMJSCode: Option[String] = terminateVMJSCode,
59+
private def copy(
60+
supportsExit: Boolean = supportsExit,
6061
supportsCom: Boolean = supportsCom,
6162
supportsTimeout: Boolean = supportsTimeout,
6263
awaitTimeout: FiniteDuration = awaitTimeout,
6364
description: String = description) = {
64-
new JSEnvSuiteConfig(jsEnv, terminateVMJSCode, supportsCom,
65+
new JSEnvSuiteConfig(jsEnv, supportsExit, supportsCom,
6566
supportsTimeout, awaitTimeout, description)
6667
}
6768
}

js-envs-test-kit/src/main/scala/org/scalajs/jsenv/test/RunTests.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ private[test] class RunTests(config: JSEnvSuiteConfig, withCom: Boolean) {
4444

4545
@Test
4646
def jsExitsTest: Unit = {
47-
assumeTrue(config.terminateVMJSCode.isDefined)
47+
assumeTrue(config.supportsExit)
4848

49-
val run = kit.start(config.terminateVMJSCode.get, RunConfig())
49+
val run = kit.start("__ScalaJSEnv.exitFunction(0);", RunConfig())
5050
try {
5151
Await.result(run.future, config.awaitTimeout)
5252
} finally {

nodejs-env/src/test/scala/org/scalajs/jsenv/nodejs/NodeJSSuite.scala

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,4 @@ import org.scalajs.jsenv.test._
55
import org.junit.runner.RunWith
66

77
@RunWith(classOf[JSEnvSuiteRunner])
8-
class NodeJSSuite extends JSEnvSuite(
9-
JSEnvSuiteConfig(new NodeJSEnv)
10-
.withTerminateVMJSCode("process.exit(0)")
11-
)
8+
class NodeJSSuite extends JSEnvSuite(JSEnvSuiteConfig(new NodeJSEnv))

0 commit comments

Comments
 (0)