MCPcopy
hub / github.com/pocketbase/pocketbase / TestYesNoPrompt

Function TestYesNoPrompt

tools/osutils/cmd_test.go:12–66  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

10)
11
12func TestYesNoPrompt(t *testing.T) {
13 scenarios := []struct {
14 stdin string
15 fallback bool
16 expected bool
17 }{
18 {"", false, false},
19 {"", true, true},
20
21 // yes
22 {"y", false, true},
23 {"Y", false, true},
24 {"Yes", false, true},
25 {"yes", false, true},
26
27 // no
28 {"n", true, false},
29 {"N", true, false},
30 {"No", true, false},
31 {"no", true, false},
32
33 // invalid -> no/yes
34 {"invalid|no", true, false},
35 {"invalid|yes", false, true},
36 }
37
38 for _, s := range scenarios {
39 t.Run(fmt.Sprintf("%s_%v", s.stdin, s.fallback), func(t *testing.T) {
40 stdinread, stdinwrite, err := os.Pipe()
41 if err != nil {
42 t.Fatal(err)
43 }
44
45 parts := strings.Split(s.stdin, "|")
46 for _, p := range parts {
47 if _, err := stdinwrite.WriteString(p + "\n"); err != nil {
48 t.Fatalf("Failed to write test stdin part %q: %v", p, err)
49 }
50 }
51
52 if err = stdinwrite.Close(); err != nil {
53 t.Fatal(err)
54 }
55
56 defer func(oldStdin *os.File) { os.Stdin = oldStdin }(os.Stdin)
57 os.Stdin = stdinread
58
59 result := osutils.YesNoPrompt("test", s.fallback)
60
61 if result != s.expected {
62 t.Fatalf("Expected %v, got %v", s.expected, result)
63 }
64 })
65 }
66}

Callers

nothing calls this directly

Calls 3

YesNoPromptFunction · 0.92
CloseMethod · 0.65
RunMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…