all: add NoTests mode, default on, toggled off by 'fetch -t'
Existing manifest files will have NoTests: false, so their 'gvt restore'
behavior won't change, but the default 'gvt fetch' behavior changed to
excluding tests, and can be overridden with '-t'.
Closes #21
diff --git a/alldocs.go b/alldocs.go
index 293e44b..656ba9d 100644
--- a/alldocs.go
+++ b/alldocs.go
@@ -21,7 +21,7 @@
Fetch a remote dependency
Usage:
- gvt fetch [-branch branch] [-revision rev | -tag tag] [-precaire] [-no-recurse] importpath
+ gvt fetch [-branch branch] [-revision rev | -tag tag] [-precaire] [-no-recurse] [-t] importpath
fetch vendors an upstream import path.
@@ -29,6 +29,8 @@
from private repositories that cannot be probed.
Flags:
+ -t
+ fetch also _test.go files and testdata.
-branch branch
fetch from the named branch. Will also be used by gvt update.
If not supplied the default upstream branch will be used.
diff --git a/fetch.go b/fetch.go
index 434274e..cf8bb2c 100644
--- a/fetch.go
+++ b/fetch.go
@@ -20,6 +20,7 @@
tag string
noRecurse bool
insecure bool // Allow the use of insecure protocols
+ tests bool
recurse bool // should we fetch recursively
)
@@ -30,11 +31,12 @@
fs.StringVar(&tag, "tag", "", "tag of the package")
fs.BoolVar(&noRecurse, "no-recurse", false, "do not fetch recursively")
fs.BoolVar(&insecure, "precaire", false, "allow the use of insecure protocols")
+ fs.BoolVar(&tests, "t", false, "fetch _test.go files and testdata")
}
var cmdFetch = &Command{
Name: "fetch",
- UsageLine: "fetch [-branch branch] [-revision rev | -tag tag] [-precaire] [-no-recurse] importpath",
+ UsageLine: "fetch [-branch branch] [-revision rev | -tag tag] [-precaire] [-no-recurse] [-t] importpath",
Short: "fetch a remote dependency",
Long: `fetch vendors an upstream import path.
@@ -42,6 +44,8 @@
from private repositories that cannot be probed.
Flags:
+ -t
+ fetch also _test.go files and testdata.
-branch branch
fetch from the named branch. Will also be used by gvt update.
If not supplied the default upstream branch will be used.
@@ -112,6 +116,7 @@
Revision: rev,
Branch: branch,
Path: extra,
+ NoTests: !tests,
}
if err := m.AddDependency(dep); err != nil {
@@ -121,7 +126,7 @@
dst := filepath.Join(vendorDir(), dep.Importpath)
src := filepath.Join(wc.Dir(), dep.Path)
- if err := fileutils.Copypath(dst, src, true); err != nil {
+ if err := fileutils.Copypath(dst, src, !dep.NoTests); err != nil {
return err
}
diff --git a/gbvendor/manifest.go b/gbvendor/manifest.go
index f4d973e..397208f 100644
--- a/gbvendor/manifest.go
+++ b/gbvendor/manifest.go
@@ -82,6 +82,10 @@
// Path is the path inside the Repository where the
// dependency was fetched from.
Path string `json:"path,omitempty"`
+
+ // NoTests indicates that test files were ignored.
+ // In the negative for backwards compatibility.
+ NoTests bool `json:"notests,omitempty"`
}
// WriteManifest writes a Manifest to the path. If the manifest does
diff --git a/restore.go b/restore.go
index 81d338d..d2a3309 100644
--- a/restore.go
+++ b/restore.go
@@ -91,10 +91,14 @@
}
func downloadDependency(dep vendor.Dependency, errors *uint32, vendorDir string, recursive bool) error {
+ testsMsg := ""
+ if !dep.NoTests {
+ testsMsg = "(including tests)"
+ }
if recursive {
- log.Printf("fetching recursive %s", dep.Importpath)
+ log.Printf("fetching recursive %s %s", dep.Importpath, testsMsg)
} else {
- log.Printf("fetching %s", dep.Importpath)
+ log.Printf("fetching %s %s", dep.Importpath, testsMsg)
}
repo, _, err := vendor.DeduceRemoteRepo(dep.Importpath, rbInsecure)
@@ -116,7 +120,7 @@
}
}
- if err := fileutils.Copypath(dst, src, true); err != nil {
+ if err := fileutils.Copypath(dst, src, !dep.NoTests); err != nil {
return err
}
diff --git a/update.go b/update.go
index e1f261d..1fe48a5 100644
--- a/update.go
+++ b/update.go
@@ -96,6 +96,7 @@
Revision: rev,
Branch: branch,
Path: extra,
+ NoTests: d.NoTests,
}
if err := fileutils.RemoveAll(filepath.Join(vendorDir(), filepath.FromSlash(d.Importpath))); err != nil {
@@ -106,7 +107,7 @@
dst := filepath.Join(vendorDir(), filepath.FromSlash(dep.Importpath))
src := filepath.Join(wc.Dir(), dep.Path)
- if err := fileutils.Copypath(dst, src, true); err != nil {
+ if err := fileutils.Copypath(dst, src, !d.NoTests); err != nil {
return err
}