mirror of
https://github.com/apple/pkl.git
synced 2026-05-25 16:19:20 +02:00
Introduce "minimal" test reporter (#1563)
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
/*
|
||||
* Copyright © 2026 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.pkl.core.stdlib
|
||||
|
||||
import java.io.StringWriter
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.pkl.core.TestResults
|
||||
import org.pkl.core.TestResults.TestResult
|
||||
import org.pkl.core.TestResults.TestSectionResults
|
||||
import org.pkl.core.stdlib.test.report.MinimalReporter
|
||||
|
||||
class MinimalReportTest {
|
||||
|
||||
@Test
|
||||
fun `report with only passing tests does not show module or test names`() {
|
||||
val resultsBuilder = TestResults.Builder("module1", "module1")
|
||||
resultsBuilder.setFactsSection(
|
||||
TestSectionResults(
|
||||
TestResults.TestSectionName.FACTS,
|
||||
listOf(TestResult("passing fact", 1, emptyList(), emptyList(), false)),
|
||||
)
|
||||
)
|
||||
resultsBuilder.setExamplesSection(
|
||||
TestSectionResults(
|
||||
TestResults.TestSectionName.EXAMPLES,
|
||||
listOf(TestResult("passing example", 1, emptyList(), emptyList(), false)),
|
||||
)
|
||||
)
|
||||
val testResults = resultsBuilder.build()
|
||||
|
||||
val writer = StringWriter()
|
||||
val minimalReport = MinimalReporter(false)
|
||||
minimalReport.report(testResults, writer)
|
||||
|
||||
assertThat(writer.toString()).isEmpty()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `report with failures shows module name and only failed tests`() {
|
||||
val resultsBuilder = TestResults.Builder("module1", "module1")
|
||||
resultsBuilder.setFactsSection(
|
||||
TestSectionResults(
|
||||
TestResults.TestSectionName.FACTS,
|
||||
listOf(
|
||||
TestResult("passing fact", 1, emptyList(), emptyList(), false),
|
||||
TestResult(
|
||||
"failing fact",
|
||||
1,
|
||||
listOf(TestResults.Failure("Fact Failure", "failed")),
|
||||
emptyList(),
|
||||
false,
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
resultsBuilder.setExamplesSection(
|
||||
TestSectionResults(
|
||||
TestResults.TestSectionName.EXAMPLES,
|
||||
listOf(TestResult("passing example", 1, emptyList(), emptyList(), false)),
|
||||
)
|
||||
)
|
||||
val testResults = resultsBuilder.build()
|
||||
|
||||
val writer = StringWriter()
|
||||
val minimalReport = MinimalReporter(false)
|
||||
minimalReport.report(testResults, writer)
|
||||
|
||||
val output = writer.toString()
|
||||
assertThat(output).contains("module module1")
|
||||
assertThat(output).contains("failing fact")
|
||||
assertThat(output).doesNotContain("passing fact")
|
||||
assertThat(output).doesNotContain("passing example")
|
||||
assertThat(output).doesNotContain("examples")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `summarize includes stats even when all tests pass`() {
|
||||
val resultsBuilder = TestResults.Builder("module1", "module1")
|
||||
resultsBuilder.setFactsSection(
|
||||
TestSectionResults(
|
||||
TestResults.TestSectionName.FACTS,
|
||||
listOf(TestResult("passing fact", 1, emptyList(), emptyList(), false)),
|
||||
)
|
||||
)
|
||||
resultsBuilder.setExamplesSection(
|
||||
TestSectionResults(TestResults.TestSectionName.EXAMPLES, emptyList())
|
||||
)
|
||||
val testResults = listOf(resultsBuilder.build())
|
||||
|
||||
val writer = StringWriter()
|
||||
val minimalReport = MinimalReporter(false)
|
||||
minimalReport.summarize(testResults, writer)
|
||||
|
||||
val output = writer.toString()
|
||||
assertThat(output).contains("100.0% tests pass")
|
||||
assertThat(output).contains("1 passed")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `summarize method should generate correct output for failures`() {
|
||||
val resultsBuilder = TestResults.Builder("module1", "module1")
|
||||
resultsBuilder.setFactsSection(
|
||||
TestSectionResults(
|
||||
TestResults.TestSectionName.FACTS,
|
||||
listOf(
|
||||
TestResult(
|
||||
"example1",
|
||||
321919,
|
||||
listOf(TestResults.Failure("Fact Failure", "failed")),
|
||||
emptyList(),
|
||||
false,
|
||||
)
|
||||
),
|
||||
)
|
||||
)
|
||||
resultsBuilder.setExamplesSection(
|
||||
TestSectionResults(
|
||||
TestResults.TestSectionName.EXAMPLES,
|
||||
listOf(
|
||||
TestResult(
|
||||
"example1",
|
||||
432525,
|
||||
listOf(TestResults.Failure("Output Mismatch", "does not match")),
|
||||
emptyList(),
|
||||
false,
|
||||
)
|
||||
),
|
||||
)
|
||||
)
|
||||
val testResults = listOf(resultsBuilder.build())
|
||||
|
||||
val writer = StringWriter()
|
||||
val minimalReport = MinimalReporter(false)
|
||||
minimalReport.summarize(testResults, writer)
|
||||
|
||||
val expectedOutput =
|
||||
"""
|
||||
0.0% tests pass [2/2 failed], 99.9% asserts pass [2/754444 failed]
|
||||
"""
|
||||
.trimIndent()
|
||||
|
||||
assertThat(writer.toString().trimIndent()).isEqualTo(expectedOutput)
|
||||
}
|
||||
}
|
||||
@@ -16,19 +16,18 @@
|
||||
package org.pkl.core.stdlib
|
||||
|
||||
import java.io.StringWriter
|
||||
import java.util.*
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.pkl.core.TestResults
|
||||
import org.pkl.core.TestResults.TestResult
|
||||
import org.pkl.core.TestResults.TestSectionResults
|
||||
import org.pkl.core.stdlib.test.report.SimpleReport
|
||||
import org.pkl.core.stdlib.test.report.SpecReporter
|
||||
|
||||
class SimpleReportTest {
|
||||
|
||||
@Test
|
||||
fun `summarize method should generate correct output`() {
|
||||
var resultsBuilder = TestResults.Builder("module1", "module1")
|
||||
val resultsBuilder = TestResults.Builder("module1", "module1")
|
||||
resultsBuilder.setFactsSection(
|
||||
TestSectionResults(
|
||||
TestResults.TestSectionName.FACTS,
|
||||
@@ -60,7 +59,7 @@ class SimpleReportTest {
|
||||
val testResults = listOf(resultsBuilder.build())
|
||||
|
||||
val writer = StringWriter()
|
||||
val simpleReport = SimpleReport(false)
|
||||
val simpleReport = SpecReporter(false)
|
||||
simpleReport.summarize(testResults, writer)
|
||||
|
||||
val expectedOutput =
|
||||
|
||||
Reference in New Issue
Block a user