mirror of
https://github.com/TECHNOFAB11/jsonnet-bundler.git
synced 2025-12-12 16:10:04 +01:00
pkg: Write tests for TestInsertDependency, TestFileExists, TestLoadJsonnetfile
This commit is contained in:
parent
c516ce2506
commit
27c36f6160
3 changed files with 114 additions and 12 deletions
2
go.mod
2
go.mod
|
|
@ -10,7 +10,7 @@ require (
|
||||||
github.com/mattn/go-colorable v0.0.9 // indirect
|
github.com/mattn/go-colorable v0.0.9 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.6 // indirect
|
github.com/mattn/go-isatty v0.0.6 // indirect
|
||||||
github.com/pkg/errors v0.8.0
|
github.com/pkg/errors v0.8.0
|
||||||
github.com/stretchr/testify v1.3.0 // indirect
|
github.com/stretchr/testify v1.3.0
|
||||||
golang.org/x/sys v0.0.0-20190310054646-10058d7d4faa // indirect
|
golang.org/x/sys v0.0.0-20190310054646-10058d7d4faa // indirect
|
||||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6
|
gopkg.in/alecthomas/kingpin.v2 v2.2.6
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -34,11 +34,12 @@ var (
|
||||||
VersionMismatch = errors.New("multiple colliding versions specified")
|
VersionMismatch = errors.New("multiple colliding versions specified")
|
||||||
)
|
)
|
||||||
|
|
||||||
func Install(ctx context.Context, isLock bool, dependencySourceIdentifier string, m spec.JsonnetFile, dir string) (lock *spec.JsonnetFile, err error) {
|
func Install(ctx context.Context, isLock bool, dependencySourceIdentifier string, m spec.JsonnetFile, dir string) (*spec.JsonnetFile, error) {
|
||||||
lock = &spec.JsonnetFile{}
|
lockfile := &spec.JsonnetFile{}
|
||||||
for _, dep := range m.Dependencies {
|
for _, dep := range m.Dependencies {
|
||||||
|
|
||||||
tmp := filepath.Join(dir, ".tmp")
|
tmp := filepath.Join(dir, ".tmp")
|
||||||
err = os.MkdirAll(tmp, os.ModePerm)
|
err := os.MkdirAll(tmp, os.ModePerm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "failed to create general tmp dir")
|
return nil, errors.Wrap(err, "failed to create general tmp dir")
|
||||||
}
|
}
|
||||||
|
|
@ -63,9 +64,6 @@ func Install(ctx context.Context, isLock bool, dependencySourceIdentifier string
|
||||||
color.Green(">>> Installed %s version %s\n", dep.Name, dep.Version)
|
color.Green(">>> Installed %s version %s\n", dep.Name, dep.Version)
|
||||||
|
|
||||||
destPath := path.Join(dir, dep.Name)
|
destPath := path.Join(dir, dep.Name)
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrap(err, "failed to find destination path for package")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = os.MkdirAll(path.Dir(destPath), os.ModePerm)
|
err = os.MkdirAll(path.Dir(destPath), os.ModePerm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -81,7 +79,7 @@ func Install(ctx context.Context, isLock bool, dependencySourceIdentifier string
|
||||||
return nil, errors.Wrap(err, "failed to move package")
|
return nil, errors.Wrap(err, "failed to move package")
|
||||||
}
|
}
|
||||||
|
|
||||||
lock.Dependencies, err = insertDependency(lock.Dependencies, spec.Dependency{
|
lockfile.Dependencies, err = insertDependency(lockfile.Dependencies, spec.Dependency{
|
||||||
Name: dep.Name,
|
Name: dep.Name,
|
||||||
Source: dep.Source,
|
Source: dep.Source,
|
||||||
Version: lockVersion,
|
Version: lockVersion,
|
||||||
|
|
@ -115,14 +113,14 @@ func Install(ctx context.Context, isLock bool, dependencySourceIdentifier string
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, d := range depsInstalledByDependency.Dependencies {
|
for _, d := range depsInstalledByDependency.Dependencies {
|
||||||
lock.Dependencies, err = insertDependency(lock.Dependencies, d)
|
lockfile.Dependencies, err = insertDependency(lockfile.Dependencies, d)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "failed to insert dependency to lock dependencies")
|
return nil, errors.Wrap(err, "failed to insert dependency to lock dependencies")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return lock, nil
|
return lockfile, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func insertDependency(deps []spec.Dependency, newDep spec.Dependency) ([]spec.Dependency, error) {
|
func insertDependency(deps []spec.Dependency, newDep spec.Dependency) ([]spec.Dependency, error) {
|
||||||
|
|
|
||||||
|
|
@ -15,13 +15,19 @@
|
||||||
package pkg
|
package pkg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/jsonnet-bundler/jsonnet-bundler/spec"
|
"github.com/jsonnet-bundler/jsonnet-bundler/spec"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestInsert(t *testing.T) {
|
const NotExist = "/this/does/not/exist"
|
||||||
deps := []spec.Dependency{spec.Dependency{Name: "test1", Version: "latest"}}
|
|
||||||
|
func TestInsertDependency(t *testing.T) {
|
||||||
|
deps := []spec.Dependency{{Name: "test1", Version: "latest"}}
|
||||||
dep := spec.Dependency{Name: "test2", Version: "latest"}
|
dep := spec.Dependency{Name: "test2", Version: "latest"}
|
||||||
|
|
||||||
res, err := insertDependency(deps, dep)
|
res, err := insertDependency(deps, dep)
|
||||||
|
|
@ -33,3 +39,101 @@ func TestInsert(t *testing.T) {
|
||||||
t.Fatal("Incorrectly inserted")
|
t.Fatal("Incorrectly inserted")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFileExists(t *testing.T) {
|
||||||
|
{
|
||||||
|
exists, err := FileExists(NotExist)
|
||||||
|
assert.False(t, exists)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
tempFile, err := ioutil.TempFile("", "jb-exists")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
err := os.Remove(tempFile.Name())
|
||||||
|
assert.Nil(t, err)
|
||||||
|
}()
|
||||||
|
|
||||||
|
exists, err := FileExists(tempFile.Name())
|
||||||
|
assert.True(t, exists)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLoadJsonnetfile(t *testing.T) {
|
||||||
|
empty := spec.JsonnetFile{}
|
||||||
|
|
||||||
|
jsonnetfileContent := `{
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"name": "foobar",
|
||||||
|
"source": {
|
||||||
|
"git": {
|
||||||
|
"remote": "https://github.com/foobar/foobar",
|
||||||
|
"subdir": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "master"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
`
|
||||||
|
jsonnetFileExpected := spec.JsonnetFile{
|
||||||
|
Dependencies: []spec.Dependency{{
|
||||||
|
Name: "foobar",
|
||||||
|
Source: spec.Source{
|
||||||
|
GitSource: &spec.GitSource{
|
||||||
|
Remote: "https://github.com/foobar/foobar",
|
||||||
|
Subdir: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Version: "master",
|
||||||
|
DepSource: "",
|
||||||
|
}},
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
jf, err := LoadJsonnetfile(NotExist)
|
||||||
|
assert.Equal(t, empty, jf)
|
||||||
|
assert.Error(t, err)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
tempDir, err := ioutil.TempDir("", "jb-load-jsonnetfile")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
err := os.RemoveAll(tempDir)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
}()
|
||||||
|
|
||||||
|
tempFile := filepath.Join(tempDir, JsonnetFile)
|
||||||
|
err = ioutil.WriteFile(tempFile, []byte(`{}`), os.ModePerm)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
jf, err := LoadJsonnetfile(tempFile)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
assert.Equal(t, empty, jf)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
tempDir, err := ioutil.TempDir("", "jb-load-jsonnetfile")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
err := os.RemoveAll(tempDir)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
}()
|
||||||
|
|
||||||
|
tempFile := filepath.Join(tempDir, JsonnetFile)
|
||||||
|
err = ioutil.WriteFile(tempFile, []byte(jsonnetfileContent), os.ModePerm)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
jf, err := LoadJsonnetfile(tempFile)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
assert.Equal(t, jsonnetFileExpected, jf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue