fix: allow other dirs than vendor (#80)

This commit is contained in:
Hang Xie 2020-02-08 05:46:51 -08:00 committed by GitHub
parent 0ba0ff5522
commit 1d729c9517
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 6 deletions

View file

@ -32,6 +32,18 @@ import (
const initContents = `{"dependencies": [], "legacyImports": true}`
func TestInstallCommand(t *testing.T) {
testInstallCommandWithJsonnetHome(t, "vendor")
}
func TestInstallCommandCustomJsonnetHome(t *testing.T) {
testInstallCommandWithJsonnetHome(t, "custom-vendor-dir")
}
func TestInstallCommandDeepCustomJsonnetHome(t *testing.T) {
testInstallCommandWithJsonnetHome(t, "custom/vendor/dir")
}
func testInstallCommandWithJsonnetHome(t *testing.T, jsonnetHome string) {
testcases := []struct {
Name string
URIs []string
@ -65,7 +77,7 @@ func TestInstallCommand(t *testing.T) {
cleanup := func() {
_ = os.Remove(jsonnetfile.File)
_ = os.Remove(jsonnetfile.LockFile)
_ = os.RemoveAll("vendor")
_ = os.RemoveAll(jsonnetHome)
_ = os.RemoveAll("jsonnet")
}
@ -81,7 +93,7 @@ func TestInstallCommand(t *testing.T) {
jsonnetFileContent(t, jsonnetfile.File, []byte(initContents))
// install something, check it writes only if required, etc.
installCommand("", "vendor", tc.URIs)
installCommand("", jsonnetHome, tc.URIs)
jsonnetFileContent(t, jsonnetfile.File, tc.ExpectedJsonnetFile)
if tc.ExpectedJsonnetLockFile != nil {
jsonnetFileContent(t, jsonnetfile.LockFile, tc.ExpectedJsonnetLockFile)

View file

@ -17,6 +17,7 @@ package main
import (
"fmt"
"os"
"path/filepath"
"github.com/fatih/color"
"github.com/pkg/errors"
@ -67,6 +68,8 @@ func Main() int {
return 1
}
cfg.JsonnetHome = filepath.Clean(cfg.JsonnetHome)
switch command {
case initCmd.FullCommand():
return initCommand(workdir)

View file

@ -76,7 +76,10 @@ func Ensure(direct spec.JsonnetFile, vendorDir string, oldLocks map[string]deps.
// remove them
for _, dir := range names {
name := strings.TrimPrefix(dir, "vendor/")
name, err := filepath.Rel(vendorDir, dir)
if err != nil {
return nil, err
}
if !known(locks, name) {
if err := os.RemoveAll(dir); err != nil {
return nil, err
@ -147,7 +150,7 @@ func linkLegacy(vendorDir string, locks map[string]deps.Dependency) error {
continue
}
legacyName := filepath.Join("vendor", d.LegacyName())
legacyName := filepath.Join(vendorDir, d.LegacyName())
pkgName := d.Name()
taken, err := checkLegacyNameTaken(legacyName, pkgName)

View file

@ -48,6 +48,18 @@ const want = `
`
func TestRewrite(t *testing.T) {
testRewriteWithJsonnetHome(t, "vendor")
}
func TestRewriteCustomJsonnetHome(t *testing.T) {
testRewriteWithJsonnetHome(t, "custom-vendor-dir")
}
func TestRewriteDeepCustomJsonnetHome(t *testing.T) {
testRewriteWithJsonnetHome(t, "custom/vendor/dir")
}
func testRewriteWithJsonnetHome(t *testing.T, jsonnetHome string) {
dir, err := ioutil.TempDir("", "jbrewrite")
require.Nil(t, err)
defer os.RemoveAll(dir)
@ -56,11 +68,11 @@ func TestRewrite(t *testing.T) {
err = ioutil.WriteFile(name, []byte(sample), 0644)
require.Nil(t, err)
vendorDir := filepath.Join(dir, "vendor")
vendorDir := filepath.Join(dir, jsonnetHome)
err = os.MkdirAll(vendorDir, os.ModePerm)
require.Nil(t, err)
err = Rewrite(dir, "vendor", locks)
err = Rewrite(dir, jsonnetHome, locks)
require.Nil(t, err)
content, err := ioutil.ReadFile(name)