github.com/utopia-planitia/utopiactl@v0.0.0-20191017133510-0d357a9fb3b9/main_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 "testing" 9 ) 10 11 func TestConfigure(t *testing.T) { 12 13 orgPWD := os.Getenv("PWD") 14 defer os.Chdir(orgPWD) 15 orgArgs := os.Args 16 defer func() { os.Args = orgArgs }() 17 18 pwd, err := filepath.Abs("testdata") 19 if err != nil { 20 t.Errorf("failed find testdata directory: %v", err) 21 } 22 os.Chdir(pwd) 23 os.Args = []string{"utopiactl", "cfg", "all"} 24 main() 25 26 os.Chdir(orgPWD) 27 os.Args = orgArgs 28 os.Setenv("PWD", orgPWD) 29 30 result, err := ioutil.ReadFile("testdata/configurations/service-repo/template") 31 if err != nil { 32 t.Errorf("failed to read result: %v", err) 33 } 34 golden, err := ioutil.ReadFile("testdata/golden/configurations/service-repo/template") 35 if err != nil { 36 t.Errorf("failed to read golden state: %v", err) 37 } 38 39 if bytes.Compare(result, golden) != 0 { 40 t.Errorf("Jinja rendering was incorrect, got: %+s, want: %+s.", result, golden) 41 } 42 43 result, err = ioutil.ReadFile("testdata/Makefile") 44 if err != nil { 45 t.Errorf("failed to read result: %v", err) 46 } 47 golden, err = ioutil.ReadFile("testdata/golden/Makefile") 48 if err != nil { 49 t.Errorf("failed to read golden state: %v", err) 50 } 51 52 if bytes.Compare(result, golden) != 0 { 53 t.Errorf("Makefile was incorrect, got: %+s, want: %+s.", result, golden) 54 } 55 } 56 57 func TestExec(t *testing.T) { 58 59 orgPWD := os.Getenv("PWD") 60 defer os.Chdir(orgPWD) 61 orgArgs := os.Args 62 defer func() { os.Args = orgArgs }() 63 64 os.Remove("testdata/services/service-repo2/abc") 65 66 pwd, err := filepath.Abs("testdata") 67 if err != nil { 68 t.Errorf("failed find testdata directory: %v", err) 69 } 70 os.Chdir(pwd) 71 os.Args = []string{"utopiactl", "exec", "service-repo2", "bash", "-c", "echo -n def > abc"} 72 main() 73 74 os.Chdir(orgPWD) 75 os.Args = orgArgs 76 os.Setenv("PWD", orgPWD) 77 78 result, err := ioutil.ReadFile("testdata/services/service-repo2/abc") 79 if err != nil { 80 t.Errorf("failed to read result: %v", err) 81 } 82 83 def := []byte("def") 84 if bytes.Compare(result, def) != 0 { 85 t.Errorf("command execution failed, got: %+s, want: %+s.", result, def) 86 } 87 }