mirror of
https://github.com/TECHNOFAB11/jsonnet-bundler.git
synced 2025-12-12 08:00:05 +01:00
Merge pull request #100 from bgagnon/fix-relative-install
Fix LocalPackage install for relative paths
This commit is contained in:
commit
1c78d6cfcb
3 changed files with 79 additions and 2 deletions
|
|
@ -72,7 +72,8 @@ func installCommand(dir, jsonnetHome string, uris []string, single bool) int {
|
|||
}
|
||||
}
|
||||
|
||||
locked, err := pkg.Ensure(jsonnetFile, filepath.Join(dir, jsonnetHome), lockFile.Dependencies)
|
||||
jsonnetPkgHomeDir := filepath.Join(dir, jsonnetHome)
|
||||
locked, err := pkg.Ensure(jsonnetFile, jsonnetPkgHomeDir, lockFile.Dependencies)
|
||||
kingpin.FatalIfError(err, "failed to install packages")
|
||||
|
||||
pkg.CleanLegacyName(jsonnetFile.Dependencies)
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import (
|
|||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/fatih/color"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"github.com/jsonnet-bundler/jsonnet-bundler/spec/v1/deps"
|
||||
|
|
@ -41,7 +42,7 @@ func (p *LocalPackage) Install(ctx context.Context, name, dir, version string) (
|
|||
}
|
||||
|
||||
oldname := filepath.Join(wd, p.Source.Directory)
|
||||
newname := filepath.Join(wd, filepath.Join(dir, name))
|
||||
newname := filepath.Join(dir, name)
|
||||
|
||||
err = os.RemoveAll(newname)
|
||||
if err != nil {
|
||||
|
|
@ -58,5 +59,7 @@ func (p *LocalPackage) Install(ctx context.Context, name, dir, version string) (
|
|||
return "", errors.Wrap(err, "failed to create symlink for local dependency: %w")
|
||||
}
|
||||
|
||||
color.Magenta("LOCAL %s -> %s", name, oldname)
|
||||
|
||||
return "", nil
|
||||
}
|
||||
|
|
|
|||
73
pkg/local_test.go
Normal file
73
pkg/local_test.go
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
package pkg
|
||||
|
||||
import (
|
||||
"context"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/jsonnet-bundler/jsonnet-bundler/spec/v1/deps"
|
||||
)
|
||||
|
||||
func TestLocalInstall(t *testing.T) {
|
||||
cwd, err := os.Getwd()
|
||||
assert.NoError(t, err)
|
||||
|
||||
vendorDir, err := ioutil.TempDir(cwd, "vendor")
|
||||
assert.NoError(t, err)
|
||||
defer os.RemoveAll(vendorDir)
|
||||
|
||||
pkgDir, err := ioutil.TempDir(cwd, "foo")
|
||||
assert.NoError(t, err)
|
||||
defer os.RemoveAll(pkgDir)
|
||||
|
||||
relPath, err := filepath.Rel(cwd, pkgDir)
|
||||
assert.NoError(t, err)
|
||||
|
||||
p := NewLocalPackage(&deps.Local{Directory: relPath})
|
||||
lockVersion, err := p.Install(context.TODO(), "foo", vendorDir, "v1.0")
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, lockVersion)
|
||||
}
|
||||
|
||||
func TestLocalInstallSourceNotFound(t *testing.T) {
|
||||
cwd, err := os.Getwd()
|
||||
assert.NoError(t, err)
|
||||
|
||||
vendorDir, err := ioutil.TempDir(cwd, "vendor")
|
||||
assert.NoError(t, err)
|
||||
defer os.RemoveAll(vendorDir)
|
||||
|
||||
relPath := "foo"
|
||||
p := NewLocalPackage(&deps.Local{Directory: relPath})
|
||||
lockVersion, err := p.Install(context.TODO(), "foo", vendorDir, "v1.0")
|
||||
assert.Error(t, err)
|
||||
assert.Empty(t, lockVersion)
|
||||
}
|
||||
|
||||
func TestLocalInstallTargetDoesNotExist(t *testing.T) {
|
||||
cwd, err := os.Getwd()
|
||||
assert.NoError(t, err)
|
||||
|
||||
pkgDir, err := ioutil.TempDir(cwd, "foo")
|
||||
assert.NoError(t, err)
|
||||
defer os.RemoveAll(pkgDir)
|
||||
|
||||
relPath, err := filepath.Rel(cwd, pkgDir)
|
||||
assert.NoError(t, err)
|
||||
|
||||
p := NewLocalPackage(&deps.Local{Directory: relPath})
|
||||
lockVersion, err := p.Install(context.TODO(), "foo", "vendor", "v1.0")
|
||||
assert.Error(t, err)
|
||||
assert.Empty(t, lockVersion)
|
||||
}
|
||||
|
||||
func TestLocalInstallSourceAndTargetDoNotExist(t *testing.T) {
|
||||
p := NewLocalPackage(&deps.Local{Directory: "foo"})
|
||||
lockVersion, err := p.Install(context.TODO(), "foo", "bar", "v1.0")
|
||||
assert.Error(t, err)
|
||||
assert.Empty(t, lockVersion)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue