github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/executables/builder_test.go (about) 1 package executables_test 2 3 import ( 4 "bytes" 5 "fmt" 6 "io" 7 "os" 8 "os/exec" 9 "path/filepath" 10 "testing" 11 12 "github.com/caos/orbos/internal/executables" 13 ) 14 15 func TestBuildAndParseNodeAgent(t *testing.T) { 16 17 /* if err := os.Chdir("../../../../"); err != nil { 18 t.Fatal(err) 19 } 20 */ 21 testCommit := "itworks" 22 testTag := "v0.1.0" 23 24 cleanup, err := executables.Build("", "", testCommit, testTag) 25 defer cleanup() 26 27 if err != nil { 28 t.Fatal(err) 29 } 30 31 packed, err := executables.Pack() 32 if err != nil { 33 t.Fatal(err) 34 } 35 36 if len(*packed) < 1 { 37 t.Fatalf("packed nodeagent is empty") 38 } 39 40 unpacked, err := nodeagent.Unpack(packed) 41 if err != nil { 42 t.Fatal(err) 43 } 44 45 unpackedPath := filepath.Join(nodeagent.SelfPath, "unpacked") 46 unpackedExecutable, err := os.Create(unpackedPath) 47 if err != nil { 48 t.Fatal(err) 49 } 50 defer func() { 51 unpackedExecutable.Close() 52 os.Remove(unpackedPath) 53 }() 54 if err := unpackedExecutable.Chmod(0700); err != nil { 55 t.Fatal(err) 56 } 57 58 if _, err = io.Copy(unpackedExecutable, bytes.NewReader(unpacked)); err != nil { 59 t.Fatal(err) 60 } 61 unpackedExecutable.Close() 62 63 buf := new(bytes.Buffer) 64 defer buf.Reset() 65 cmd := exec.Command(unpackedPath, "-version") 66 cmd.Stdout = buf 67 68 if err := cmd.Run(); err != nil { 69 t.Fatal(err) 70 } 71 72 expected := fmt.Sprintf("%s %s\n", testTag, testCommit) 73 actual := buf.String() 74 if actual != expected { 75 t.Fatalf("expected %s but got %s", expected, actual) 76 } 77 }