failures not counted correctly in some cases.

Summary output added.
This commit is contained in:
Erik Brakkee 2024-12-13 22:24:18 +01:00
parent 0a4ed3a95f
commit b71e4db7db
4 changed files with 56 additions and 15 deletions

View File

@ -128,4 +128,33 @@ func main() {
} }
} }
fmt.Printf("\n\nSUMMARY\n\n")
fmt.Printf("%-60s %-10s %-10s %-10s %-10s %-10s %-10s\n\n", "SUITE", "COUNT", "PASSED", "FAILURES", "ERRORS", "DISABLED", "SKIPPED")
for _, suite := range testsuites.Suites {
fmt.Printf("%-60s %-10d %-10d %-10d %-10d %-10d %-10d\n",
suite.Name,
suite.TestCount,
suite.TestCount-suite.Failures-suite.Errors-suite.Skipped-suite.Disabled,
suite.Failures, suite.Errors, suite.Disabled, suite.Skipped)
}
fmt.Printf("\n%-60s %-10d %-10d %-10d %-10d %-10d %-10d\n",
"TOTAL",
testsuites.Tests,
testsuites.Tests-testsuites.Failures-testsuites.Errors-testsuites.Skipped-testsuites.Disabled,
testsuites.Failures, testsuites.Errors, testsuites.Disabled, testsuites.Skipped)
if testsuites.Failures+testsuites.Errors+testsuites.Skipped+testsuites.Disabled > 0 {
fmt.Printf("\nFAILED TESTS\n\n")
printFailedTests("", "", testsuites.Suites)
}
}
func printFailedTests(indent string, parentTest string, tests []*Test) {
for _, test := range tests {
if test.Failures > 0 {
testName := strings.TrimPrefix(test.Name, parentTest+"/")
fmt.Printf("%s%s\n", indent, testName)
printFailedTests(indent+" ", test.Name, test.Tests)
}
}
} }

View File

@ -39,6 +39,7 @@ type Test struct {
Tests []*Test `xml:"testsuite,omitempty"` Tests []*Test `xml:"testsuite,omitempty"`
SystemOut string `xml:"system-out,omitempty"` SystemOut string `xml:"system-out,omitempty"`
hasTests bool
parent *Test parent *Test
t0 time.Time t0 time.Time
} }
@ -121,7 +122,8 @@ func (testsuites *Testsuites) Start(t time.Time, pkg string) {
func (testsuites *Testsuites) Test(t time.Time, pkg string, test string) { func (testsuites *Testsuites) Test(t time.Time, pkg string, test string) {
// This can be a test suite as well // This can be a test suite as well
testsuites.getTest(t, pkg, test) testobj := testsuites.getTest(t, pkg, test)
testobj.hasTests = true
} }
func (testsuites *Testsuites) Output(t time.Time, pkg string, test string, output string) { func (testsuites *Testsuites) Output(t time.Time, pkg string, test string, output string) {
@ -153,12 +155,14 @@ func (testsuites *Testsuites) Skip(t time.Time, pkg string, test string) {
func (suite *Test) Complete() { func (suite *Test) Complete() {
suite.TestCount = 0 suite.TestCount = 0
if len(suite.Tests) > 0 {
suite.Failures = 0 suite.Failures = 0
suite.Errors = 0 suite.Errors = 0
suite.Disabled = 0 suite.Disabled = 0
suite.Skipped = 0 suite.Skipped = 0
}
if len(suite.Tests) == 0 { if len(suite.Tests) == 0 && suite.hasTests {
suite.TestCount = 1 suite.TestCount = 1
} }

View File

@ -6,7 +6,7 @@ func main() {
module.GenerateLicenseNames() module.GenerateLicenseNames()
module.DumpOverview() module.DumpOverview()
module.DumpText() module.DumpText(true)
} }
func truncateString(s string, length int) string { func truncateString(s string, length int) string {

View File

@ -4,6 +4,7 @@ import (
"crypto/sha512" "crypto/sha512"
"encoding/base64" "encoding/base64"
"fmt" "fmt"
"log"
"os" "os"
"path/filepath" "path/filepath"
"sort" "sort"
@ -89,7 +90,11 @@ func NewModule(modules []ModuleDependency) *Module {
if mod.Dir == "" { if mod.Dir == "" {
continue // Skip modules without local copies continue // Skip modules without local copies
} }
license := module.findLicense(mod.Dir) license, err := module.findLicense(mod.Dir)
if err != nil {
log.Printf("ERROR: %v", err)
continue
}
module.Licenses[hash(license.Text)] = license module.Licenses[hash(license.Text)] = license
dependency := NewDependency(mod.Path, mod.Version, !mod.Indirect, license) dependency := NewDependency(mod.Path, mod.Version, !mod.Indirect, license)
module.Dependencies = append(module.Dependencies, dependency) module.Dependencies = append(module.Dependencies, dependency)
@ -138,8 +143,11 @@ func (module Module) DumpOverview() {
} }
} }
func (module Module) DumpText() { func (module Module) DumpText(directOnly bool) {
for _, dependency := range module.Dependencies { for _, dependency := range module.Dependencies {
if directOnly && !dependency.Direct {
continue
}
fmt.Println(strings.Repeat("=", 80)) fmt.Println(strings.Repeat("=", 80))
if dependency.Direct { if dependency.Direct {
fmt.Printf("Direct dependency") fmt.Printf("Direct dependency")
@ -152,7 +160,7 @@ func (module Module) DumpText() {
} }
} }
func (module *Module) findLicense(dir string) *License { func (module *Module) findLicense(dir string) (*License, error) {
licenseFiles := []string{ licenseFiles := []string{
"LICENSE", "LICENSE",
"LICENSE.txt", "LICENSE.txt",
@ -174,12 +182,12 @@ func (module *Module) findLicense(dir string) *License {
hashcode := hash(content) hashcode := hash(content)
license := module.Licenses[hashcode] license := module.Licenses[hashcode]
if license != nil { if license != nil {
return license return license, nil
} }
return NewLicense(content) return NewLicense(content), nil
} }
} }
} }
} }
return nil return nil, fmt.Errorf("No license found in '%s'", dir)
} }