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  }