check / check (push) Failing after 21m27s
prune, snapshot purge, snapshot remove and database delete exited 0 when their confirmation prompt was declined or left unanswered, so a script could not tell that nothing was deleted. They now end with "deletion not confirmed" and exit 1. The [y/N] prompts accept y or Y; database delete still asks for yes. Model: opus-5-5
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package cli //nolint:testpackage // sets the unexported rootFlags directly
|
|
|
|
import (
|
|
"bytes"
|
|
"errors"
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
"sneak.berlin/go/vaultik/internal/vaultik"
|
|
)
|
|
|
|
// TestDatabaseDeleteDeclinedIsError checks that answering anything but
|
|
// "yes" keeps the database and returns ErrNotConfirmed, so the command
|
|
// exits non-zero.
|
|
//
|
|
//nolint:paralleltest // mutates the process-global rootFlags
|
|
func TestDatabaseDeleteDeclinedIsError(t *testing.T) {
|
|
dir := t.TempDir()
|
|
dbPath, cfgPath := seedDatabaseDeleteConfig(t, dir)
|
|
|
|
setRootFlags(t, RootFlags{ConfigPath: cfgPath})
|
|
|
|
var out bytes.Buffer
|
|
|
|
cmd := newDatabaseDeleteCommand()
|
|
cmd.SetOut(&out)
|
|
cmd.SetErr(io.Discard)
|
|
cmd.SetIn(strings.NewReader("no\n"))
|
|
cmd.SetArgs(nil)
|
|
|
|
err := cmd.Execute()
|
|
if !errors.Is(err, vaultik.ErrNotConfirmed) {
|
|
t.Errorf("declined database delete returned %v, want %v",
|
|
err, vaultik.ErrNotConfirmed)
|
|
}
|
|
|
|
_, err = os.Stat(dbPath)
|
|
if err != nil {
|
|
t.Errorf("declined database delete removed the file: %v", err)
|
|
}
|
|
|
|
if !strings.Contains(out.String(), "Aborted.") {
|
|
t.Errorf("declined database delete printed %q, want Aborted.",
|
|
out.String())
|
|
}
|
|
}
|