Add tests for the platform server command (#8231)
* Cleanup app state on initialization error When returning an initialization error, the app state was not cleaned up. This is especially visible during tests, as `appCount` is not decremented, and makes the new app initialization fail. * Test the `platform server` command As the `platform server` command only exits when interrupted by a signal, it is not possible to test it as the other cobra commands. Instead we directly test the actual command function. The internal command handler is slighly refactored to take a channel in argument, and registers it as the signal handler. Nothing very different—except than controlling this channel from the outside allows the test to send the system signal itself, thus preventing the server to run forever.
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
3e0c3eff9f
Коммит
07fd7aeeb8
11
app/app.go
11
app/app.go
@@ -86,7 +86,7 @@ var appCount = 0
|
||||
|
||||
// New creates a new App. You must call Shutdown when you're done with it.
|
||||
// XXX: For now, only one at a time is allowed as some resources are still shared.
|
||||
func New(options ...Option) (*App, error) {
|
||||
func New(options ...Option) (outApp *App, outErr error) {
|
||||
appCount++
|
||||
if appCount > 1 {
|
||||
panic("Only one App should exist at a time. Did you forget to call Shutdown()?")
|
||||
@@ -103,6 +103,11 @@ func New(options ...Option) (*App, error) {
|
||||
clientConfig: make(map[string]string),
|
||||
licenseListeners: map[string]func(){},
|
||||
}
|
||||
defer func() {
|
||||
if outErr != nil {
|
||||
app.Shutdown()
|
||||
}
|
||||
}()
|
||||
|
||||
for _, option := range options {
|
||||
option(app)
|
||||
@@ -182,7 +187,9 @@ func (a *App) Shutdown() {
|
||||
a.ShutDownPlugins()
|
||||
a.WaitForGoroutines()
|
||||
|
||||
a.Srv.Store.Close()
|
||||
if a.Srv.Store != nil {
|
||||
a.Srv.Store.Close()
|
||||
}
|
||||
a.Srv = nil
|
||||
|
||||
if a.htmlTemplateWatcher != nil {
|
||||
|
||||
Ссылка в новой задаче
Block a user