Don't check ignored files for imports - closes #63
diff --git a/fetch.go b/fetch.go
index 089a1ac..129e1fe 100644
--- a/fetch.go
+++ b/fetch.go
@@ -229,7 +229,7 @@
 			return fmt.Errorf("unable to derive the root repo import path")
 		}
 		rootRepoPath := strings.TrimRight(strings.TrimSuffix(dep.Importpath, dep.Path), "/")
-		deps, err := vendor.ParseImports(src, wc.Dir(), rootRepoPath)
+		deps, err := vendor.ParseImports(src, wc.Dir(), rootRepoPath, tests, all)
 		if err != nil {
 			return fmt.Errorf("failed to parse imports: %s", err)
 		}
diff --git a/fileutils/fileutils.go b/fileutils/fileutils.go
index 5584de7..da0db9e 100644
--- a/fileutils/fileutils.go
+++ b/fileutils/fileutils.go
@@ -26,6 +26,53 @@
 	"LICENSE", "LICENCE", "UNLICENSE", "COPYING", "COPYRIGHT",
 }
 
+func ShouldSkip(path string, info os.FileInfo, tests, all bool) bool {
+	name := filepath.Base(path)
+
+	relevantFile := false
+	for _, ext := range goFileTypes {
+		if strings.HasSuffix(name, ext) {
+			relevantFile = true
+			break
+		}
+	}
+
+	testdata := false
+	for _, n := range strings.Split(filepath.Dir(path), string(filepath.Separator)) {
+		if n == "testdata" || n == "_testdata" {
+			testdata = true
+		}
+	}
+
+	skip := false
+	switch {
+	case all && !(name == ".git" && info.IsDir()) && name != ".bzr" && name != ".hg":
+		skip = false
+
+	// Include all files in a testdata folder
+	case tests && testdata:
+		skip = false
+
+	// https://golang.org/cmd/go/#hdr-Description_of_package_lists
+	case strings.HasPrefix(name, "."):
+		skip = true
+	case strings.HasPrefix(name, "_") && name != "_testdata":
+		skip = true
+
+	case !tests && name == "_testdata" && info.IsDir():
+		skip = true
+	case !tests && name == "testdata" && info.IsDir():
+		skip = true
+	case !tests && strings.HasSuffix(name, "_test.go") && !info.IsDir():
+		skip = true
+
+	case !relevantFile && !info.IsDir():
+		skip = true
+	}
+
+	return skip
+}
+
 // Copypath copies the contents of src to dst, excluding any file that is not
 // relevant to the Go compiler.
 func Copypath(dst string, src string, tests, all bool) error {
@@ -34,48 +81,7 @@
 			return err
 		}
 
-		name := filepath.Base(path)
-
-		relevantFile := false
-		for _, ext := range goFileTypes {
-			if strings.HasSuffix(name, ext) {
-				relevantFile = true
-				break
-			}
-		}
-
-		testdata := false
-		for _, n := range strings.Split(filepath.Dir(path), string(filepath.Separator)) {
-			if n == "testdata" || n == "_testdata" {
-				testdata = true
-			}
-		}
-
-		skip := false
-		switch {
-		case all && !(name == ".git" && info.IsDir()) && name != ".bzr" && name != ".hg":
-			skip = false
-
-		// Include all files in a testdata folder
-		case tests && testdata:
-			skip = false
-
-		// https://golang.org/cmd/go/#hdr-Description_of_package_lists
-		case strings.HasPrefix(name, "."):
-			skip = true
-		case strings.HasPrefix(name, "_") && name != "_testdata":
-			skip = true
-
-		case !tests && name == "_testdata" && info.IsDir():
-			skip = true
-		case !tests && name == "testdata" && info.IsDir():
-			skip = true
-		case !tests && strings.HasSuffix(name, "_test.go") && !info.IsDir():
-			skip = true
-
-		case !relevantFile && !info.IsDir():
-			skip = true
-		}
+		skip := ShouldSkip(path, info, tests, all)
 
 		if skip {
 			if info.IsDir() {
diff --git a/gbvendor/imports.go b/gbvendor/imports.go
index db64a5b..689fdd3 100644
--- a/gbvendor/imports.go
+++ b/gbvendor/imports.go
@@ -12,23 +12,29 @@
 	"path"
 	"path/filepath"
 	"strings"
+
+	"github.com/FiloSottile/gvt/fileutils"
 )
 
 // ParseImports parses Go packages from a specific root returning a set of import paths.
 // vendorRoot is how deep to go looking for vendor folders, usually the repo root.
 // vendorPrefix is the vendorRoot import path.
-func ParseImports(root, vendorRoot, vendorPrefix string) (map[string]bool, error) {
+func ParseImports(root, vendorRoot, vendorPrefix string, tests, all bool) (map[string]bool, error) {
 	pkgs := make(map[string]bool)
 
 	var walkFn = func(p string, info os.FileInfo, err error) error {
-		if info.IsDir() {
-			name := info.Name()
-			if strings.HasPrefix(name, ".") || strings.HasPrefix(name, "_") || name == "testdata" {
+		if err != nil {
+			return err
+		}
+
+		if fileutils.ShouldSkip(p, info, tests, all) {
+			if info.IsDir() {
 				return filepath.SkipDir
 			}
 			return nil
 		}
-		if filepath.Ext(p) != ".go" { // Parse only go source files
+
+		if info.IsDir() || filepath.Ext(p) != ".go" {
 			return nil
 		}