diff options
author | Pavlo Strokov <pstrokov@gitlab.com> | 2020-02-13 10:04:52 +0300 |
---|---|---|
committer | Pavlo Strokov <pstrokov@gitlab.com> | 2020-02-13 10:04:52 +0300 |
commit | 34c588ee489028eec3edae16acf85f74e527a35d (patch) | |
tree | 13304f15ffbd44974b41cac1d5a5ce611dbb6a4f | |
parent | e97d8fd8a43b5d826eb0ee180a405fe207acd2be (diff) | |
parent | ac4ca9e1cfbe21740dcbf8fc29735c11e7ebc6d9 (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.template | 10 | ||||
-rw-r--r-- | _support/makegen.go | 1 | ||||
-rw-r--r-- | _support/test-cover-parallel.go | 110 |
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) - } -} |