Jelajahi Sumber

Do honest test coverage analysis in Jenkins

Jakob Borg 11 tahun lalu
induk
melakukan
c57656e4c3
9 mengubah file dengan 51 tambahan dan 2 penghapusan
  1. 1 0
      .gitignore
  2. 0 1
      README.md
  3. 7 0
      auto/auto_test.go
  4. 0 1
      build.go
  5. 15 0
      build.sh
  6. 7 0
      cmd/syncthing/main_test.go
  7. 7 0
      discover/discover_test.go
  8. 7 0
      osutil/osutil_test.go
  9. 7 0
      versioner/versioner_test.go

+ 1 - 0
.gitignore

@@ -9,3 +9,4 @@ coverage.out
 files/pidx
 bin
 perfstats*.csv
+coverage.xml

+ 0 - 1
README.md

@@ -2,7 +2,6 @@ syncthing
 =========
 
 [![Latest Build](http://img.shields.io/jenkins/s/http/build.syncthing.net/syncthing.svg?style=flat-square)](http://build.syncthing.net/job/syncthing/lastSuccessfulBuild/artifact/)
-[![Coverage Status](https://img.shields.io/coveralls/syncthing/syncthing.svg?style=flat-square)](https://coveralls.io/r/syncthing/syncthing?branch=master)
 [![API Documentation](http://img.shields.io/badge/api-Godoc-blue.svg?style=flat-square)](http://godoc.org/github.com/syncthing/syncthing)
 [![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](http://opensource.org/licenses/MIT)
 

+ 7 - 0
auto/auto_test.go

@@ -0,0 +1,7 @@
+// Copyright (C) 2014 Jakob Borg and Contributors (see the CONTRIBUTORS file).
+// All rights reserved. Use of this source code is governed by an MIT-style
+// license that can be found in the LICENSE file.
+
+package auto_test
+
+// Empty test file to generate 0% coverage rather than no coverage

+ 0 - 1
build.go

@@ -149,7 +149,6 @@ func setup() {
 	runPrint("go", "get", "-v", "code.google.com/p/go.tools/cmd/cover")
 	runPrint("go", "get", "-v", "code.google.com/p/go.tools/cmd/vet")
 	runPrint("go", "get", "-v", "code.google.com/p/go.net/html")
-	runPrint("go", "get", "-v", "github.com/mattn/goveralls")
 	runPrint("go", "get", "-v", "github.com/tools/godep")
 }
 

+ 15 - 0
build.sh

@@ -66,16 +66,31 @@ case "${1:-default}" in
 		;;
 
 	test-cov)
+		go get github.com/axw/gocov/gocov
+		go get github.com/AlekSi/gocov-xml
+
 		echo "mode: set" > coverage.out
 		fail=0
 
+		# For every package in the repo
 		for dir in $(go list ./...) ; do
+			# run the tests
 			godep go test -coverprofile=profile.out $dir
 			if [ -f profile.out ] ; then
+				# and if there was test output, append it to coverage.out
 				grep -v "mode: set" profile.out >> coverage.out
 				rm profile.out
 			fi
 		done
+
+		gocov convert coverage.out | gocov-xml > coverage.xml
+
+		# This is usually run from within Jenkins. If it is, we need to
+		# tweak the paths in coverage.xml so cobertura finds the
+		# source.
+		if [[ "${WORKSPACE:-default}" != "default" ]] ; then
+			sed "s#$WORKSPACE##g" < coverage.xml > coverage.xml.new && mv coverage.xml.new coverage.xml
+		fi
 		;;
 
 	*)

+ 7 - 0
cmd/syncthing/main_test.go

@@ -0,0 +1,7 @@
+// Copyright (C) 2014 Jakob Borg and Contributors (see the CONTRIBUTORS file).
+// All rights reserved. Use of this source code is governed by an MIT-style
+// license that can be found in the LICENSE file.
+
+package main_test
+
+// Empty test file to generate 0% coverage rather than no coverage

+ 7 - 0
discover/discover_test.go

@@ -0,0 +1,7 @@
+// Copyright (C) 2014 Jakob Borg and Contributors (see the CONTRIBUTORS file).
+// All rights reserved. Use of this source code is governed by an MIT-style
+// license that can be found in the LICENSE file.
+
+package discover_test
+
+// Empty test file to generate 0% coverage rather than no coverage

+ 7 - 0
osutil/osutil_test.go

@@ -0,0 +1,7 @@
+// Copyright (C) 2014 Jakob Borg and Contributors (see the CONTRIBUTORS file).
+// All rights reserved. Use of this source code is governed by an MIT-style
+// license that can be found in the LICENSE file.
+
+package osutil_test
+
+// Empty test file to generate 0% coverage rather than no coverage

+ 7 - 0
versioner/versioner_test.go

@@ -0,0 +1,7 @@
+// Copyright (C) 2014 Jakob Borg and Contributors (see the CONTRIBUTORS file).
+// All rights reserved. Use of this source code is governed by an MIT-style
+// license that can be found in the LICENSE file.
+
+package versioner_test
+
+// Empty test file to generate 0% coverage rather than no coverage