From 8ac4a70f8be13ccf26950d21e2651f6a0e66d737 Mon Sep 17 00:00:00 2001
From: Serge Bazanski <serge@bazanski.pl>
Date: Sat, 23 Jun 2018 16:09:25 +0000
Subject: [PATCH] Really fix coverage tests

---
 .travis.yml                                   |  5 +-
 Gopkg.lock                                    | 18 +++----
 Gopkg.toml                                    |  2 +-
 README.md                                     |  2 +-
 protocols/bgp/server/BUILD.bazel              |  3 ++
 .../{mattn => q3k}/goveralls/.gitignore       |  0
 .../{mattn => q3k}/goveralls/.travis.yml      |  0
 .../{mattn => q3k}/goveralls/BUILD.bazel      |  4 +-
 .../{mattn => q3k}/goveralls/README.md        | 34 ++++++++++++++
 .../{mattn => q3k}/goveralls/gitinfo.go       |  0
 .../{mattn => q3k}/goveralls/gocover.go       | 47 +++++++++++++++++--
 .../{mattn => q3k}/goveralls/goveralls.go     | 20 ++++++++
 12 files changed, 114 insertions(+), 21 deletions(-)
 rename vendor/github.com/{mattn => q3k}/goveralls/.gitignore (100%)
 rename vendor/github.com/{mattn => q3k}/goveralls/.travis.yml (100%)
 rename vendor/github.com/{mattn => q3k}/goveralls/BUILD.bazel (81%)
 rename vendor/github.com/{mattn => q3k}/goveralls/README.md (81%)
 rename vendor/github.com/{mattn => q3k}/goveralls/gitinfo.go (100%)
 rename vendor/github.com/{mattn => q3k}/goveralls/gocover.go (78%)
 rename vendor/github.com/{mattn => q3k}/goveralls/goveralls.go (91%)

diff --git a/.travis.yml b/.travis.yml
index 8285a341..c67caebe 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,8 +22,7 @@ script:
 - mkdir -p $HOME/gopath/src/github.com/bio-routing/
 - ln -s $TRAVIS_BUILD_DIR $HOME/gopath/src/github.com/bio-routing/bio-rd || true
 - cp .bazelrc.travis .bazelrc
-- bazel build //vendor/github.com/mattn/goveralls
-- bazel test //...
 - bazel coverage //...
-- bazel-bin/vendor/github.com/mattn/goveralls/linux_amd64_stripped/goveralls -coverprofile=$(find bazel-testlogs/ -name coverage.dat | paste -sd "," -)
+- bazel build //vendor/github.com/q3k/goveralls
+- bazel-bin/vendor/github.com/q3k/goveralls/linux_amd64_stripped/goveralls -coverprofile=$(find bazel-testlogs/ -iname coverage.dat -or -iname baseline_coverage.dat | paste -sd ',') -merge=false
 
diff --git a/Gopkg.lock b/Gopkg.lock
index 391c901d..81cfd2ac 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -46,7 +46,7 @@
     "gps/internal/pb",
     "gps/paths",
     "gps/pkgtree",
-    "internal/fs"
+    "internal/fs",
   ]
   revision = "37d9ea0ac16f0e0a05afc3b60e1ac8c364b6c329"
   version = "v0.4.1"
@@ -63,12 +63,6 @@
   revision = "8b28145dffc87104e66d074f62ea8080edfad7c8"
   version = "v0.3.0"
 
-[[projects]]
-  name = "github.com/mattn/goveralls"
-  packages = ["."]
-  revision = "b71a1e4855f87991aff01c2c833a75a07059c61c"
-  version = "v0.0.2"
-
 [[projects]]
   branch = "master"
   name = "github.com/nightlyone/lockfile"
@@ -93,6 +87,12 @@
   revision = "792786c7400a136282c1664665ae0a8db921c6c2"
   version = "v1.0.0"
 
+[[projects]]
+  name = "github.com/q3k/goveralls"
+  packages = ["."]
+  revision = "789b29cb81d4de953738cec0fbaefa8af2ff4ea2"
+  version = "v0.1.0"
+
 [[projects]]
   branch = "master"
   name = "github.com/sdboyer/constext"
@@ -140,7 +140,7 @@
   name = "golang.org/x/sys"
   packages = [
     "unix",
-    "windows"
+    "windows",
   ]
   revision = "bb9c189858d91f42db229b04d45a4c3d23a7662a"
 
@@ -153,6 +153,6 @@
 [solve-meta]
   analyzer-name = "dep"
   analyzer-version = 1
-  inputs-digest = "54ddfce69bb4724edb07fa628b5a6ae7a4fb1af7ba00b2a64fe043d967d2fdff"
+  inputs-digest = "8d26786e7bd681598d376675bc030c802da70ac1e285fe39220d11970e1036c4"
   solver-name = "gps-cdcl"
   solver-version = 1
diff --git a/Gopkg.toml b/Gopkg.toml
index b446095b..23dfe410 100644
--- a/Gopkg.toml
+++ b/Gopkg.toml
@@ -19,7 +19,7 @@
 #  name = "github.com/x/y"
 #  version = "2.4.0"
 
-required = ["github.com/golang/dep", "github.com/mattn/goveralls", "github.com/go-yaml/yaml"]
+required = ["github.com/golang/dep", "github.com/q3k/goveralls", "github.com/go-yaml/yaml"]
 
 [prune]
   go-tests = true
diff --git a/README.md b/README.md
index a9efc980..418f544c 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,7 @@ Update vendor/dependencies
 After updating Gopkg.toml, run
 
     bazel build //vendor/github.com/golang/dep/cmd/dep
-    bazel-bin/vendor/github.com/golang/dep/cmd/dep/linux_amd64_stripped/dep
+    bazel-bin/vendor/github.com/golang/dep/cmd/dep/linux_amd64_stripped/dep use
     # hack: dep of dep gives us these, and it breaks gazelle
     rm -rf vendor/github.com/golang/dep/cmd/dep/testdata
     rm -rf vendor/github.com/golang/dep/internal/fs/testdata/symlinks/dir-symlink
diff --git a/protocols/bgp/server/BUILD.bazel b/protocols/bgp/server/BUILD.bazel
index 66889d6c..821b407e 100644
--- a/protocols/bgp/server/BUILD.bazel
+++ b/protocols/bgp/server/BUILD.bazel
@@ -47,9 +47,12 @@ go_test(
     ],
     embed = [":go_default_library"],
     deps = [
+        "//config:go_default_library",
         "//net:go_default_library",
         "//protocols/bgp/packet:go_default_library",
         "//route:go_default_library",
+        "//routingtable:go_default_library",
+        "//routingtable/filter:go_default_library",
         "//routingtable/locRIB:go_default_library",
         "//vendor/github.com/stretchr/testify/assert:go_default_library",
     ],
diff --git a/vendor/github.com/mattn/goveralls/.gitignore b/vendor/github.com/q3k/goveralls/.gitignore
similarity index 100%
rename from vendor/github.com/mattn/goveralls/.gitignore
rename to vendor/github.com/q3k/goveralls/.gitignore
diff --git a/vendor/github.com/mattn/goveralls/.travis.yml b/vendor/github.com/q3k/goveralls/.travis.yml
similarity index 100%
rename from vendor/github.com/mattn/goveralls/.travis.yml
rename to vendor/github.com/q3k/goveralls/.travis.yml
diff --git a/vendor/github.com/mattn/goveralls/BUILD.bazel b/vendor/github.com/q3k/goveralls/BUILD.bazel
similarity index 81%
rename from vendor/github.com/mattn/goveralls/BUILD.bazel
rename to vendor/github.com/q3k/goveralls/BUILD.bazel
index 4ae53dc1..04249c71 100644
--- a/vendor/github.com/mattn/goveralls/BUILD.bazel
+++ b/vendor/github.com/q3k/goveralls/BUILD.bazel
@@ -7,8 +7,8 @@ go_library(
         "gocover.go",
         "goveralls.go",
     ],
-    importmap = "vendor/github.com/mattn/goveralls",
-    importpath = "github.com/mattn/goveralls",
+    importmap = "vendor/github.com/q3k/goveralls",
+    importpath = "github.com/q3k/goveralls",
     visibility = ["//visibility:private"],
     deps = ["//vendor/golang.org/x/tools/cover:go_default_library"],
 )
diff --git a/vendor/github.com/mattn/goveralls/README.md b/vendor/github.com/q3k/goveralls/README.md
similarity index 81%
rename from vendor/github.com/mattn/goveralls/README.md
rename to vendor/github.com/q3k/goveralls/README.md
index bc5608b5..71b513d7 100644
--- a/vendor/github.com/mattn/goveralls/README.md
+++ b/vendor/github.com/q3k/goveralls/README.md
@@ -137,6 +137,40 @@ test:
 
 For more information, See https://coveralls.zendesk.com/hc/en-us/articles/201342809-Go
 
+## Semaphore
+
+Store your Coveralls API token in `Environment Variables`:
+
+```
+COVERALLS_TOKEN=your_token_goes_here
+```
+
+More instructions on how to do this can be found in the [Semaphore documentation](https://semaphoreci.com/docs/exporting-environment-variables.html).
+
+Replace the `go test` line in your `Commands` with these lines:
+
+```
+$ go get github.com/mattn/goveralls
+$ goveralls -service semaphore
+```
+
+`goveralls` automatically use the environment variable `COVERALLS_TOKEN` as the
+default value for `-repotoken`.
+
+You can use the `-v` flag to see verbose output from the test suite:
+
+```
+$ goveralls -v -service semaphore
+```
+
+## Coveralls Enterprise
+
+If you are using Coveralls Enterprise and have a self-signed certificate, you need to skip certificate verification:
+
+```shell
+$ goveralls -insecure
+```
+
 # Authors
 
 * Yasuhiro Matsumoto (a.k.a. mattn)
diff --git a/vendor/github.com/mattn/goveralls/gitinfo.go b/vendor/github.com/q3k/goveralls/gitinfo.go
similarity index 100%
rename from vendor/github.com/mattn/goveralls/gitinfo.go
rename to vendor/github.com/q3k/goveralls/gitinfo.go
diff --git a/vendor/github.com/mattn/goveralls/gocover.go b/vendor/github.com/q3k/goveralls/gocover.go
similarity index 78%
rename from vendor/github.com/mattn/goveralls/gocover.go
rename to vendor/github.com/q3k/goveralls/gocover.go
index dc3ec312..7e841831 100644
--- a/vendor/github.com/mattn/goveralls/gocover.go
+++ b/vendor/github.com/q3k/goveralls/gocover.go
@@ -15,6 +15,7 @@ import (
 	"io/ioutil"
 	"log"
 	"path/filepath"
+	"sort"
 	"strings"
 
 	"golang.org/x/tools/cover"
@@ -63,6 +64,33 @@ func mergeProfs(pfss [][]*cover.Profile) []*cover.Profile {
 	return ret
 }
 
+// joinProfs merges profiles for different target packages.
+func joinProfs(pfss [][]*cover.Profile) []*cover.Profile {
+	// skip empty profiles ([no test files])
+	for i := 0; i < len(pfss); i++ {
+		if len(pfss[i]) > 0 {
+			pfss = pfss[i:]
+			break
+		}
+	}
+	if len(pfss) == 0 {
+		return nil
+	} else if len(pfss) == 1 {
+		return pfss[0]
+	}
+
+	ret := []*cover.Profile{}
+	for _, profiles := range pfss {
+		for _, profile := range profiles {
+			ret = append(ret, profile)
+		}
+	}
+	sort.Slice(ret, func(i, j int) bool {
+		return ret[i].FileName < ret[j].FileName
+	})
+	return ret
+}
+
 func mergeProfBlocks(as, bs []cover.ProfileBlock) []cover.ProfileBlock {
 	if len(as) != len(bs) {
 		log.Fatal("Two block length should be same")
@@ -122,10 +150,19 @@ func parseCover(fn string) ([]*SourceFile, error) {
 		pfss = append(pfss, profs)
 	}
 
-	sourceFiles, err := toSF(mergeProfs(pfss))
-	if err != nil {
-		return nil, err
-	}
+	if *merge {
+		sourceFiles, err := toSF(mergeProfs(pfss))
+		if err != nil {
+			return nil, err
+		}
+
+		return sourceFiles, nil
+	} else {
+		sourceFiles, err := toSF(joinProfs(pfss))
+		if err != nil {
+			return nil, err
+		}
 
-	return sourceFiles, nil
+		return sourceFiles, nil
+	}
 }
diff --git a/vendor/github.com/mattn/goveralls/goveralls.go b/vendor/github.com/q3k/goveralls/goveralls.go
similarity index 91%
rename from vendor/github.com/mattn/goveralls/goveralls.go
rename to vendor/github.com/q3k/goveralls/goveralls.go
index 3be972db..992d1492 100644
--- a/vendor/github.com/mattn/goveralls/goveralls.go
+++ b/vendor/github.com/q3k/goveralls/goveralls.go
@@ -8,6 +8,7 @@ package main
 import (
 	"bytes"
 	_ "crypto/sha512"
+	"crypto/tls"
 	"encoding/json"
 	"errors"
 	"flag"
@@ -54,6 +55,9 @@ var (
 	service    = flag.String("service", "travis-ci", "The CI service or other environment in which the test suite was run. ")
 	shallow    = flag.Bool("shallow", false, "Shallow coveralls internal server errors")
 	ignore     = flag.String("ignore", "", "Comma separated files to ignore")
+	insecure   = flag.Bool("insecure", false, "Set insecure to skip verification of certificates")
+	show       = flag.Bool("show", false, "Show which package is being tested")
+	merge      = flag.Bool("merge", true, "Merge multiple coverage profiles into one")
 )
 
 // usage supplants package flag's Usage variable
@@ -149,6 +153,9 @@ func getCoverage() ([]*SourceFile, error) {
 		args = append(args, line)
 		cmd.Args = args
 
+		if *show {
+			fmt.Println("goveralls:", line)
+		}
 		err = cmd.Run()
 		if err != nil {
 			return nil, fmt.Errorf("%v: %v", err, outBuf.String())
@@ -224,6 +231,13 @@ func process() error {
 	}
 	os.Setenv("PATH", strings.Join(paths, string(filepath.ListSeparator)))
 
+	//
+	// Handle certificate verification configuration
+	//
+	if *insecure {
+		http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
+	}
+
 	//
 	// Initialize Job
 	//
@@ -234,6 +248,10 @@ func process() error {
 		jobId = circleCiJobId
 	} else if appveyorJobId := os.Getenv("APPVEYOR_JOB_ID"); appveyorJobId != "" {
 		jobId = appveyorJobId
+	} else if semaphoreJobId := os.Getenv("SEMAPHORE_BUILD_NUMBER"); semaphoreJobId != "" {
+		jobId = semaphoreJobId
+	} else if jenkinsJobId := os.Getenv("BUILD_NUMBER"); jenkinsJobId != "" {
+		jobId = jenkinsJobId
 	}
 
 	if *repotoken == "" {
@@ -250,6 +268,8 @@ func process() error {
 		pullRequest = regexp.MustCompile(`[0-9]+$`).FindString(prURL)
 	} else if prNumber := os.Getenv("APPVEYOR_PULL_REQUEST_NUMBER"); prNumber != "" {
 		pullRequest = prNumber
+	} else if prNumber := os.Getenv("PULL_REQUEST_NUMBER"); prNumber != "" {
+		pullRequest = prNumber
 	}
 
 	sourceFiles, err := getCoverage()
-- 
GitLab