File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ package main
2+
3+ import (
4+ "bytes"
5+ "io"
6+ "os"
7+ "strings"
8+ "testing"
9+ )
10+
11+ // commandOutput returns stdout for a deisctl command line as a string.
12+ func commandOutput (args []string ) (output string ) {
13+ old := os .Stdout
14+ r , w , _ := os .Pipe ()
15+ os .Stdout = w
16+
17+ Command (args )
18+
19+ outC := make (chan string )
20+ go func () {
21+ var buf bytes.Buffer
22+ io .Copy (& buf , r )
23+ outC <- buf .String ()
24+ }()
25+
26+ w .Close ()
27+ os .Stdout = old
28+ output = <- outC
29+ return
30+ }
31+
32+ // TestHelp tests that deisctl is flexible when being asked to print built-in help.
33+ func TestHelp (t * testing.T ) {
34+ allArgs := [][]string {{"-h" }, {"--help" }, {"help" }}
35+ out := ""
36+ for _ , args := range allArgs {
37+ out = commandOutput (args )
38+ if ! strings .Contains (out , "Usage: deisctl <command> [<args>...] [options]" ) ||
39+ ! strings .Contains (out , "Commands, use \" deisctl help <command>\" to learn more" ) {
40+ t .Error (out )
41+ }
42+ }
43+ }
44+
45+ // TestUsage ensures that deisctl prints a short usage string when no arguments were provided.
46+ func TestUsage (t * testing.T ) {
47+ out := commandOutput (nil )
48+ if out != "Usage: deisctl <command> [<args>...] [options]\n " {
49+ t .Error (out )
50+ }
51+ }
52+
53+ // TestVersion verifies that "deisctl --version" prints the current version string.
54+ func TestVersion (t * testing.T ) {
55+ args := []string {"--version" }
56+ out := commandOutput (args )
57+ if ! strings .HasPrefix (out , Version ) {
58+ t .Error (out )
59+ }
60+ }
You can’t perform that action at this time.
0 commit comments