github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/tests/utils_test.go (about)

     1  package tests
     2  
     3  import (
     4  	"bytes"
     5  	"context"
     6  	"fmt"
     7  	"math/rand"
     8  	"os"
     9  	"os/exec"
    10  	"strings"
    11  	"sync"
    12  	"testing"
    13  
    14  	"github.com/taubyte/tau-cli/common"
    15  	"gotest.tools/v3/assert"
    16  )
    17  
    18  var (
    19  	random = rand.New(rand.NewSource(42))
    20  
    21  	// Used for locking the singletons session for evaluation in tests
    22  	sessionLock sync.Mutex
    23  )
    24  
    25  func cleanArgs(args []string) string {
    26  	var newArgs string
    27  	for idx, arg := range args {
    28  		if idx > 0 {
    29  			newArgs += " "
    30  		}
    31  		// If it contains spaces, wrap it with ""
    32  		if strings.Contains(arg, " ") {
    33  			newArgs += fmt.Sprintf(`"%s"`, arg)
    34  		} else {
    35  			newArgs += arg
    36  		}
    37  	}
    38  
    39  	return "tau " + newArgs
    40  }
    41  
    42  func startMockOnPort(port string) context.CancelFunc {
    43  	ctx, ctxC := context.WithCancel(context.Background())
    44  
    45  	cmd := exec.CommandContext(ctx, "python3", "mock", port)
    46  
    47  	// Capture command output
    48  	var out bytes.Buffer
    49  	var errOut bytes.Buffer
    50  	cmd.Stdout = &out
    51  	cmd.Stderr = &errOut
    52  
    53  	err := cmd.Start()
    54  	if err != nil {
    55  		panic(fmt.Sprintf("running mock server failed with: %s\nOUT: %s\nERR: %s\n", err, out.String(), errOut.String()))
    56  	}
    57  
    58  	return ctxC
    59  }
    60  
    61  func runTests(t *testing.T, s *testSpider, parallel bool, debug ...bool) {
    62  	err := buildTau()
    63  	assert.NilError(t, err)
    64  
    65  	// check if "./_fakeroot exists", if not create it
    66  	_, err = os.Stat("./_fakeroot")
    67  	if os.IsNotExist(err) {
    68  		err = os.Mkdir("./_fakeroot", common.DefaultDirPermission)
    69  		assert.NilError(t, err)
    70  	}
    71  
    72  	spider := newSpider(s, parallel, debug...)
    73  
    74  	// Iterate through the monkey tests
    75  	t.Run(s.testName, spider.Run)
    76  }