diff --git a/cmd/podman/compose.go b/cmd/podman/compose.go index 869cbbb42d..d4df638993 100644 --- a/cmd/podman/compose.go +++ b/cmd/podman/compose.go @@ -170,6 +170,18 @@ func composeEnv() ([]string, error) { }, nil } +// composeShouldLogWarning returns whether a notice on engine redirection should be piped to stderr regardless of logging configuration +func composeShouldLogWarning() (bool, error) { + if shouldWarnLogsEnv, ok := os.LookupEnv("PODMAN_COMPOSE_WARNING_LOGS"); ok { + if shouldWarnLogsEnvVal, err := strconv.ParseBool(shouldWarnLogsEnv); err == nil { + return shouldWarnLogsEnvVal, nil + } else if shouldWarnLogsEnv != "" { + return true, fmt.Errorf("PODMAN_COMPOSE_WARNING_LOGS should be a boolean: %w", err) + } + } + return registry.PodmanConfig().ContainersConfDefaultsRO.Engine.ComposeWarningLogs, nil +} + // underline uses ANSI codes to underline the specified string. func underline(str string) string { return "\033[4m" + str + "\033[0m" @@ -229,7 +241,11 @@ func composeHelp(cmd *cobra.Command) error { return err } - return composeProviderExec([]string{"--help"}, nil, nil, registry.PodmanConfig().ContainersConfDefaultsRO.Engine.ComposeWarningLogs) + shouldLog, err := composeShouldLogWarning() + if err != nil { + return err + } + return composeProviderExec([]string{"--help"}, nil, nil, shouldLog) } // composeMain is the main function of the compose command. @@ -249,5 +265,9 @@ func composeMain(cmd *cobra.Command, args []string) error { return composeHelp(cmd) } - return composeProviderExec(args, nil, nil, registry.PodmanConfig().ContainersConfDefaultsRO.Engine.ComposeWarningLogs) + shouldLog, err := composeShouldLogWarning() + if err != nil { + return err + } + return composeProviderExec(args, nil, nil, shouldLog) } diff --git a/test/compose/test-compose b/test/compose/test-compose index 3275f987f6..ec87c291e3 100755 --- a/test/compose/test-compose +++ b/test/compose/test-compose @@ -295,11 +295,7 @@ else fi # hide annoying podman compose warnings, some tests want to check compose stderr and this breaks it. -CONTAINERS_CONF_OVERRIDE="$WORKDIR/containers.conf" -echo '[engine] -compose_warning_logs=false' > "$CONTAINERS_CONF_OVERRIDE" -export CONTAINERS_CONF_OVERRIDE - +export PODMAN_COMPOSE_WARNING_LOGS=false # Identify the tests to run. If called with args, use those as globs. tests_to_run=()