diff --git a/core/base.go b/core/base.go index b65b4420..f28ab29a 100644 --- a/core/base.go +++ b/core/base.go @@ -17,15 +17,13 @@ import ( var ( dataDir string databaseDir string - - baseModule = modules.Register("base", prepBase, nil, nil) ) func init() { flag.StringVar(&dataDir, "data", "", "set data directory") flag.StringVar(&databaseDir, "db", "", "alias to --data (deprecated)") - notifications.SetPersistenceBasePath("core:notifications") + modules.Register("base", prepBase, nil, nil, "info") } func prepBase() error { @@ -59,5 +57,8 @@ func prepBase() error { // set api listen address api.SetDefaultAPIListenAddress("127.0.0.1:817") + // set notification persistence + notifications.SetPersistenceBasePath("core:notifications") + return nil } diff --git a/core/config.go b/core/config.go index f4e1a7ae..10952408 100644 --- a/core/config.go +++ b/core/config.go @@ -8,7 +8,6 @@ import ( ) var ( - devMode config.BoolOption defaultDevMode bool ) @@ -27,8 +26,9 @@ func registerConfig() error { Name: "Development Mode", Key: "core/devMode", Description: "In Development Mode security restrictions are lifted/softened to enable easier access to Portmaster for debugging and testing purposes.", - ExpertiseLevel: config.ExpertiseLevelDeveloper, OptType: config.OptTypeBool, + ExpertiseLevel: config.ExpertiseLevelDeveloper, + ReleaseLevel: config.ReleaseLevelStable, DefaultValue: defaultDevMode, }) if err != nil { diff --git a/core/core.go b/core/core.go index 9b34f92f..730bfe83 100644 --- a/core/core.go +++ b/core/core.go @@ -6,9 +6,9 @@ import ( "github.com/safing/portbase/modules" ) -var ( - coreModule = modules.Register("core", nil, startCore, nil, "base", "database", "config", "api", "random") -) +func init() { + modules.Register("core", nil, startCore, nil, "base", "database", "config", "api", "random") +} func startCore() error { if err := startPlatformSpecific(); err != nil { diff --git a/core/testing.go b/core/testing.go new file mode 100644 index 00000000..0b37375d --- /dev/null +++ b/core/testing.go @@ -0,0 +1,70 @@ +package core + +import ( + "io/ioutil" + "os" + + "github.com/safing/portbase/log" + + "github.com/safing/portbase/database" + + // module dependencies + _ "github.com/safing/portbase/database/storage/hashmap" +) + +// InitForTesting initializes the core module directly. This is intended to be only used by unit tests that require the core (and depending) modules. +func InitForTesting() (tmpDir string, err error) { + tmpDir, err = ioutil.TempDir(os.TempDir(), "pm-testing-") + if err != nil { + return "", err + } + + err = database.Initialize(tmpDir, nil) + if err != nil { + return "", err + } + + _, err = database.Register(&database.Database{ + Name: "core", + Description: "Holds core data, such as settings and profiles", + StorageType: "hashmap", + PrimaryAPI: "", + }) + if err != nil { + return "", err + } + + _, err = database.Register(&database.Database{ + Name: "cache", + Description: "Cached data, such as Intelligence and DNS Records", + StorageType: "hashmap", + PrimaryAPI: "", + }) + if err != nil { + return "", err + } + + // _, err = database.Register(&database.Database{ + // Name: "history", + // Description: "Historic event data", + // StorageType: "hashmap", + // PrimaryAPI: "", + // }) + // if err != nil { + // return err + // } + + // start logging + err = log.Start() + if err != nil { + return "", err + } + log.SetLogLevel(log.TraceLevel) + + return tmpDir, nil +} + +// StopTesting shuts the test environment. +func StopTesting() { + log.Shutdown() +}