Skip to content

Commit 467e64f

Browse files
authored
Make Test Report locale independent (#868)
Format numbers with `.` decimals
1 parent d9c65d4 commit 467e64f

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

pkl-cli/src/test/kotlin/org/pkl/cli/CliTestRunnerTest.kt

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import java.io.StringWriter
2121
import java.io.Writer
2222
import java.net.URI
2323
import java.nio.file.Path
24+
import java.util.Locale
2425
import org.assertj.core.api.Assertions.assertThat
2526
import org.assertj.core.api.Assertions.assertThatCode
2627
import org.junit.jupiter.api.Test
@@ -487,6 +488,50 @@ class CliTestRunnerTest {
487488
)
488489
}
489490

491+
@Test
492+
fun `CliTestRunner locale independence test`(@TempDir tempDir: Path) {
493+
val originalLocale = Locale.getDefault()
494+
Locale.setDefault(Locale.GERMANY)
495+
496+
try {
497+
val code =
498+
"""
499+
amends "pkl:test"
500+
501+
facts {
502+
["localeTest"] {
503+
1 == 1
504+
}
505+
}
506+
"""
507+
.trimIndent()
508+
val input = tempDir.resolve("test.pkl").writeString(code).toString()
509+
val out = StringWriter()
510+
val err = StringWriter()
511+
val opts =
512+
CliBaseOptions(sourceModules = listOf(input.toUri()), settings = URI("pkl:settings"))
513+
val testOpts = CliTestOptions()
514+
val runner = CliTestRunner(opts, testOpts, consoleWriter = out, errWriter = err)
515+
runner.run()
516+
517+
assertThat(out.toString().stripFileAndLines(tempDir))
518+
.isEqualTo(
519+
"""
520+
module test
521+
facts
522+
✔ localeTest
523+
524+
100.0% tests pass [1 passed], 100.0% asserts pass [1 passed]
525+
526+
"""
527+
.trimIndent()
528+
)
529+
assertThat(err.toString()).isEqualTo("")
530+
} finally {
531+
Locale.setDefault(originalLocale)
532+
}
533+
}
534+
490535
private fun String.stripFileAndLines(tmpDir: Path): String {
491536
// handle platform differences in handling of file URIs
492537
// (file:/// on *nix vs. file:/ on Windows)

pkl-core/src/main/java/org/pkl/core/stdlib/test/report/SimpleReport.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.io.IOException;
1919
import java.io.Writer;
2020
import java.util.List;
21+
import java.util.Locale;
2122
import java.util.stream.Collectors;
2223
import org.pkl.core.TestResults;
2324
import org.pkl.core.TestResults.TestResult;
@@ -144,7 +145,10 @@ private void makeStatsLine(
144145
sb.append(
145146
color,
146147
() ->
147-
sb.append(String.format("%.1f%%", passRate)).append(" ").append(kind).append(" pass"));
148+
sb.append(String.format(Locale.ROOT, "%.1f%%", passRate))
149+
.append(" ")
150+
.append(kind)
151+
.append(" pass"));
148152

149153
if (isFailed) {
150154
sb.append(" [").append(failed).append('/').append(total).append(" failed]");

0 commit comments

Comments
 (0)