183 lines
3.5 KiB
Go
183 lines
3.5 KiB
Go
package packer
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
"os/exec"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/metrue/fx/utils"
|
|
)
|
|
|
|
func TestPacker(t *testing.T) {
|
|
t.Run("Pack directory with Dockerfile in it", func(t *testing.T) {
|
|
input := "./fixture/p1"
|
|
output := "output-1"
|
|
defer func() {
|
|
os.RemoveAll(output)
|
|
}()
|
|
if err := Pack(output, input); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
|
|
t.Run("Pack directory only fx.js in it", func(t *testing.T) {
|
|
input := "./fixture/p2"
|
|
output := "output-2"
|
|
defer func() {
|
|
os.RemoveAll(output)
|
|
}()
|
|
if err := Pack(output, input); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
|
|
t.Run("Pack directory with fx.js and helper in it", func(t *testing.T) {
|
|
input := "./fixture/p3"
|
|
output := "output-3"
|
|
defer func() {
|
|
os.RemoveAll(output)
|
|
}()
|
|
if err := Pack(output, input); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
|
|
t.Run("Pack files list with fx.js in it", func(t *testing.T) {
|
|
handleFile := "./fixture/p3/fx.js"
|
|
helperFile := "./fixture/p3/helper.js"
|
|
output := "output-4"
|
|
defer func() {
|
|
os.RemoveAll(output)
|
|
}()
|
|
if err := Pack(output, handleFile, helperFile); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
|
|
t.Run("Pack files list without fx.js in it", func(t *testing.T) {
|
|
f1 := "./fixture/p3/helper.js"
|
|
f2 := "./fixture/p3/helper.js"
|
|
output := "output-5"
|
|
defer func() {
|
|
os.RemoveAll(output)
|
|
}()
|
|
if err := Pack(output, f1, f2); err == nil {
|
|
t.Fatalf("should report error when there is not Dockerfile or fx.[ext] in it")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestTreeAndUnTree(t *testing.T) {
|
|
_, err := PackIntoK8SConfigMapFile("./fixture/p1")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestGenerate(t *testing.T) {
|
|
langs := []string{
|
|
"d",
|
|
"go",
|
|
"java",
|
|
"julia",
|
|
"node",
|
|
"php",
|
|
"python",
|
|
"ruby",
|
|
"rust",
|
|
}
|
|
for _, lang := range langs {
|
|
output := fmt.Sprintf("output-%s-%d", lang, time.Now().Unix())
|
|
defer func() {
|
|
os.RemoveAll(output)
|
|
}()
|
|
if err := restore(output, lang); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
diffCmd := exec.Command("diff", "-r", output, "./images/"+lang)
|
|
if stdoutStderr, err := diffCmd.CombinedOutput(); err != nil {
|
|
fmt.Printf("%s\n", stdoutStderr)
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestMerge(t *testing.T) {
|
|
// TODO should check the merge result
|
|
t.Run("NoInput", func(t *testing.T) {
|
|
dest := "./dest"
|
|
_ = utils.EnsureDir("./dest")
|
|
defer func() {
|
|
os.RemoveAll(dest)
|
|
}()
|
|
|
|
if err := merge(dest); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
|
|
t.Run("Files", func(t *testing.T) {
|
|
dest := "./dest"
|
|
_ = utils.EnsureDir("./dest")
|
|
defer func() {
|
|
os.RemoveAll(dest)
|
|
}()
|
|
|
|
f1, err := ioutil.TempFile("", "fx.*.txt")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer os.Remove(f1.Name())
|
|
|
|
f2, err := ioutil.TempFile("", "fx.*.txt")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer os.Remove(f2.Name())
|
|
|
|
if err := merge(dest, f1.Name(), f2.Name()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
|
|
t.Run("Directories", func(t *testing.T) {
|
|
dest := "./dest"
|
|
_ = utils.EnsureDir("./dest")
|
|
defer func() {
|
|
os.RemoveAll(dest)
|
|
}()
|
|
|
|
if err := merge(dest, "./fixture/p1"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
|
|
t.Run("Files and Directories", func(t *testing.T) {
|
|
dest := "./dest"
|
|
_ = utils.EnsureDir("./dest")
|
|
defer func() {
|
|
os.RemoveAll(dest)
|
|
}()
|
|
|
|
f1, err := ioutil.TempFile("", "fx.*.txt")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer os.Remove(f1.Name())
|
|
|
|
f2, err := ioutil.TempFile("", "fx.*.txt")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer os.Remove(f2.Name())
|
|
|
|
if err := merge(dest, "./fixture/p1", f1.Name(), f2.Name()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
}
|