Skip to content

Commit 175f705

Browse files
authored
Fix verbose option in CLI mode (#28)
Before, `v` would always be false, so the `-verbose` option never worked.
1 parent 278d7a9 commit 175f705

2 files changed

Lines changed: 38 additions & 5 deletions

File tree

main.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,19 @@ func cliOptions(stdout io.Writer, args []string) (*options, error) {
103103
flags.StringVar(&opts.format, "format", "text", "The format of the output: text or markdown")
104104
flags.StringVar(&opts.filename, "filename", "CODENOTIFY", "The filename in which file subscribers are defined")
105105
flags.IntVar(&opts.subscriberThreshold, "subscriber-threshold", 0, "The threshold of notifying subscribers")
106-
v := *flags.Bool("verbose", false, "Verbose messages printed to stderr")
106+
var v bool
107+
flags.BoolVar(&v, "verbose", false, "Verbose messages printed to stderr")
108+
109+
if err := flags.Parse(args); err != nil {
110+
return nil, err
111+
}
107112

108113
if v {
109114
verbose = os.Stderr
110115
} else {
111116
verbose = ioutil.Discard
112117
}
113118

114-
if err := flags.Parse(args); err != nil {
115-
return nil, err
116-
}
117-
118119
opts.print = func(notifs map[string][]string) error {
119120
return opts.writeNotifications(stdout, notifs)
120121
}

main_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"bytes"
55
"fmt"
6+
"io"
67
"io/ioutil"
78
"os"
89
"os/exec"
@@ -129,6 +130,37 @@ func TestMain(t *testing.T) {
129130
}
130131
}
131132

133+
func TestCliOptions(t *testing.T) {
134+
var originalVerbose io.Writer = verbose
135+
defer func() { verbose = originalVerbose }()
136+
tests := []struct {
137+
name string
138+
args []string
139+
verbose io.Writer
140+
}{
141+
{
142+
name: "no arguments",
143+
args: []string{},
144+
verbose: ioutil.Discard,
145+
},
146+
{
147+
name: "verbose option",
148+
args: []string{"-verbose"},
149+
verbose: os.Stderr,
150+
},
151+
}
152+
153+
for _, test := range tests {
154+
t.Run(test.name, func(t *testing.T) {
155+
stdout := &bytes.Buffer{}
156+
cliOptions(stdout, test.args)
157+
if verbose != test.verbose {
158+
t.Errorf("expected verbose to be %v; got %v", test.verbose, verbose)
159+
}
160+
})
161+
}
162+
}
163+
132164
func TestWriteNotifications(t *testing.T) {
133165
tests := []struct {
134166
name string

0 commit comments

Comments
 (0)