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 }