From a313928be2fc733de8d09906c702386a2357c4ca Mon Sep 17 00:00:00 2001 From: Marty Schoch Date: Fri, 21 Nov 2014 14:02:17 -0500 Subject: [PATCH] adding scripts for new code coverage --- docs/merge-coverprofile.go | 45 ++++++++++++++++++++++++++++++++++ docs/project-code-coverage.sh | 46 +++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 docs/merge-coverprofile.go create mode 100755 docs/project-code-coverage.sh diff --git a/docs/merge-coverprofile.go b/docs/merge-coverprofile.go new file mode 100644 index 00000000..8663d2ce --- /dev/null +++ b/docs/merge-coverprofile.go @@ -0,0 +1,45 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +func main() { + + modeline := "" + blocks := map[string]int{} + scanner := bufio.NewScanner(os.Stdin) + for scanner.Scan() { + line := scanner.Text() + if !strings.HasPrefix(line, "mode:") { + lastSpace := strings.LastIndex(line, " ") + prefix := line[0:lastSpace] + suffix := line[lastSpace+1:] + count, err := strconv.Atoi(suffix) + if err != nil { + fmt.Errorf("error parsing count: %v", err) + continue + } + existingCount, exists := blocks[prefix] + if exists { + blocks[prefix] = existingCount + count + } else { + blocks[prefix] = count + } + } else if modeline == "" { + modeline = line + } + } + if err := scanner.Err(); err != nil { + fmt.Fprintln(os.Stderr, "reading standard input:", err) + } + + fmt.Println(modeline) + for k, v := range blocks { + fmt.Printf("%s %d\n", k, v) + } +} diff --git a/docs/project-code-coverage.sh b/docs/project-code-coverage.sh new file mode 100755 index 00000000..9a2791bc --- /dev/null +++ b/docs/project-code-coverage.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +echo "mode: count" > acc.out +for Dir in . $(find ./* -maxdepth 10 -type d ); +do + if ls $Dir/*.go &> /dev/null; + then + returnval=`go test -coverprofile=profile.out -covermode=count $Dir` + echo ${returnval} + if [[ ${returnval} != *FAIL* ]] + then + if [ -f profile.out ] + then + cat profile.out | grep -v "mode: count" >> acc.out + fi + else + exit 1 + fi + fi +done + +# collect integration test coverage +echo "mode: count" > integration-acc.out +INTPACKS=`go list ./... | grep -v utils | xargs | sed 's/ /,/g'` +returnval=`go test -coverpkg=$INTPACKS -coverprofile=profile.out -covermode=count ./test` +if [[ ${returnval} != *FAIL* ]] +then + if [ -f profile.out ] + then + cat profile.out | grep -v "mode: count" >> integration-acc.out + fi +else + exit 1 +fi + +cat acc.out integration-acc.out | go run docs/merge-coverprofile.go > merged.out + +if [ -n "$COVERALLS" ] +then + goveralls -service drone.io -coverprofile=merged.out -repotoken $COVERALLS +fi + +rm -rf ./profile.out +rm -rf ./acc.out +rm -rf ./integration-acc.out +rm -rf ./merged.out \ No newline at end of file