mirror of
https://gitlab.com/TECHNOFAB/nixtest.git
synced 2025-12-12 02:00:18 +01:00
chore: display "script" output on failure without diffing
This commit is contained in:
parent
2b7c215ffa
commit
c1ad61b367
3 changed files with 21 additions and 14 deletions
|
|
@ -19,13 +19,12 @@ func printErrors(results Results) {
|
|||
continue
|
||||
}
|
||||
fmt.Println(text.FgRed.Sprintf("⚠ Test \"%s\" failed:", result.Spec.Name))
|
||||
var message string
|
||||
if result.Status == StatusFailure {
|
||||
var message string = result.ErrorMessage
|
||||
// if ErrorMessage is set, prefer that
|
||||
if result.Status == StatusFailure && message == "" {
|
||||
dmp := diffmatchpatch.New()
|
||||
diffs := dmp.DiffMain(result.Expected, result.Actual, false)
|
||||
message = fmt.Sprintf("Diff:\n%s", dmp.DiffPrettyText(diffs))
|
||||
} else {
|
||||
message = result.ErrorMessage
|
||||
}
|
||||
|
||||
// handle multi-line colored changes
|
||||
|
|
|
|||
|
|
@ -88,6 +88,9 @@ func GenerateJUnitReport(name string, results Results) (string, error) {
|
|||
if result.Status == StatusFailure {
|
||||
suite.Failures++
|
||||
report.Failures++
|
||||
if result.ErrorMessage != "" {
|
||||
testCase.Failure = &result.ErrorMessage
|
||||
} else {
|
||||
// FIXME: ComputeEdits deprecated
|
||||
edits := myers.ComputeEdits(result.Expected, result.Actual)
|
||||
diff, err := textdiff.ToUnified("expected", "actual", result.Expected, edits, 3)
|
||||
|
|
@ -97,6 +100,7 @@ func GenerateJUnitReport(name string, results Results) (string, error) {
|
|||
// remove newline hint
|
||||
diff = strings.ReplaceAll(diff, "\\ No newline at end of file\n", "")
|
||||
testCase.Failure = &diff
|
||||
}
|
||||
} else if result.Status == StatusError {
|
||||
suite.Errors++
|
||||
report.Errors++
|
||||
|
|
|
|||
|
|
@ -212,8 +212,12 @@ func runTest(spec TestSpec) TestResult {
|
|||
result.Status = StatusError
|
||||
result.ErrorMessage = fmt.Sprintf("[system] failed to run script: %v", err.Error())
|
||||
}
|
||||
expected = ""
|
||||
actual = fmt.Sprintf("[exit code %d]\n[Stdout]\n%s\n[Stderr]\n%s", exitCode, stdout.String(), stderr.String())
|
||||
if exitCode != 0 {
|
||||
result.Status = StatusFailure
|
||||
result.ErrorMessage = fmt.Sprintf("[exit code %d]\n[stdout]\n%s\n[stderr]\n%s", exitCode, stdout.String(), stderr.String())
|
||||
}
|
||||
// no need for equality checking with "script"
|
||||
goto end
|
||||
} else {
|
||||
log.Panic().Str("type", spec.Type).Msg("Invalid test type")
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue