From a2bc90d1d7ec796e51d8783a97558dfa4f2e7f45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= <peterke@gmail.com>
Date: Fri, 13 Jan 2017 11:22:24 +0200
Subject: build: spellcheck individual packages (Windows path limits)

---
 build/ci.go | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/build/ci.go b/build/ci.go
index 31c4885a3..152c86d1b 100644
--- a/build/ci.go
+++ b/build/ci.go
@@ -289,27 +289,29 @@ func doTest(cmdline []string) {
 		build.MustRun(goTool("vet", packages...))
 	}
 	if *misspell {
-		// The spell checker doesn't work on packages, gather all .go files for it
-		sources := []string{}
+		// Ensure the spellchecker is available
+		build.MustRun(goTool("get", "github.com/client9/misspell/cmd/misspell"))
+
+		// Windows (AppVeyor) chokes on long argument lists, check packages individualy
 		for _, pkg := range packages {
-			// Gather all the source files of the package
+			// The spell checker doesn't work on packages, gather all .go files for it
 			out, err := goTool("list", "-f", "{{.Dir}}{{range .GoFiles}}\n{{.}}{{end}}{{range .CgoFiles}}\n{{.}}{{end}}{{range .TestGoFiles}}\n{{.}}{{end}}", pkg).CombinedOutput()
 			if err != nil {
 				log.Fatalf("source file listing failed: %v\n%s", err, string(out))
 			}
 			// Retrieve the folder and assemble the source list
 			lines := strings.Split(string(out), "\n")
-
 			root := lines[0]
+
+			sources := make([]string, 0, len(lines)-1)
 			for _, line := range lines[1:] {
 				if line = strings.TrimSpace(line); line != "" {
 					sources = append(sources, filepath.Join(root, line))
 				}
 			}
+			// Run the spell checker for this particular package
+			build.MustRunCommand(filepath.Join(GOBIN, "misspell"), append([]string{"-error"}, sources...)...)
 		}
-		// Download the spell checker tool and run on all source files
-		build.MustRun(goTool("get", "github.com/client9/misspell/cmd/misspell"))
-		build.MustRunCommand(filepath.Join(GOBIN, "misspell"), append([]string{"-error"}, sources...)...)
 	}
 	// Run the actual tests.
 	gotest := goTool("test")
-- 
cgit v1.2.3