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-isatty v0.0.6 // indirect
|
||||
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
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6
|
||||
)
|
||||
|
|
|
|||
|
|
@ -34,11 +34,12 @@ var (
|
|||
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) {
|
||||
lock = &spec.JsonnetFile{}
|
||||
func Install(ctx context.Context, isLock bool, dependencySourceIdentifier string, m spec.JsonnetFile, dir string) (*spec.JsonnetFile, error) {
|
||||
lockfile := &spec.JsonnetFile{}
|
||||
for _, dep := range m.Dependencies {
|
||||
|
||||
tmp := filepath.Join(dir, ".tmp")
|
||||
err = os.MkdirAll(tmp, os.ModePerm)
|
||||
err := os.MkdirAll(tmp, os.ModePerm)
|
||||
if err != nil {
|
||||
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)
|
||||
|
||||
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)
|
||||
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")
|
||||
}
|
||||
|
||||
lock.Dependencies, err = insertDependency(lock.Dependencies, spec.Dependency{
|
||||
lockfile.Dependencies, err = insertDependency(lockfile.Dependencies, spec.Dependency{
|
||||
Name: dep.Name,
|
||||
Source: dep.Source,
|
||||
Version: lockVersion,
|
||||
|
|
@ -115,14 +113,14 @@ func Install(ctx context.Context, isLock bool, dependencySourceIdentifier string
|
|||
}
|
||||
|
||||
for _, d := range depsInstalledByDependency.Dependencies {
|
||||
lock.Dependencies, err = insertDependency(lock.Dependencies, d)
|
||||
lockfile.Dependencies, err = insertDependency(lockfile.Dependencies, d)
|
||||
if err != nil {
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -15,13 +15,19 @@
|
|||
package pkg
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/jsonnet-bundler/jsonnet-bundler/spec"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestInsert(t *testing.T) {
|
||||
deps := []spec.Dependency{spec.Dependency{Name: "test1", Version: "latest"}}
|
||||
const NotExist = "/this/does/not/exist"
|
||||
|
||||
func TestInsertDependency(t *testing.T) {
|
||||
deps := []spec.Dependency{{Name: "test1", Version: "latest"}}
|
||||
dep := spec.Dependency{Name: "test2", Version: "latest"}
|
||||
|
||||
res, err := insertDependency(deps, dep)
|
||||
|
|
@ -33,3 +39,101 @@ func TestInsert(t *testing.T) {
|
|||
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