mirror of
https://github.com/apple/pkl.git
synced 2026-01-11 22:30:54 +01:00
Add test for colour outputs
Test two error conditions that cover all current colour outputs.
This commit is contained in:
committed by
Philip K.F. Hölzenspies
parent
0d7b95d3ff
commit
3659ad8b7a
54
pkl-core/src/test/kotlin/org/pkl/core/ErrorColoringTest.kt
Normal file
54
pkl-core/src/test/kotlin/org/pkl/core/ErrorColoringTest.kt
Normal file
@@ -0,0 +1,54 @@
|
||||
package org.pkl.core
|
||||
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.fusesource.jansi.Ansi
|
||||
import org.junit.jupiter.api.*
|
||||
|
||||
class ErrorColoringTest {
|
||||
companion object {
|
||||
val evaluator by lazy { Evaluator.preconfigured() }
|
||||
|
||||
@AfterAll
|
||||
@JvmStatic
|
||||
fun afterAll() {
|
||||
evaluator.close()
|
||||
}
|
||||
}
|
||||
|
||||
private fun evaluate(program: String, expression: String): Any {
|
||||
return evaluator.evaluateExpression(ModuleSource.text(program), expression)
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
// Enable colouring before each test
|
||||
Ansi.setEnabled(true)
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
fun teardown() {
|
||||
// Disable colouring after each test
|
||||
Ansi.setEnabled(false)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `simple error`() {
|
||||
val error = assertThrows<PklException> { evaluate("bar = 2", "bar = 15") }
|
||||
|
||||
assertThat(error).message()
|
||||
.contains("\u001B[31m–– Pkl Error ––\u001B[m")
|
||||
.contains("\u001B[94m1 | \u001B[m")
|
||||
.contains("\u001B[0;31m^")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `repeated error`() {
|
||||
val error = assertThrows<PklException> { evaluate("""self: String = "Strings; if they were lazy, you could tie the knot on \(self.take(7))"""", "self") }
|
||||
assertThat(error).message()
|
||||
.contains("[91mA stack overflow occurred.[m")
|
||||
.contains("[93m┌─ [0;1;35m")
|
||||
.contains("[m repetitions of:")
|
||||
.contains("[93m│ [94m1 | [m")
|
||||
.contains("[0;31m^^^^[m")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user