Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavlo Strokov <pstrokov@gitlab.com>2020-02-13 10:04:52 +0300
committerPavlo Strokov <pstrokov@gitlab.com>2020-02-13 10:04:52 +0300
commit34c588ee489028eec3edae16acf85f74e527a35d (patch)
tree13304f15ffbd44974b41cac1d5a5ce611dbb6a4f
parente97d8fd8a43b5d826eb0ee180a405fe207acd2be (diff)
parentac4ca9e1cfbe21740dcbf8fc29735c11e7ebc6d9 (diff)
Merge branch 'jv-remove-coverage-merging' into 'master'
Remove manual test coverage merging See merge request gitlab-org/gitaly!1821
-rw-r--r--_support/Makefile.template10
-rw-r--r--_support/makegen.go1
-rw-r--r--_support/test-cover-parallel.go110
3 files changed, 3 insertions, 118 deletions
diff --git a/_support/Makefile.template b/_support/Makefile.template
index 066ec4d96..320ac02c8 100644
--- a/_support/Makefile.template
+++ b/_support/Makefile.template
@@ -234,21 +234,17 @@ rubocop: ../.ruby-bundle
cd {{ .GitalyRubyDir }} && bundle exec rubocop --parallel
.PHONY: cover
-cover: prepare-tests {{ .GoCovMerge }}
+cover: prepare-tests
@echo "NOTE: make cover does not exit 1 on failure, don't use it to check for tests success!"
mkdir -p "{{ .CoverageDir }}"
- rm -f {{ .CoverageDir }}/*.out "{{ .CoverageDir }}/all.merged" "{{ .CoverageDir }}/all.html"
- @cd {{ .SourceDir }} && go run _support/test-cover-parallel.go {{ .CoverageDir }} {{ join .AllPackages " " }}
- {{ .GoCovMerge }} {{ .CoverageDir }}/*.out > "{{ .CoverageDir }}/all.merged"
+ rm -f "{{ .CoverageDir }}/all.merged" "{{ .CoverageDir }}/all.html"
+ @cd {{ .SourceDir }} && go test -coverprofile "{{ .CoverageDir }}/all.merged" {{ join .AllPackages " " }}
@cd {{ .SourceDir }} && go tool cover -html "{{ .CoverageDir }}/all.merged" -o "{{ .CoverageDir }}/all.html"
@echo ""
@echo "=====> Total test coverage: <====="
@echo ""
@@cd {{ .SourceDir }} && go tool cover -func "{{ .CoverageDir }}/all.merged"
-{{ .GoCovMerge }}:
- go get github.com/wadey/gocovmerge@b5bfa59ec0adc420475f97f89b58045c721d761c
-
.PHONY: docker
docker:
rm -rf docker/
diff --git a/_support/makegen.go b/_support/makegen.go
index ab836951c..8d0a4d510 100644
--- a/_support/makegen.go
+++ b/_support/makegen.go
@@ -73,7 +73,6 @@ func (gm *gitalyMake) BuildDir() string {
func (gm *gitalyMake) Pkg() string { return "gitlab.com/gitlab-org/gitaly" }
func (gm *gitalyMake) GoImports() string { return "bin/goimports" }
func (gm *gitalyMake) GitalyFmt() string { return filepath.Join(gm.BuildDir(), "bin/gitalyfmt") }
-func (gm *gitalyMake) GoCovMerge() string { return "bin/gocovmerge" }
func (gm *gitalyMake) GoLint() string { return filepath.Join(gm.BuildDir(), "bin/golangci-lint") }
func (gm *gitalyMake) GoVendor() string { return "bin/govendor" }
func (gm *gitalyMake) StaticCheck() string { return filepath.Join(gm.BuildDir(), "bin/staticcheck") }
diff --git a/_support/test-cover-parallel.go b/_support/test-cover-parallel.go
deleted file mode 100644
index 2719f6d3c..000000000
--- a/_support/test-cover-parallel.go
+++ /dev/null
@@ -1,110 +0,0 @@
-package main
-
-import (
- "fmt"
- "log"
- "os"
- "os/exec"
- "strings"
- "sync"
- "time"
-)
-
-const (
- progName = "test-cover-parallel.go"
-)
-
-func main() {
- if len(os.Args) <= 2 {
- log.Fatalf("usage %s OUT_DIR PKG [PKG...]", progName)
- }
-
- outDir := os.Args[1]
- packages := os.Args[2:]
-
- if err := buildDependentPackages(packages); err != nil {
- log.Fatal(err)
- }
-
- numWorkers := 2
- cmdChan := make(chan *exec.Cmd)
- wg := &sync.WaitGroup{}
- for i := 0; i < numWorkers; i++ {
- wg.Add(1)
- go func() {
- for cmd := range cmdChan {
- runCover(cmd)
- }
- wg.Done()
- }()
- }
-
- packageMap := make(map[string]bool, len(packages))
- for _, pkg := range packages {
- packageMap[pkg] = true
- }
-
- for _, pkg := range packages {
- deps, err := depsForPackage(pkg, packageMap)
- if err != nil {
- log.Fatal(err)
- }
-
- args := []string{
- "go",
- "test",
- fmt.Sprintf("-coverpkg=%s", strings.Join(deps, ",")),
- fmt.Sprintf("-coverprofile=%s/unit-%s.out", outDir, strings.Replace(pkg, "/", "_", -1)),
- pkg,
- }
-
- cmdChan <- exec.Command(args[0], args[1:]...)
- }
- close(cmdChan)
-
- wg.Wait()
-}
-
-func depsForPackage(pkg string, packageMap map[string]bool) ([]string, error) {
- depsOut, err := exec.Command("go", "list", "-f", `{{ join .Deps "\n" }}`, pkg).Output()
- if err != nil {
- return nil, err
- }
-
- deps := []string{pkg}
- for _, d := range strings.Split(string(depsOut), "\n") {
- if packageMap[d] {
- deps = append(deps, d)
- }
- }
-
- return deps, nil
-}
-
-func buildDependentPackages(packages []string) error {
- buildDeps := exec.Command("go", append([]string{"test", "-i"}, packages...)...)
- buildDeps.Stdout = os.Stdout
- buildDeps.Stderr = os.Stderr
- start := time.Now()
- if err := buildDeps.Run(); err != nil {
- log.Printf("command failed: %s", strings.Join(buildDeps.Args, " "))
- return err
- }
- log.Printf("go test -i\t%.3fs", time.Since(start).Seconds())
- return nil
-}
-
-func runCover(cmd *exec.Cmd) {
- start := time.Now()
- err := cmd.Run()
- duration := time.Since(start)
-
- status := fmt.Sprintf("%s\t%.3fs", cmd.Args[len(cmd.Args)-1], duration.Seconds())
-
- if err != nil {
- fmt.Printf("FAIL\t%s\n", status)
- fmt.Printf("command was: %s\n", strings.Join(cmd.Args, " "))
- } else {
- fmt.Printf("ok \t%s\n", status)
- }
-}