github.com/safing/portbase@v0.19.5/api/main_test.go (about) 1 package api 2 3 import ( 4 "fmt" 5 "os" 6 "testing" 7 8 // API depends on the database for the database api. 9 _ "github.com/safing/portbase/database/dbmodule" 10 "github.com/safing/portbase/dataroot" 11 "github.com/safing/portbase/modules" 12 ) 13 14 func init() { 15 defaultListenAddress = "127.0.0.1:8817" 16 } 17 18 func TestMain(m *testing.M) { 19 // enable module for testing 20 module.Enable() 21 22 // tmp dir for data root (db & config) 23 tmpDir, err := os.MkdirTemp("", "portbase-testing-") 24 if err != nil { 25 fmt.Fprintf(os.Stderr, "failed to create tmp dir: %s\n", err) 26 os.Exit(1) 27 } 28 // initialize data dir 29 err = dataroot.Initialize(tmpDir, 0o0755) 30 if err != nil { 31 fmt.Fprintf(os.Stderr, "failed to initialize data root: %s\n", err) 32 os.Exit(1) 33 } 34 35 // start modules 36 var exitCode int 37 err = modules.Start() 38 if err != nil { 39 // starting failed 40 fmt.Fprintf(os.Stderr, "failed to setup test: %s\n", err) 41 exitCode = 1 42 } else { 43 // run tests 44 exitCode = m.Run() 45 } 46 47 // shutdown 48 _ = modules.Shutdown() 49 if modules.GetExitStatusCode() != 0 { 50 exitCode = modules.GetExitStatusCode() 51 fmt.Fprintf(os.Stderr, "failed to cleanly shutdown test: %s\n", err) 52 } 53 // clean up and exit 54 _ = os.RemoveAll(tmpDir) 55 os.Exit(exitCode) 56 }