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