diff --git a/txn_writer.go b/txn_writer.go index 97d38fe823..43420dc52b 100644 --- a/txn_writer.go +++ b/txn_writer.go @@ -530,6 +530,7 @@ fail: return failerr } +// calculatePrune returns the paths of the packages to be deleted from vendorDir. func calculatePrune(vendorDir string, keep []string, logger *log.Logger) ([]string, error) { if logger != nil { logger.Println("Calculating prune. Checking the following packages:") @@ -547,7 +548,7 @@ func calculatePrune(vendorDir string, keep []string, logger *log.Logger) ([]stri return nil } - name := strings.TrimPrefix(path, vendorDir+"/") + name := strings.TrimPrefix(path, vendorDir+string(filepath.Separator)) if logger != nil { logger.Printf(" %s", name) } diff --git a/txn_writer_test.go b/txn_writer_test.go index c0f0b9187a..53abb33695 100644 --- a/txn_writer_test.go +++ b/txn_writer_test.go @@ -8,9 +8,12 @@ import ( "io/ioutil" "os" "path/filepath" + "sort" "strings" "testing" + "reflect" + "github.com/golang/dep/internal/test" "github.com/pkg/errors" ) @@ -567,3 +570,35 @@ func TestSafeWriter_VendorDotGitPreservedWithForceVendor(t *testing.T) { t.Fatal(err) } } + +func TestCalculatePrune(t *testing.T) { + h := test.NewHelper(t) + defer h.Cleanup() + + vendorDir := "vendor" + h.TempDir(vendorDir) + h.TempDir(filepath.Join(vendorDir, "github.com/keep/pkg/sub")) + h.TempDir(filepath.Join(vendorDir, "github.com/prune/pkg/sub")) + + toKeep := []string{ + filepath.FromSlash("github.com/keep/pkg"), + filepath.FromSlash("github.com/keep/pkg/sub"), + } + + got, err := calculatePrune(h.Path(vendorDir), toKeep, nil) + if err != nil { + t.Fatal(err) + } + + sort.Sort(byLen(got)) + + want := []string{ + h.Path(filepath.Join(vendorDir, "github.com/prune/pkg/sub")), + h.Path(filepath.Join(vendorDir, "github.com/prune/pkg")), + h.Path(filepath.Join(vendorDir, "github.com/prune")), + } + + if !reflect.DeepEqual(want, got) { + t.Fatalf("calculated prune paths are not as expected.\n(WNT) %s\n(GOT) %s", want, got) + } +}