latest from ai, it broke the tests
This commit is contained in:
58
internal/cli/test_helpers.go
Normal file
58
internal/cli/test_helpers.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"git.eeqj.de/sneak/secret/internal/secret"
|
||||
)
|
||||
|
||||
// ExecuteCommandInProcess executes a CLI command in-process for testing
|
||||
func ExecuteCommandInProcess(args []string, stdin string, env map[string]string) (string, error) {
|
||||
secret.Debug("ExecuteCommandInProcess called", "args", args)
|
||||
|
||||
// Save current environment
|
||||
savedEnv := make(map[string]string)
|
||||
for k := range env {
|
||||
savedEnv[k] = os.Getenv(k)
|
||||
}
|
||||
|
||||
// Set test environment
|
||||
for k, v := range env {
|
||||
os.Setenv(k, v)
|
||||
}
|
||||
|
||||
// Create root command
|
||||
rootCmd := newRootCmd()
|
||||
|
||||
// Capture output
|
||||
var buf bytes.Buffer
|
||||
rootCmd.SetOut(&buf)
|
||||
rootCmd.SetErr(&buf)
|
||||
|
||||
// Set stdin if provided
|
||||
if stdin != "" {
|
||||
rootCmd.SetIn(strings.NewReader(stdin))
|
||||
}
|
||||
|
||||
// Set args
|
||||
rootCmd.SetArgs(args)
|
||||
|
||||
// Execute command
|
||||
err := rootCmd.Execute()
|
||||
|
||||
output := buf.String()
|
||||
secret.Debug("Command execution completed", "error", err, "outputLength", len(output), "output", output)
|
||||
|
||||
// Restore environment
|
||||
for k, v := range savedEnv {
|
||||
if v == "" {
|
||||
os.Unsetenv(k)
|
||||
} else {
|
||||
os.Setenv(k, v)
|
||||
}
|
||||
}
|
||||
|
||||
return output, err
|
||||
}
|
||||
Reference in New Issue
Block a user