// Package testsuite provides many quick-and-dirty integration testing utilities. package testsuite import ( "log" "os" "os/exec" "os/signal" "syscall" ) func init() { log.SetFlags(0) log.SetPrefix("testsuite: ") if os.Geteuid() != 0 { log.Fatal("this program must run as root") } } // ReceiveSignals blocks until a termination signal arrives, and terminates. func ReceiveSignals() { s := make(chan os.Signal, 3) signal.Notify(s, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP) log.Fatalf("terminating on signal %s", <-s) } // MustRun runs command and terminates the testsuite on error. func MustRun(command ...string) { cmd := exec.Command(command[0], command[1:]...) cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr if err := cmd.Run(); err != nil { log.Fatal(err) } } // MustRunAs wraps [MustRun] for sudo. func MustRunAs(username string, command ...string) { MustRun(append([]string{"sudo", "-u", username}, command...)...) }