update
This commit is contained in:
parent
fcc160af52
commit
55fb63917d
@ -107,13 +107,4 @@ func TestBuildBinaryForInternalPackage(t *testing.T) {
|
||||
fInfo, err := os.Lstat(obj)
|
||||
assert.Equal(t, err, nil, "the binary should be generated.")
|
||||
assert.Equal(t, startTime.Before(fInfo.ModTime()), true, obj+"new binary should be generated, not the old one")
|
||||
|
||||
// cmd := exec.Command("go", "tool", "objdump", "simple-project")
|
||||
// cmd.Dir = workingDir
|
||||
// out, _ := cmd.CombinedOutput()
|
||||
// cnt := strings.Count(string(out), "GoCacheCover")
|
||||
// assert.Equal(t, cnt > 0, true, "GoCacheCover variable for internal package should be in the binary")
|
||||
|
||||
// cnt = strings.Count(string(out), "internal.GoCover")
|
||||
// assert.Equal(t, cnt > 0, true, "internal.GoCover variable should be in the binary")
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ import (
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/qiniu/goc/pkg/cover/cover2tool"
|
||||
"github.com/qiniu/goc/pkg/cover/internal/tool"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
@ -180,13 +180,8 @@ func Execute(coverInfo *CoverInfo) error {
|
||||
if pkg.Name == "main" {
|
||||
log.Printf("handle package: %v", pkg.ImportPath)
|
||||
// inject the main package
|
||||
mainCover, mainDecl, _ := addCounters2(pkg, mode, globalCoverVarImportPath)
|
||||
mainCover, mainDecl := AddCounters(pkg, mode, globalCoverVarImportPath)
|
||||
allDecl += mainDecl
|
||||
// if err != nil {
|
||||
// log.Errorf("failed to add counters for pkg %s, err: %v", pkg.ImportPath, err)
|
||||
// return ErrCoverPkgFailed
|
||||
// }
|
||||
|
||||
// new a testcover for this service
|
||||
tc := TestCover{
|
||||
Mode: mode,
|
||||
@ -207,7 +202,7 @@ func Execute(coverInfo *CoverInfo) error {
|
||||
|
||||
//only focus package neither standard Go library nor dependency library
|
||||
if depPkg, ok := pkgs[dep]; ok {
|
||||
packageCover, depDecl, _ := addCounters2(depPkg, mode, globalCoverVarImportPath)
|
||||
packageCover, depDecl := AddCounters(depPkg, mode, globalCoverVarImportPath)
|
||||
allDecl += depDecl
|
||||
tc.DepsCover = append(tc.DepsCover, packageCover)
|
||||
seen[dep] = packageCover
|
||||
@ -268,40 +263,22 @@ func ListPackages(dir string, args string, newgopath string) (map[string]*Packag
|
||||
return pkgs, nil
|
||||
}
|
||||
|
||||
// AddCounters add counters for all go files under the package
|
||||
func AddCounters(pkg *Package, mode, newgopath string) (*PackageCover, error) {
|
||||
coverVarMap := declareCoverVars(pkg)
|
||||
|
||||
for file, coverVar := range coverVarMap {
|
||||
cmd := buildCoverCmd(file, coverVar, pkg, mode, newgopath)
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("execute go tool cover -mode=%s -var %s -o %s/%s failed, err: %v, out: %s", mode, coverVar.Var, pkg.Dir, file, err, string(out))
|
||||
}
|
||||
}
|
||||
|
||||
return &PackageCover{
|
||||
Package: pkg,
|
||||
Vars: coverVarMap,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// addCounters2 is different from official go tool cover
|
||||
// AddCounters is different from official go tool cover
|
||||
// 1. only inject covervar++ into source file
|
||||
// 2. no declarartions for these covervars
|
||||
// 3. return the declarations as string
|
||||
func addCounters2(pkg *Package, mode string, globalCoverVarImportPath string) (*PackageCover, string, error) {
|
||||
func AddCounters(pkg *Package, mode string, globalCoverVarImportPath string) (*PackageCover, string) {
|
||||
coverVarMap := declareCoverVars(pkg)
|
||||
|
||||
decl := ""
|
||||
for file, coverVar := range coverVarMap {
|
||||
decl += "\n" + cover2tool.Annotate(path.Join(pkg.Dir, file), mode, coverVar.Var, globalCoverVarImportPath) + "\n"
|
||||
decl += "\n" + tool.Annotate(path.Join(pkg.Dir, file), mode, coverVar.Var, globalCoverVarImportPath) + "\n"
|
||||
}
|
||||
|
||||
return &PackageCover{
|
||||
Package: pkg,
|
||||
Vars: coverVarMap,
|
||||
}, decl, nil
|
||||
}, decl
|
||||
}
|
||||
|
||||
func isDirExist(path string) bool {
|
||||
|
@ -385,14 +385,4 @@ func TestCoverResultForInternalPackage(t *testing.T) {
|
||||
if !assert.Equal(t, err, nil) {
|
||||
assert.FailNow(t, "should generate http_cover_apis_auto_generated.go")
|
||||
}
|
||||
|
||||
// out, err := ioutil.ReadFile(filepath.Join(testDir, "http_cover_apis_auto_generated.go"))
|
||||
// if err != nil {
|
||||
// assert.FailNow(t, "failed to read http_cover_apis_auto_generated.go file")
|
||||
// }
|
||||
// cnt := strings.Count(string(out), "GoCacheCover")
|
||||
// assert.Equal(t, cnt > 0, true, "GoCacheCover variable should be in http_cover_apis_auto_generated.go")
|
||||
|
||||
// cnt = strings.Count(string(out), "example.com/simple-project/internal/foo.go")
|
||||
// assert.Equal(t, cnt > 0, true, "`example.com/simple-project/internal/foo.go` should be in http_cover_apis_auto_generated.go")
|
||||
}
|
||||
|
@ -402,7 +402,10 @@ func injectGlobalCoverVarFile(ci *CoverInfo, content string) error {
|
||||
|
||||
packageName := "package " + filepath.Base(ci.GlobalCoverVarImportPath) + "\n\n"
|
||||
|
||||
_, _ = coverFile.WriteString(packageName)
|
||||
_, err = coverFile.WriteString(packageName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = coverFile.WriteString(content)
|
||||
|
||||
return err
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cover2tool
|
||||
package tool
|
||||
|
||||
import (
|
||||
"bytes"
|
@ -3,7 +3,7 @@
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Package edit implements buffered position-based editing of byte slices.
|
||||
package cover2tool
|
||||
package tool
|
||||
|
||||
import (
|
||||
"fmt"
|
Loading…
Reference in New Issue
Block a user