forked from bjarneo/ku
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain_test.go
More file actions
44 lines (40 loc) · 855 Bytes
/
Copy pathmain_test.go
File metadata and controls
44 lines (40 loc) · 855 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main
import (
"io"
"os"
"strings"
"testing"
)
func TestRunUpgradeHelpPrintsUsage(t *testing.T) {
out := captureStdout(t, func() {
if err := runUpgrade([]string{"--help"}); err != nil {
t.Fatalf("runUpgrade(--help): %v", err)
}
})
if !strings.Contains(out, "usage: ku upgrade") {
t.Fatalf("help output = %q, want usage", out)
}
}
func captureStdout(t *testing.T, f func()) string {
t.Helper()
old := os.Stdout
r, w, err := os.Pipe()
if err != nil {
t.Fatalf("pipe stdout: %v", err)
}
os.Stdout = w
t.Cleanup(func() { os.Stdout = old })
f()
if err := w.Close(); err != nil {
t.Fatalf("close stdout pipe: %v", err)
}
b, err := io.ReadAll(r)
if err != nil {
t.Fatalf("read stdout: %v", err)
}
if err := r.Close(); err != nil {
t.Fatalf("close stdout reader: %v", err)
}
os.Stdout = old
return string(b)
}