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  }