third_party/go/src/bitbucket.org/tebeka/go2xunit: update to latest version.
Change-Id: Ica0006286c1c73361e289920d4361e87e32d243f
diff --git a/go/src/bitbucket.org/tebeka/go2xunit/README.google b/go/src/bitbucket.org/tebeka/go2xunit/README.google
index 163c094..0a58e36 100644
--- a/go/src/bitbucket.org/tebeka/go2xunit/README.google
+++ b/go/src/bitbucket.org/tebeka/go2xunit/README.google
@@ -1,5 +1,5 @@
-URL: https://bitbucket.org/tebeka/go2xunit/get/d45000af2242dd0e7b8c7b07d82a1068adc5fd40.zip
-Version: d45000af2242dd0e7b8c7b07d82a1068adc5fd40
+URL: https://bitbucket.org/tebeka/go2xunit/get/1d4e66f4f10963448ee5bf7efb5e27d537811918.zip
+Version: 1d4e66f4f10963448ee5bf7efb5e27d537811918
License: MIT
License File: LICENSE
@@ -10,3 +10,4 @@
Local Modifications:
- fix demo/mmath_test.go
- add +build ignore to demo-gocheck/mmath_test.go to avoid bringing in another dependency
+- add more detailed info on 'orphan' and 'name mismatch' errors.
\ No newline at end of file
diff --git a/go/src/bitbucket.org/tebeka/go2xunit/README.md b/go/src/bitbucket.org/tebeka/go2xunit/README.md
index c761a07..ce46de4 100644
--- a/go/src/bitbucket.org/tebeka/go2xunit/README.md
+++ b/go/src/bitbucket.org/tebeka/go2xunit/README.md
@@ -1,5 +1,7 @@
# go2xunit
+[![Travis](https://travis-ci.org/tebeka/go2xunit.svg?branch=master)](https://travis-ci.org/tebeka/go2xunit)
+
Converts `go test -v` (or `gocheck -vv`) output to xunit or [xunit.net][xnet]
compatible XML output (used in [Jenkins][jenkins]/[Hudson][hudson]).
diff --git a/go/src/bitbucket.org/tebeka/go2xunit/go2xunit.go b/go/src/bitbucket.org/tebeka/go2xunit/go2xunit.go
index efcd717..3a811b9 100644
--- a/go/src/bitbucket.org/tebeka/go2xunit/go2xunit.go
+++ b/go/src/bitbucket.org/tebeka/go2xunit/go2xunit.go
@@ -167,6 +167,26 @@
return false
}
+type LineScanner struct {
+ *bufio.Scanner
+ lnum int
+}
+
+func NewLineScanner(r io.Reader) *LineScanner {
+ scan := bufio.NewScanner(r)
+ return &LineScanner{scan, 0}
+}
+
+func (ls *LineScanner) Scan() bool {
+ val := ls.Scanner.Scan()
+ ls.lnum++
+ return val
+}
+
+func (ls *LineScanner) Line() int {
+ return ls.lnum
+}
+
func gt_Parse(rd io.Reader) ([]*Suite, error) {
find_start := regexp.MustCompile(gt_startRE).FindStringSubmatch
find_end := regexp.MustCompile(gt_endRE).FindStringSubmatch
@@ -203,8 +223,8 @@
return nil
}
- scanner := bufio.NewScanner(rd)
- for lnum := 1; scanner.Scan(); lnum++ {
+ scanner := NewLineScanner(rd)
+ for scanner.Scan() {
line := scanner.Text()
// TODO: Only outside a suite/test, report as empty suite?
@@ -213,7 +233,7 @@
}
if is_buildFailed(line) {
- return nil, fmt.Errorf("%d: package build failed: %s", lnum, line)
+ return nil, fmt.Errorf("%d: package build failed: %s", scanner.Line(), line)
}
if curSuite == nil {
@@ -249,11 +269,11 @@
curSuite = prevSuite
continue
} else {
- return nil, fmt.Errorf("%d: orphan end test", lnum)
+ return nil, fmt.Errorf("%d: orphan end test: %s", scanner.Line(), scanner.Text())
}
}
if tokens[2] != curTest.Name {
- err := fmt.Errorf("%d: name mismatch (try disabling parallel mode)", lnum)
+ err := fmt.Errorf("%d: name mismatch (%s != %s) (try disabling parallel mode): %s", scanner.Line(), tokens[2], curTest.Name, scanner.Text())
return nil, err
}
curTest.Failed = (tokens[1] == "FAIL") || (failOnRace && hasDatarace(out))
@@ -304,7 +324,7 @@
find_end := regexp.MustCompile(gc_endRE).FindStringSubmatch
find_suite := regexp.MustCompile(gc_suiteRE).FindStringSubmatch
- scanner := bufio.NewScanner(rd)
+ scanner := NewLineScanner(rd)
var suites = make([]*Suite, 0)
var suiteName string
var suite *Suite
@@ -312,7 +332,7 @@
var testName string
var out []string
- for lnum := 1; scanner.Scan(); lnum++ {
+ for scanner.Scan() {
line := scanner.Text()
tokens := find_start(line)
@@ -321,7 +341,7 @@
continue
}
if testName != "" {
- return nil, fmt.Errorf("%d: start in middle\n", lnum)
+ return nil, fmt.Errorf("%d: start in middle\n", scanner.Line())
}
suiteName = tokens[1]
testName = tokens[2]
@@ -335,10 +355,10 @@
continue
}
if testName == "" {
- return nil, fmt.Errorf("%d: orphan end", lnum)
+ return nil, fmt.Errorf("%d: orphan end", scanner.Line())
}
if (tokens[2] != suiteName) || (tokens[3] != testName) {
- return nil, fmt.Errorf("%d: suite/name mismatch", lnum)
+ return nil, fmt.Errorf("%d: suite/name mismatch", scanner.Line())
}
test := &Test{Name: testName}
test.Message = strings.Join(out, "\n")