Skip to content
This repository was archived by the owner on Sep 9, 2020. It is now read-only.

Moving int tests to fixture repositories #265

Merged
merged 10 commits into from
Mar 5, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
220 changes: 99 additions & 121 deletions cmd/dep/ensure_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,100 +5,13 @@
package main

import (
"path/filepath"
"testing"

"github.com/golang/dep/test"
"github.com/sdboyer/gps"
)

func TestEnsureOverrides(t *testing.T) {
test.NeedsExternalNetwork(t)
test.NeedsGit(t)

h := test.NewHelper(t)
defer h.Cleanup()

h.TempDir("src")
h.Setenv("GOPATH", h.Path("."))

h.TempCopy("src/thing/thing.go", "ensure/overrides_main.go")
h.Cd(h.Path("src/thing"))

h.Run("init")
h.Run("ensure", "-override", "github.com/carolynvs/[email protected]")

goldenManifest := "ensure/overrides_manifest.golden.json"
wantManifest := h.GetTestFileString(goldenManifest)
gotManifest := h.ReadManifest()
if gotManifest != wantManifest {
if *test.UpdateGolden {
if err := h.WriteTestFile(goldenManifest, string(gotManifest)); err != nil {
t.Fatal(err)
}
} else {
t.Fatalf("expected %s, got %s", wantManifest, gotManifest)
}
}

goldenLock := "ensure/overrides_lock.golden.json"
wantLock := h.GetTestFileString(goldenLock)
gotLock := h.ReadLock()
if gotLock != wantLock {
if *test.UpdateGolden {
if err := h.WriteTestFile(goldenLock, string(gotLock)); err != nil {
t.Fatal(err)
}
} else {
t.Fatalf("expected %s, got %s", wantLock, gotLock)
}
}
}

func TestEnsureEmptyRepoNoArgs(t *testing.T) {
test.NeedsExternalNetwork(t)
test.NeedsGit(t)

h := test.NewHelper(t)
defer h.Cleanup()

h.TempDir("src")
h.Setenv("GOPATH", h.Path("."))
h.TempCopy("src/thing/thing.go", "ensure/bare_main.go")
h.Cd(h.Path("src/thing"))

h.Run("init")
h.Run("ensure")

// make sure vendor exists
h.MustExist(h.Path("src/thing/vendor/github.com/jimmysmith95/fixed-version"))

goldenManifest := "ensure/bare_manifest.golden.json"
wantManifest := h.GetTestFileString(goldenManifest)
gotManifest := h.ReadManifest()
if gotManifest != wantManifest {
if *test.UpdateGolden {
if err := h.WriteTestFile(goldenManifest, string(gotManifest)); err != nil {
t.Fatal(err)
}
} else {
t.Fatalf("expected %s, got %s", wantManifest, gotManifest)
}
}

goldenLock := "ensure/bare_lock.golden.json"
wantLock := h.GetTestFileString(goldenLock)
gotLock := h.ReadLock()
if gotLock != wantLock {
if *test.UpdateGolden {
if err := h.WriteTestFile(goldenLock, string(gotLock)); err != nil {
t.Fatal(err)
}
} else {
t.Fatalf("expected %s, got %s", wantLock, gotLock)
}
}
}

func TestDeduceConstraint(t *testing.T) {
sv, err := gps.NewSemverConstraint("v1.2.3")
if err != nil {
Expand Down Expand Up @@ -126,43 +39,108 @@ func TestDeduceConstraint(t *testing.T) {
}
}

func TestEnsureUpdate(t *testing.T) {
type ensureTestCase struct {
dataRoot string
commands [][]string
sourceFiles map[string]string
goldenManifest string
goldenLock string
}

func TestEnsureCases(t *testing.T) {
tests := []ensureTestCase{

// Override test case
{
dataRoot: "ensure/override",
commands: [][]string{
{"init"},
{"ensure", "-override", "github.com/sdboyer/[email protected]"},
},
sourceFiles: map[string]string{
"main.go": "thing.go",
},
goldenManifest: "manifest.golden.json",
goldenLock: "lock.golden.json",
},

// Empty repo test case
{
dataRoot: "ensure/empty",
commands: [][]string{
{"init"},
{"ensure"},
},
sourceFiles: map[string]string{
"main.go": "thing.go",
},
goldenManifest: "manifest.golden.json",
goldenLock: "lock.golden.json",
},

// Update test case
{
dataRoot: "ensure/update",
commands: [][]string{
{"ensure", "-update", "github.com/sdboyer/deptest"},
},
sourceFiles: map[string]string{
"main.go": "thing.go",
"manifest.json": "manifest.json",
"lock.json": "lock.json",
},
goldenManifest: "manifest.json",
goldenLock: "lock.golden.json",
},
}

test.NeedsExternalNetwork(t)
test.NeedsGit(t)

h := test.NewHelper(t)
defer h.Cleanup()

// Setup up a test project
h.TempDir("src")
h.Setenv("GOPATH", h.Path("."))
h.TempCopy("src/thing/main.go", "ensure/update_main.go")
origManifest := "ensure/update_manifest.json"
h.TempCopy("src/thing/manifest.json", origManifest)
origLock := "ensure/update_lock.json"
h.TempCopy("src/thing/lock.json", origLock)
h.Cd(h.Path("src/thing"))

h.Run("ensure", "-update", "github.com/carolynvs/go-dep-test")

// Verify that the manifest wasn't modified by -update
wantManifest := h.GetTestFileString(origManifest)
gotManifest := h.ReadManifest()
if gotManifest != wantManifest {
t.Fatalf("The manifest should not be modified during an update. Expected %s, got %s", origManifest, gotManifest)
}
for _, testCase := range tests {
t.Run(testCase.dataRoot, func(t *testing.T) {
h := test.NewHelper(t)
defer h.Cleanup()

// Verify the lock matches the expected golden file
goldenLock := "ensure/update_lock.golden.json"
wantLock := h.GetTestFileString(goldenLock)
gotLock := h.ReadLock()
if gotLock != wantLock {
if *test.UpdateGolden {
if err := h.WriteTestFile(goldenLock, string(gotLock)); err != nil {
t.Fatal(err)
h.TempDir("src")
h.Setenv("GOPATH", h.Path("."))

// Build a fake consumer of these packages.
root := "src/thing"
for src, dest := range testCase.sourceFiles {
h.TempCopy(filepath.Join(root, dest), filepath.Join(testCase.dataRoot, src))
}
} else {
t.Fatalf("expected %s, got %s", wantLock, gotLock)
}
h.Cd(h.Path(root))

for _, cmd := range testCase.commands {
h.Run(cmd...)
}

wantPath := filepath.Join(testCase.dataRoot, testCase.goldenManifest)
wantManifest := h.GetTestFileString(wantPath)
gotManifest := h.ReadManifest()
if wantManifest != gotManifest {
if *test.UpdateGolden {
if err := h.WriteTestFile(wantPath, gotManifest); err != nil {
t.Fatal(err)
}
} else {
t.Errorf("expected %s, got %s", wantManifest, gotManifest)
}
}

wantPath = filepath.Join(testCase.dataRoot, testCase.goldenLock)
wantLock := h.GetTestFileString(wantPath)
gotLock := h.ReadLock()
if wantLock != gotLock {
if *test.UpdateGolden {
if err := h.WriteTestFile(wantPath, gotLock); err != nil {
t.Fatal(err)
}
} else {
t.Errorf("expected %s, got %s", wantLock, gotLock)
}
}
})
}
}
Loading