diff --git a/web/server/parser/packageParser.go b/web/server/parser/packageParser.go index 406cc68c..68a482df 100644 --- a/web/server/parser/packageParser.go +++ b/web/server/parser/packageParser.go @@ -50,6 +50,15 @@ func (self *outputParser) separateTestFunctionsAndMetadata() { if self.processNonTestOutput() { break } + // Hack for results from ginkgo tests + lines := strings.Split(self.line, " --- ") + if len(lines) == 2 && len(strings.TrimSpace(lines[0])) > 0 && strings.HasPrefix(lines[1], "PASS") { + self.line = lines[0] + self.processTestOutput() + self.line = "--- " + lines[1] + self.processTestOutput() + continue + } self.processTestOutput() } } diff --git a/web/server/parser/package_parser_test.go b/web/server/parser/package_parser_test.go index 2520bdd8..d9661605 100644 --- a/web/server/parser/package_parser_test.go +++ b/web/server/parser/package_parser_test.go @@ -1068,3 +1068,45 @@ var expectedGolang17Subtests = contract.PackageResult{ }, }, } + +const inputGinkgo_Passes = ` +SUCCESS! -- 12 Passed | 0 Failed | 0 Pending | 0 Skipped --- PASS: TestModels (0.01s) +PASS +ok github.com/smartystreets/goconvey/webserver/examples 3.433s +` + +var expectedGinkgo_Passes = contract.PackageResult{ + PackageName: "github.com/smartystreets/goconvey/webserver/examples", + Elapsed: 3.433, + Outcome: contract.Passed, +} + +func TestParsePackage_GinkgoWithSuccessOutput(t *testing.T) { + actual := &contract.PackageResult{PackageName: expectedGinkgo_Passes.PackageName} + ParsePackageResults(actual, inputGinkgo_Passes) + assertEqual(t, expectedGinkgo_Passes, *actual) +} + +const inputGinkgo_Fails = ` +Summarizing 1 Failure: + +[Fail] main.go GetHostname [It] returns an error if systemInfo.hostname == nil +/Users/joeuser/go/src/github.com/smartystreets/goconvey/webserver/examples/main.go:141 + +Ran 33 of 33 Specs in 0.005 seconds +FAIL! -- 32 Passed | 1 Failed | 0 Pending | 0 Skipped --- FAIL: TestRoutes (0.01s) +FAIL +FAIL github.com/smartystreets/goconvey/webserver/examples 0.810s +` + +var expectedGinkgo_Fails = contract.PackageResult{ + PackageName: "github.com/smartystreets/goconvey/webserver/examples", + Elapsed: 0.810, + Outcome: contract.Failed, +} + +func TestParsePackage_GinkgoWithFailureOutput(t *testing.T) { + actual := &contract.PackageResult{PackageName: expectedGinkgo_Fails.PackageName} + ParsePackageResults(actual, inputGinkgo_Fails) + assertEqual(t, expectedGinkgo_Fails, *actual) +}