From 4a3ece0c6c22e6a3f376c26d38eb4dbad8ada420 Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Fri, 9 Aug 2024 10:53:29 +0000 Subject: [PATCH] [bugfix] ensure testrig package only compiled-in when debug enabled (#3185) * ensure testrig package only compiled-in (including init) when debug enabled * add code comment to testrig init to indicate WebAssembly compilation --- cmd/gotosocial/action/testrig/no_testrig.go | 26 ++++++++++++++++++ cmd/gotosocial/action/testrig/testrig.go | 5 +++- cmd/gotosocial/main.go | 10 +++---- cmd/gotosocial/testrig.go | 29 ++++++++++++--------- testrig/config.go | 3 +++ 5 files changed, 54 insertions(+), 19 deletions(-) create mode 100644 cmd/gotosocial/action/testrig/no_testrig.go diff --git a/cmd/gotosocial/action/testrig/no_testrig.go b/cmd/gotosocial/action/testrig/no_testrig.go new file mode 100644 index 000000000..7205ecf6b --- /dev/null +++ b/cmd/gotosocial/action/testrig/no_testrig.go @@ -0,0 +1,26 @@ +// GoToSocial +// Copyright (C) GoToSocial Authors admin@gotosocial.org +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +//go:build !debug && !debugenv + +package testrig + +import "github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action" + +// Start creates and starts a gotosocial testrig server. +// This is only enabled in debug builds, else is nil. +var Start action.GTSAction diff --git a/cmd/gotosocial/action/testrig/testrig.go b/cmd/gotosocial/action/testrig/testrig.go index 95982fc72..19588c70a 100644 --- a/cmd/gotosocial/action/testrig/testrig.go +++ b/cmd/gotosocial/action/testrig/testrig.go @@ -15,6 +15,8 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . +//go:build debug || debugenv + package testrig import ( @@ -52,7 +54,8 @@ import ( "github.com/superseriousbusiness/gotosocial/testrig" ) -// Start creates and starts a gotosocial testrig server +// Start creates and starts a gotosocial testrig server. +// This is only enabled in debug builds, else is nil. var Start action.GTSAction = func(ctx context.Context) error { testrig.InitTestConfig() testrig.InitTestLog() diff --git a/cmd/gotosocial/main.go b/cmd/gotosocial/main.go index 5c610f1a3..7d45c126d 100644 --- a/cmd/gotosocial/main.go +++ b/cmd/gotosocial/main.go @@ -23,7 +23,6 @@ import ( godebug "runtime/debug" "strings" - "codeberg.org/gruf/go-debug" "github.com/spf13/cobra" _ "github.com/superseriousbusiness/gotosocial/docs" @@ -63,11 +62,12 @@ func main() { rootCmd.AddCommand(serverCommands()) rootCmd.AddCommand(debugCommands()) rootCmd.AddCommand(adminCommands()) - if debug.DEBUG { - // only add testrig if debug enabled. - rootCmd.AddCommand(testrigCommands()) + + // Testrigcmd will only be set when debug is enabled. + if testrigCmd := testrigCommands(); testrigCmd != nil { + rootCmd.AddCommand(testrigCmd) } else if len(os.Args) > 1 && os.Args[1] == "testrig" { - log.Fatalln("gotosocial must be built and run with the DEBUG enviroment variable set to enable and access testrig") + log.Fatal("gotosocial must be built and run with the DEBUG enviroment variable set to enable and access testrig") } // run diff --git a/cmd/gotosocial/testrig.go b/cmd/gotosocial/testrig.go index 20cca9f1c..124fc1105 100644 --- a/cmd/gotosocial/testrig.go +++ b/cmd/gotosocial/testrig.go @@ -23,19 +23,22 @@ import ( ) func testrigCommands() *cobra.Command { - testrigCmd := &cobra.Command{ - Use: "testrig", - Short: "gotosocial testrig-related tasks", - } + if testrig.Start != nil { + testrigCmd := &cobra.Command{ + Use: "testrig", + Short: "gotosocial testrig-related tasks", + } - testrigStartCmd := &cobra.Command{ - Use: "start", - Short: "start the gotosocial testrig server", - RunE: func(cmd *cobra.Command, args []string) error { - return run(cmd.Context(), testrig.Start) - }, - } + testrigStartCmd := &cobra.Command{ + Use: "start", + Short: "start the gotosocial testrig server", + RunE: func(cmd *cobra.Command, args []string) error { + return run(cmd.Context(), testrig.Start) + }, + } - testrigCmd.AddCommand(testrigStartCmd) - return testrigCmd + testrigCmd.AddCommand(testrigStartCmd) + return testrigCmd + } + return nil } diff --git a/testrig/config.go b/testrig/config.go index ed98798d6..6a4254d61 100644 --- a/testrig/config.go +++ b/testrig/config.go @@ -19,6 +19,7 @@ package testrig import ( "context" + "fmt" "os" "strconv" "time" @@ -34,11 +35,13 @@ func init() { ctx := context.Background() // Ensure global ffmpeg WASM pool initialized. + fmt.Println("testrig: precompiling ffmpeg WASM") if err := ffmpeg.InitFfmpeg(ctx, 1); err != nil { panic(err) } // Ensure global ffmpeg WASM pool initialized. + fmt.Println("testrig: precompiling ffprobe WASM") if err := ffmpeg.InitFfprobe(ctx, 1); err != nil { panic(err) }