fix(secretstore): disable loader during interactive bitwarden prompts
This commit is contained in:
parent
6e80d3418e
commit
017005b0b1
2 changed files with 35 additions and 4 deletions
|
|
@ -42,6 +42,7 @@ type bitwardenInteractiveRunner func(
|
|||
|
||||
var runBitwardenCLI bitwardenRunner = executeBitwardenCLI
|
||||
var runBitwardenInteractiveCLI bitwardenInteractiveRunner = executeBitwardenCLIInteractive
|
||||
var startBitwardenLoaderFunc = startBitwardenLoader
|
||||
var bitwardenLoaderActive atomic.Bool
|
||||
var bitwardenDebugOutput io.Writer = os.Stderr
|
||||
|
||||
|
|
@ -638,7 +639,7 @@ func sanitizeBitwardenDebugArgs(args []string) []string {
|
|||
}
|
||||
|
||||
func executeBitwardenCLI(command string, stdin []byte, args ...string) ([]byte, error) {
|
||||
stopLoader := startBitwardenLoader()
|
||||
stopLoader := startBitwardenLoaderFunc()
|
||||
defer stopLoader()
|
||||
|
||||
cmd := exec.Command(command, args...)
|
||||
|
|
@ -664,9 +665,6 @@ func executeBitwardenCLIInteractive(
|
|||
stdout, stderr io.Writer,
|
||||
args ...string,
|
||||
) ([]byte, error) {
|
||||
stopLoader := startBitwardenLoader()
|
||||
defer stopLoader()
|
||||
|
||||
cmd := exec.Command(command, args...)
|
||||
if stdin != nil {
|
||||
cmd.Stdin = stdin
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
|
|
@ -484,6 +485,28 @@ func TestBitwardenLoaderFrameMovesAndWrapsTheWave(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestExecuteBitwardenCLIInteractiveSkipsLoader(t *testing.T) {
|
||||
loaderStartCount := 0
|
||||
withBitwardenLoaderStarter(t, func() func() {
|
||||
loaderStartCount++
|
||||
return func() {}
|
||||
})
|
||||
|
||||
_, err := executeBitwardenCLIInteractive(
|
||||
os.Args[0],
|
||||
nil,
|
||||
io.Discard,
|
||||
io.Discard,
|
||||
"-test.run=^$",
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("executeBitwardenCLIInteractive returned error: %v", err)
|
||||
}
|
||||
if loaderStartCount != 0 {
|
||||
t.Fatalf("loader start count = %d, want 0 for interactive command", loaderStartCount)
|
||||
}
|
||||
}
|
||||
|
||||
var ansiControlSequencePattern = regexp.MustCompile(`\x1b\[[0-9;]*[A-Za-z]`)
|
||||
|
||||
func stripANSIControlSequences(value string) string {
|
||||
|
|
@ -552,6 +575,16 @@ func withBitwardenDebugOutput(t *testing.T, writer io.Writer) {
|
|||
})
|
||||
}
|
||||
|
||||
func withBitwardenLoaderStarter(t *testing.T, starter func() func()) {
|
||||
t.Helper()
|
||||
|
||||
previous := startBitwardenLoaderFunc
|
||||
startBitwardenLoaderFunc = starter
|
||||
t.Cleanup(func() {
|
||||
startBitwardenLoaderFunc = previous
|
||||
})
|
||||
}
|
||||
|
||||
type fakeBitwardenCLI struct {
|
||||
command string
|
||||
itemsByID map[string]fakeBitwardenItem
|
||||
|
|
|
|||
Loading…
Reference in a new issue