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")