From d87a4c35b98c0db6ce7fac003b5d722c07dc3045 Mon Sep 17 00:00:00 2001 From: Eric Chiang Date: Thu, 22 Dec 2016 11:35:39 -0800 Subject: [PATCH] *: add 'make revendor' and tests to catch incorrect glide usage Introducing glide-vc caused us to unknowingly removed our Go protobuf compiler (since it's a main). Add flags to glide-vc usage to remedy this. Since we now require several glide and glide-vc flags, add a Makfile target and tests to catch when PRs don't use the correct flags. --- Documentation/dev-dependencies.md | 5 ++--- Makefile | 5 +++++ glide_test.go | 15 +++++++++++++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Documentation/dev-dependencies.md b/Documentation/dev-dependencies.md index ea63e420..6e294950 100644 --- a/Documentation/dev-dependencies.md +++ b/Documentation/dev-dependencies.md @@ -15,11 +15,10 @@ To add a new dependency to dex or update an existing one: Tests will fail if transitive dependencies aren't included. -Once `glide.yaml` describes the desired state use glide and glide-vc to update `glide.lock` and `vendor`. +Once `glide.yaml` describes the desired state use `make` to update `glide.lock` and `vendor`. This calls both `glide` and `glide-vc` with the set of flags that dex requires. ``` -glide up -v -glide-vc +make revendor ``` When composing commits make sure that updates to `vendor` are in a separate commit from the main changes. GitHub's UI makes commits with a large number of changes unreviewable. diff --git a/Makefile b/Makefile index 7c8533af..8006982a 100644 --- a/Makefile +++ b/Makefile @@ -35,6 +35,11 @@ bin/example-app: check-go-version release-binary: @go build -o _output/bin/dex -v -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/dex +.PHONY: revendor +revendor: + @glide up -v + @glide-vc --use-lock-file --no-tests --only-code + test: @go test -v -i $(shell go list ./... | grep -v '/vendor/') @go test -v $(shell go list ./... | grep -v '/vendor/') diff --git a/glide_test.go b/glide_test.go index fa478172..3b503ddf 100644 --- a/glide_test.go +++ b/glide_test.go @@ -5,6 +5,7 @@ import ( "os" "path" "path/filepath" + "strings" "testing" "gopkg.in/yaml.v2" @@ -96,13 +97,23 @@ func TestGlideYAMLPinsAllDependencies(t *testing.T) { } } -func TestRemoveVersionControl(t *testing.T) { +func TestGlideVCUseLockFile(t *testing.T) { + _, err := os.Stat("vendor/github.com/golang/protobuf/protoc-gen-go") + if err != nil { + t.Fatalf("vendor did not use glide-vc --use-lock-file. Revendor packages using 'make revendor' to use the correct glide and glide-vc flags") + } +} + +func TestGlideFlagsAndGlideVC(t *testing.T) { err := filepath.Walk("vendor", func(path string, info os.FileInfo, err error) error { if err != nil { t.Fatalf("walk: stat path %s failed: %v", path, err) } if info.IsDir() && filepath.Base(path) == ".git" { - t.Fatalf(".git directory detected in vendor: %s. Revendor packages and remove version control data with 'glide update -s -v -u'", path) + t.Fatalf(".git directory detected in vendor: %s. Revendor packages using 'make revendor' to use the correct glide and glide-vc flags", path) + } + if !info.IsDir() && strings.HasSuffix(path, "_test.go") { + t.Fatalf("'_test.go' file detected in vendor: %s. Revendor packages using 'make revendor' to use the correct glide and glide-vc flags", path) } return nil })