88 lines
3.9 KiB
Go
88 lines
3.9 KiB
Go
package cover
|
|
|
|
import "time"
|
|
|
|
// PackageCover holds all the generate coverage variables of a package
|
|
type PackageCover struct {
|
|
Package *Package
|
|
Vars map[string]*FileVar
|
|
}
|
|
|
|
// FileVar holds the name of the generated coverage variables targeting the named file.
|
|
type FileVar struct {
|
|
File string
|
|
Var string
|
|
}
|
|
|
|
// Package map a package output by go list
|
|
// this is subset of package struct in: https://github.com/golang/go/blob/master/src/cmd/go/internal/load/pkg.go#L58
|
|
type Package struct {
|
|
Dir string `json:"Dir"` // directory containing package sources
|
|
ImportPath string `json:"ImportPath"` // import path of package in dir
|
|
Name string `json:"Name"` // package name
|
|
Target string `json:",omitempty"` // installed target for this package (may be executable)
|
|
Root string `json:",omitempty"` // Go root, Go path dir, or module root dir containing this package
|
|
|
|
Module *ModulePublic `json:",omitempty"` // info about package's module, if any
|
|
Goroot bool `json:"Goroot,omitempty"` // is this package in the Go root?
|
|
Standard bool `json:"Standard,omitempty"` // is this package part of the standard Go library?
|
|
DepOnly bool `json:"DepOnly,omitempty"` // package is only a dependency, not explicitly listed
|
|
|
|
// Source files
|
|
GoFiles []string `json:"GoFiles,omitempty"` // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles)
|
|
CgoFiles []string `json:"CgoFiles,omitempty"` // .go source files that import "C"
|
|
|
|
// Dependency information
|
|
Deps []string `json:"Deps,omitempty"` // all (recursively) imported dependencies
|
|
Imports []string `json:",omitempty"` // import paths used by this package
|
|
ImportMap map[string]string `json:",omitempty"` // map from source import to ImportPath (identity entries omitted)
|
|
|
|
// Error information
|
|
Incomplete bool `json:"Incomplete,omitempty"` // this package or a dependency has an error
|
|
Error *PackageError `json:"Error,omitempty"` // error loading package
|
|
DepsErrors []*PackageError `json:"DepsErrors,omitempty"` // errors loading dependencies
|
|
}
|
|
|
|
// ModulePublic represents the package info of a module
|
|
type ModulePublic struct {
|
|
Path string `json:",omitempty"` // module path
|
|
Version string `json:",omitempty"` // module version
|
|
Versions []string `json:",omitempty"` // available module versions
|
|
Replace *ModulePublic `json:",omitempty"` // replaced by this module
|
|
Time *time.Time `json:",omitempty"` // time version was created
|
|
Update *ModulePublic `json:",omitempty"` // available update (with -u)
|
|
Main bool `json:",omitempty"` // is this the main module?
|
|
Indirect bool `json:",omitempty"` // module is only indirectly needed by main module
|
|
Dir string `json:",omitempty"` // directory holding local copy of files, if any
|
|
GoMod string `json:",omitempty"` // path to go.mod file describing module, if any
|
|
GoVersion string `json:",omitempty"` // go version used in module
|
|
Error *ModuleError `json:",omitempty"` // error loading module
|
|
}
|
|
|
|
// ModuleError represents the error loading module
|
|
type ModuleError struct {
|
|
Err string // error text
|
|
}
|
|
|
|
// PackageError is the error info for a package when list failed
|
|
type PackageError struct {
|
|
ImportStack []string // shortest path from package named on command line to this one
|
|
Pos string // position of error (if present, file:line:col)
|
|
Err string // the error itself
|
|
}
|
|
|
|
// CoverBuildInfo retreives some info from build
|
|
type CoverInfo struct {
|
|
Target string
|
|
GoPath string
|
|
IsMod bool
|
|
ModRootPath string
|
|
GlobalCoverVarImportPath string // path for the injected global cover var file
|
|
OneMainPackage bool
|
|
Args string
|
|
Mode string
|
|
AgentPort string
|
|
Center string
|
|
Singleton bool
|
|
}
|