From d95948a351363ee5647a728d23523beb2550ff80 Mon Sep 17 00:00:00 2001 From: Matthias Loibl Date: Wed, 24 Apr 2019 18:21:41 +0200 Subject: [PATCH] cmd/jb: Create integration tests for init and install --- cmd/jb/init_test.go | 22 +++++++++++++ cmd/jb/install_test.go | 73 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 cmd/jb/init_test.go create mode 100644 cmd/jb/install_test.go diff --git a/cmd/jb/init_test.go b/cmd/jb/init_test.go new file mode 100644 index 0000000..f8b5201 --- /dev/null +++ b/cmd/jb/init_test.go @@ -0,0 +1,22 @@ +// +build integration + +package main + +import ( + "io/ioutil" + "os" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestInitCommand(t *testing.T) { + tempDir, err := ioutil.TempDir("", "jb-init") + if err != nil { + t.Fatal(err) + } + defer os.Remove(tempDir) + + code := initCommand(tempDir) + assert.Equal(t, 0, code) +} diff --git a/cmd/jb/install_test.go b/cmd/jb/install_test.go new file mode 100644 index 0000000..26a83be --- /dev/null +++ b/cmd/jb/install_test.go @@ -0,0 +1,73 @@ +// +build integration + +package main + +import ( + "io/ioutil" + "net/url" + "os" + "path/filepath" + "testing" + + "github.com/jsonnet-bundler/jsonnet-bundler/pkg/jsonnetfile" + "github.com/stretchr/testify/assert" +) + +func TestInstallCommand(t *testing.T) { + testcases := []struct { + Name string + URLs []*url.URL + ExpectedCode int + ExpectedJsonnetFile []byte + ExpectedJsonnetLockFile []byte + }{ + { + Name: "NoURLs", + ExpectedCode: 0, + ExpectedJsonnetFile: []byte(`{"dependencies":null}`), + ExpectedJsonnetLockFile: []byte(`{"dependencies":null}`), + }, { + Name: "OneURL", + URLs: []*url.URL{ + { + Scheme: "https", + Host: "github.com", + Path: "jsonnet-bundler/jsonnet-bundler", + }, + }, + ExpectedCode: 0, + ExpectedJsonnetFile: []byte(`{"dependencies": [{"name": "jsonnet-bundler", "source": {"git": {"remote": "https://github.com/jsonnet-bundler/jsonnet-bundler", "subdir": ""}}, "version": "master"}]}`), + ExpectedJsonnetLockFile: []byte(`{"dependencies": [{"name": "jsonnet-bundler", "source": {"git": {"remote": "https://github.com/jsonnet-bundler/jsonnet-bundler", "subdir": ""}}, "version": "080f157c7fb85ad0281ea78f6c641eaa570a582f"}]}`), + }, + } + + for _, tc := range testcases { + t.Run(tc.Name, func(t *testing.T) { + tempDir, err := ioutil.TempDir("", "jb-install") + assert.NoError(t, err) + defer os.Remove(tempDir) + + jsonnetFile := filepath.Join(tempDir, jsonnetfile.File) + jsonnetLockFile := filepath.Join(tempDir, jsonnetfile.LockFile) + + code := initCommand(tempDir) + assert.Equal(t, 0, code) + + jsonnetFileContent(t, jsonnetFile, []byte(`{}`)) + + code = installCommand(tempDir, "vendor", tc.URLs...) + assert.Equal(t, tc.ExpectedCode, code) + + jsonnetFileContent(t, jsonnetFile, tc.ExpectedJsonnetFile) + jsonnetFileContent(t, jsonnetLockFile, tc.ExpectedJsonnetLockFile) + }) + } +} + +func jsonnetFileContent(t *testing.T, filename string, content []byte) { + bytes, err := ioutil.ReadFile(filename) + assert.NoError(t, err) + if eq := assert.JSONEq(t, string(content), string(bytes)); !eq { + t.Log(string(bytes)) + } +}