github.com/tonto/cli@v0.0.0-20180104210444-aec958fa47db/main_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "fmt" 6 "io/ioutil" 7 "log" 8 "os" 9 "os/exec" 10 "path" 11 "strings" 12 "testing" 13 ) 14 15 var fnTestBin string 16 17 // setup 18 func init() { 19 fnTestBin = path.Join(os.TempDir(), "fn-test") 20 res, err := exec.Command("go", "build", "-o", fnTestBin).CombinedOutput() 21 fmt.Println(string(res)) 22 if err != nil { 23 log.Fatal(err) 24 } 25 } 26 27 func cdToTmp(t *testing.T) string { 28 tmp := os.TempDir() + "/functest" 29 var err error 30 if _, err = os.Stat(tmp); os.IsExist(err) { 31 err := os.RemoveAll(tmp) 32 if err != nil { 33 t.Fatal(err) 34 } 35 } 36 err = os.MkdirAll(tmp, 0700) 37 if err != nil { 38 t.Fatal(err) 39 } 40 41 if err := os.Chdir(tmp); err != nil { 42 t.Fatal(err) 43 } 44 return tmp 45 } 46 47 func TestMainCommands(t *testing.T) { 48 testCommands := []string{ 49 "init", 50 "apps", 51 "routes", 52 "images", 53 "lambda", 54 "version", 55 "build", 56 "bump", 57 "deploy", 58 "run", 59 "push", 60 "logs", 61 "calls", 62 "call", 63 } 64 tmp := cdToTmp(t) 65 defer os.RemoveAll(tmp) 66 67 for _, cmd := range testCommands { 68 res, err := exec.Command(fnTestBin, strings.Split(cmd, " ")...).CombinedOutput() 69 if bytes.Contains(res, []byte("command not found")) { 70 t.Error(err) 71 } 72 } 73 } 74 75 // very simple non-failure test for java versioning on fn init 76 func TestJavaVersioning(t *testing.T) { 77 testname := "TestJavaVersioning" 78 79 testdir, err := ioutil.TempDir("", testname) 80 if err != nil { 81 t.Fatalf("ERROR: Failed to make tmp test directory: err: %v", err) 82 } 83 defer os.RemoveAll(testdir) 84 85 testsub1, err := ioutil.TempDir(testdir, "8") 86 if err != nil { 87 t.Fatalf("ERROR: Failed to make tmp test directory: err: %v", err) 88 } 89 checkInit(t, testsub1, "8", fnTestBin) 90 91 testsub2, err := ioutil.TempDir(testdir, "9") 92 if err != nil { 93 t.Fatalf("ERROR: Failed to make tmp test directory: err: %v", err) 94 } 95 checkInit(t, testsub2, "9", fnTestBin) 96 97 testsub3, err := ioutil.TempDir(testdir, "noversion") 98 if err != nil { 99 t.Fatalf("ERROR: Failed to make tmp test directory: err: %v", err) 100 } 101 checkInit(t, testsub3, "", fnTestBin) 102 } 103 104 func checkInit(t *testing.T, testdir, version, bin string) { 105 err := os.Chdir(testdir) 106 if err != nil { 107 t.Errorf("ERROR: Failed to cd to tmp test directory: err: %v", err) 108 } 109 110 runtime := fmt.Sprintf("--runtime=java%s", version) 111 112 _, err = exec.Command(bin, "init", runtime).CombinedOutput() 113 if err != nil { 114 t.Errorf("ERROR: Failed to run fn init with --runtime=java%s. err: %v", version, err) 115 } 116 117 if _, err = os.Stat(fmt.Sprintf("%s/src/main", testdir)); err != nil && os.IsNotExist(err) { 118 t.Errorf("ERROR: failed to create java project with --runtime=java%s. err: %v", version, err) 119 } 120 }