Skip to content

Commit 9cd9f5d

Browse files
singleton11Space Team
authored andcommitted
[frontend] AMPER-5056 Add support for environment variables in JVM test settings
1 parent 9999fb4 commit 9cd9f5d

File tree

23 files changed

+263
-11
lines changed

23 files changed

+263
-11
lines changed

docs/src/reference/module.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -469,11 +469,12 @@ Values for `selectionMode`:
469469
`settings.jvm.test` configures the test settings on the JVM and Android platforms.
470470
Read more about [testing support](../user-guide/testing.md).
471471

472-
| Value | Description |
473-
|--------------------------------|-----------------------------------------------|
474-
| `junitPlatformVersion: string` | The JUnit platform version used to run tests. |
475-
| `systemProperties: map` | JVM system properties for the test process. |
476-
| `freeJvmArgs: string list` | Free JVM arguments for the test process. |
472+
| Value | Description |
473+
|--------------------------------|--------------------------------------------------|
474+
| `junitPlatformVersion: string` | The JUnit platform version used to run tests. |
475+
| `systemProperties: map` | JVM system properties for the test process. |
476+
| `environmentVariables: map` | Environment variables for the test process. |
477+
| `freeJvmArgs: string list` | Free JVM arguments for the test process. |
477478

478479
### `settings.kotlin`
479480

sources/amper-cli/src/org/jetbrains/amper/tasks/jvm/JvmTestTask.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
2+
* Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
33
*/
44

55
package org.jetbrains.amper.tasks.jvm
@@ -177,6 +177,10 @@ class JvmTestTask(
177177
// the project root is a somewhat safe choice.
178178
val workingDirectory = module.source.moduleDir
179179

180+
val environment = jvmTestSettings.extraEnvironment
181+
.map { (k, v) -> k.value to v.value }
182+
.toMap()
183+
180184
return spanBuilder("junit-platform-console-standalone")
181185
.setAttribute("junit-platform-console-standalone", junitConsole.pathString)
182186
.setAttribute("working-dir", workingDirectory.pathString)
@@ -196,6 +200,7 @@ class JvmTestTask(
196200
programArgs = listOf("execute") + junitArgs,
197201
argsMode = ArgsMode.ArgFile(tempRoot = tempRoot),
198202
jvmArgs = jvmArgs,
203+
environment = environment,
199204
outputListener = PrintToTerminalProcessOutputListener(terminal),
200205
)
201206

sources/frontend-api/src/org/jetbrains/amper/frontend/schema/jvmTestSettings.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ class JvmTestSettings : SchemaNode() {
1616
@SchemaDoc("Pass JVM system properties to set for the test process.")
1717
val systemProperties by value<Map<TraceableString, TraceableString>>(default = emptyMap())
1818

19+
@SchemaDoc("Additional environment variables that should be passed to the test process, in addition to the inherited " +
20+
"system environment. Note: the values passed here take precedence over the inherited environment.")
21+
val extraEnvironment by value<Map<TraceableString, TraceableString>>(default = emptyMap())
22+
1923
@SchemaDoc("Pass any JVM command line arguments to the test process.")
2024
val freeJvmArgs by value<List<String>>(default = emptyList())
2125
}

sources/frontend/schema/testResources/parser/defaults/android-app.result.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ Fragments:
8080
runtimeClasspathMode: <default> jars
8181
storeParameterNames: <default> false
8282
test: <default> {
83+
extraEnvironment: <default> {
84+
}
8385
freeJvmArgs: <default> [
8486
]
8587
junitPlatformVersion: <default> 6.0.1
@@ -247,6 +249,8 @@ Fragments:
247249
runtimeClasspathMode: <default> jars
248250
storeParameterNames: <default> false
249251
test: <default> {
252+
extraEnvironment: <default> {
253+
}
250254
freeJvmArgs: <default> [
251255
]
252256
junitPlatformVersion: <default> 6.0.1

sources/frontend/schema/testResources/parser/defaults/ios-app.result.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ Fragments:
7979
runtimeClasspathMode: <default> jars
8080
storeParameterNames: <default> false
8181
test: <default> {
82+
extraEnvironment: <default> {
83+
}
8284
freeJvmArgs: <default> [
8385
]
8486
junitPlatformVersion: <default> 6.0.1
@@ -246,6 +248,8 @@ Fragments:
246248
runtimeClasspathMode: <default> jars
247249
storeParameterNames: <default> false
248250
test: <default> {
251+
extraEnvironment: <default> {
252+
}
249253
freeJvmArgs: <default> [
250254
]
251255
junitPlatformVersion: <default> 6.0.1
@@ -409,6 +413,8 @@ Fragments:
409413
runtimeClasspathMode: <default> jars
410414
storeParameterNames: <default> false
411415
test: <default> {
416+
extraEnvironment: <default> {
417+
}
412418
freeJvmArgs: <default> [
413419
]
414420
junitPlatformVersion: <default> 6.0.1
@@ -575,6 +581,8 @@ Fragments:
575581
runtimeClasspathMode: <default> jars
576582
storeParameterNames: <default> false
577583
test: <default> {
584+
extraEnvironment: <default> {
585+
}
578586
freeJvmArgs: <default> [
579587
]
580588
junitPlatformVersion: <default> 6.0.1
@@ -739,6 +747,8 @@ Fragments:
739747
runtimeClasspathMode: <default> jars
740748
storeParameterNames: <default> false
741749
test: <default> {
750+
extraEnvironment: <default> {
751+
}
742752
freeJvmArgs: <default> [
743753
]
744754
junitPlatformVersion: <default> 6.0.1
@@ -903,6 +913,8 @@ Fragments:
903913
runtimeClasspathMode: <default> jars
904914
storeParameterNames: <default> false
905915
test: <default> {
916+
extraEnvironment: <default> {
917+
}
906918
freeJvmArgs: <default> [
907919
]
908920
junitPlatformVersion: <default> 6.0.1
@@ -1070,6 +1082,8 @@ Fragments:
10701082
runtimeClasspathMode: <default> jars
10711083
storeParameterNames: <default> false
10721084
test: <default> {
1085+
extraEnvironment: <default> {
1086+
}
10731087
freeJvmArgs: <default> [
10741088
]
10751089
junitPlatformVersion: <default> 6.0.1
@@ -1234,6 +1248,8 @@ Fragments:
12341248
runtimeClasspathMode: <default> jars
12351249
storeParameterNames: <default> false
12361250
test: <default> {
1251+
extraEnvironment: <default> {
1252+
}
12371253
freeJvmArgs: <default> [
12381254
]
12391255
junitPlatformVersion: <default> 6.0.1
@@ -1401,6 +1417,8 @@ Fragments:
14011417
runtimeClasspathMode: <default> jars
14021418
storeParameterNames: <default> false
14031419
test: <default> {
1420+
extraEnvironment: <default> {
1421+
}
14041422
freeJvmArgs: <default> [
14051423
]
14061424
junitPlatformVersion: <default> 6.0.1
@@ -1568,6 +1586,8 @@ Fragments:
15681586
runtimeClasspathMode: <default> jars
15691587
storeParameterNames: <default> false
15701588
test: <default> {
1589+
extraEnvironment: <default> {
1590+
}
15711591
freeJvmArgs: <default> [
15721592
]
15731593
junitPlatformVersion: <default> 6.0.1
@@ -1732,6 +1752,8 @@ Fragments:
17321752
runtimeClasspathMode: <default> jars
17331753
storeParameterNames: <default> false
17341754
test: <default> {
1755+
extraEnvironment: <default> {
1756+
}
17351757
freeJvmArgs: <default> [
17361758
]
17371759
junitPlatformVersion: <default> 6.0.1
@@ -1899,6 +1921,8 @@ Fragments:
18991921
runtimeClasspathMode: <default> jars
19001922
storeParameterNames: <default> false
19011923
test: <default> {
1924+
extraEnvironment: <default> {
1925+
}
19021926
freeJvmArgs: <default> [
19031927
]
19041928
junitPlatformVersion: <default> 6.0.1
@@ -2063,6 +2087,8 @@ Fragments:
20632087
runtimeClasspathMode: <default> jars
20642088
storeParameterNames: <default> false
20652089
test: <default> {
2090+
extraEnvironment: <default> {
2091+
}
20662092
freeJvmArgs: <default> [
20672093
]
20682094
junitPlatformVersion: <default> 6.0.1
@@ -2230,6 +2256,8 @@ Fragments:
22302256
runtimeClasspathMode: <default> jars
22312257
storeParameterNames: <default> false
22322258
test: <default> {
2259+
extraEnvironment: <default> {
2260+
}
22332261
freeJvmArgs: <default> [
22342262
]
22352263
junitPlatformVersion: <default> 6.0.1

sources/frontend/schema/testResources/parser/defaults/js-app.result.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ Fragments:
7878
runtimeClasspathMode: <default> jars
7979
storeParameterNames: <default> false
8080
test: <default> {
81+
extraEnvironment: <default> {
82+
}
8183
freeJvmArgs: <default> [
8284
]
8385
junitPlatformVersion: <default> 6.0.1
@@ -244,6 +246,8 @@ Fragments:
244246
runtimeClasspathMode: <default> jars
245247
storeParameterNames: <default> false
246248
test: <default> {
249+
extraEnvironment: <default> {
250+
}
247251
freeJvmArgs: <default> [
248252
]
249253
junitPlatformVersion: <default> 6.0.1
@@ -408,6 +412,8 @@ Fragments:
408412
runtimeClasspathMode: <default> jars
409413
storeParameterNames: <default> false
410414
test: <default> {
415+
extraEnvironment: <default> {
416+
}
411417
freeJvmArgs: <default> [
412418
]
413419
junitPlatformVersion: <default> 6.0.1
@@ -575,6 +581,8 @@ Fragments:
575581
runtimeClasspathMode: <default> jars
576582
storeParameterNames: <default> false
577583
test: <default> {
584+
extraEnvironment: <default> {
585+
}
578586
freeJvmArgs: <default> [
579587
]
580588
junitPlatformVersion: <default> 6.0.1
@@ -739,6 +747,8 @@ Fragments:
739747
runtimeClasspathMode: <default> jars
740748
storeParameterNames: <default> false
741749
test: <default> {
750+
extraEnvironment: <default> {
751+
}
742752
freeJvmArgs: <default> [
743753
]
744754
junitPlatformVersion: <default> 6.0.1
@@ -906,6 +916,8 @@ Fragments:
906916
runtimeClasspathMode: <default> jars
907917
storeParameterNames: <default> false
908918
test: <default> {
919+
extraEnvironment: <default> {
920+
}
909921
freeJvmArgs: <default> [
910922
]
911923
junitPlatformVersion: <default> 6.0.1

sources/frontend/schema/testResources/parser/defaults/jvm-amper-plugin.result.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ Fragments:
7979
runtimeClasspathMode: <default> jars
8080
storeParameterNames: <default> false
8181
test: <default> {
82+
extraEnvironment: <default> {
83+
}
8284
freeJvmArgs: <default> [
8385
]
8486
junitPlatformVersion: <default> 6.0.1
@@ -245,6 +247,8 @@ Fragments:
245247
runtimeClasspathMode: <default> jars
246248
storeParameterNames: <default> false
247249
test: <default> {
250+
extraEnvironment: <default> {
251+
}
248252
freeJvmArgs: <default> [
249253
]
250254
junitPlatformVersion: <default> 6.0.1

sources/frontend/schema/testResources/parser/defaults/jvm-app.result.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ Fragments:
7878
runtimeClasspathMode: <default> jars
7979
storeParameterNames: <default> false
8080
test: <default> {
81+
extraEnvironment: <default> {
82+
}
8183
freeJvmArgs: <default> [
8284
]
8385
junitPlatformVersion: <default> 6.0.1
@@ -243,6 +245,8 @@ Fragments:
243245
runtimeClasspathMode: <default> jars
244246
storeParameterNames: <default> false
245247
test: <default> {
248+
extraEnvironment: <default> {
249+
}
246250
freeJvmArgs: <default> [
247251
]
248252
junitPlatformVersion: <default> 6.0.1

sources/frontend/schema/testResources/parser/defaults/jvm-lib.result.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ Fragments:
7878
runtimeClasspathMode: <default> jars
7979
storeParameterNames: <default> false
8080
test: <default> {
81+
extraEnvironment: <default> {
82+
}
8183
freeJvmArgs: <default> [
8284
]
8385
junitPlatformVersion: <default> 6.0.1
@@ -243,6 +245,8 @@ Fragments:
243245
runtimeClasspathMode: <default> jars
244246
storeParameterNames: <default> false
245247
test: <default> {
248+
extraEnvironment: <default> {
249+
}
246250
freeJvmArgs: <default> [
247251
]
248252
junitPlatformVersion: <default> 6.0.1

0 commit comments

Comments
 (0)