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  }