Files
fx-serverless/packer/packer_test.go
2019-12-06 20:16:05 +08:00

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)
}
})
}