memos/store/test/main_test.go

51 lines
1.1 KiB
Go

package test
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"runtime"
"testing"
)
func TestMain(m *testing.M) {
// If DRIVER is set, run tests for that driver only
if os.Getenv("DRIVER") != "" {
defer TerminateContainers()
m.Run()
return
}
// No DRIVER set - run tests for all drivers sequentially
runAllDrivers()
}
func runAllDrivers() {
drivers := []string{"sqlite", "mysql", "postgres"}
_, currentFile, _, _ := runtime.Caller(0)
projectRoot := filepath.Dir(filepath.Dir(filepath.Dir(currentFile)))
var failed []string
for _, driver := range drivers {
fmt.Printf("\n==================== %s ====================\n\n", driver)
cmd := exec.Command("go", "test", "-v", "-count=1", "./store/test/...")
cmd.Dir = projectRoot
cmd.Env = append(os.Environ(), "DRIVER="+driver)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
failed = append(failed, driver)
}
}
fmt.Println()
if len(failed) > 0 {
fmt.Printf("FAIL: %v\n", failed)
panic("some drivers failed")
}
fmt.Println("PASS: all drivers")
}