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
|
continue
|
||||||
}
|
}
|
||||||
fmt.Println(text.FgRed.Sprintf("⚠ Test \"%s\" failed:", result.Spec.Name))
|
fmt.Println(text.FgRed.Sprintf("⚠ Test \"%s\" failed:", result.Spec.Name))
|
||||||
var message string
|
var message string = result.ErrorMessage
|
||||||
if result.Status == StatusFailure {
|
// if ErrorMessage is set, prefer that
|
||||||
|
if result.Status == StatusFailure && message == "" {
|
||||||
dmp := diffmatchpatch.New()
|
dmp := diffmatchpatch.New()
|
||||||
diffs := dmp.DiffMain(result.Expected, result.Actual, false)
|
diffs := dmp.DiffMain(result.Expected, result.Actual, false)
|
||||||
message = fmt.Sprintf("Diff:\n%s", dmp.DiffPrettyText(diffs))
|
message = fmt.Sprintf("Diff:\n%s", dmp.DiffPrettyText(diffs))
|
||||||
} else {
|
|
||||||
message = result.ErrorMessage
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle multi-line colored changes
|
// handle multi-line colored changes
|
||||||
|
|
|
||||||
|
|
@ -88,15 +88,19 @@ func GenerateJUnitReport(name string, results Results) (string, error) {
|
||||||
if result.Status == StatusFailure {
|
if result.Status == StatusFailure {
|
||||||
suite.Failures++
|
suite.Failures++
|
||||||
report.Failures++
|
report.Failures++
|
||||||
// FIXME: ComputeEdits deprecated
|
if result.ErrorMessage != "" {
|
||||||
edits := myers.ComputeEdits(result.Expected, result.Actual)
|
testCase.Failure = &result.ErrorMessage
|
||||||
diff, err := textdiff.ToUnified("expected", "actual", result.Expected, edits, 3)
|
} else {
|
||||||
if err != nil {
|
// FIXME: ComputeEdits deprecated
|
||||||
return "", err
|
edits := myers.ComputeEdits(result.Expected, result.Actual)
|
||||||
|
diff, err := textdiff.ToUnified("expected", "actual", result.Expected, edits, 3)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
// remove newline hint
|
||||||
|
diff = strings.ReplaceAll(diff, "\\ No newline at end of file\n", "")
|
||||||
|
testCase.Failure = &diff
|
||||||
}
|
}
|
||||||
// remove newline hint
|
|
||||||
diff = strings.ReplaceAll(diff, "\\ No newline at end of file\n", "")
|
|
||||||
testCase.Failure = &diff
|
|
||||||
} else if result.Status == StatusError {
|
} else if result.Status == StatusError {
|
||||||
suite.Errors++
|
suite.Errors++
|
||||||
report.Errors++
|
report.Errors++
|
||||||
|
|
|
||||||
|
|
@ -212,8 +212,12 @@ func runTest(spec TestSpec) TestResult {
|
||||||
result.Status = StatusError
|
result.Status = StatusError
|
||||||
result.ErrorMessage = fmt.Sprintf("[system] failed to run script: %v", err.Error())
|
result.ErrorMessage = fmt.Sprintf("[system] failed to run script: %v", err.Error())
|
||||||
}
|
}
|
||||||
expected = ""
|
if exitCode != 0 {
|
||||||
actual = fmt.Sprintf("[exit code %d]\n[Stdout]\n%s\n[Stderr]\n%s", exitCode, stdout.String(), stderr.String())
|
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 {
|
} else {
|
||||||
log.Panic().Str("type", spec.Type).Msg("Invalid test type")
|
log.Panic().Str("type", spec.Type).Msg("Invalid test type")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue