Skip to content

Commit 604b6dc

Browse files
authored
Merge pull request #12 from ploxiln/flagset_test
define command-line flags in new mainFlagSet() function
2 parents 2da0c32 + cd447d6 commit 604b6dc

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

main.go

+11-5
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ import (
1313
"github.com/mreiferson/go-options"
1414
)
1515

16-
func main() {
17-
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
16+
func mainFlagSet() *flag.FlagSet {
1817
flagSet := flag.NewFlagSet("oauth2_proxy", flag.ExitOnError)
1918

2019
emailDomains := StringArray{}
@@ -24,9 +23,6 @@ func main() {
2423
googleGroups := StringArray{}
2524
gitlabGroups := StringArray{}
2625

27-
config := flagSet.String("config", "", "path to config file")
28-
showVersion := flagSet.Bool("version", false, "print version string")
29-
3026
flagSet.String("http-address", "127.0.0.1:4180", "[http://]<addr>:<port> or unix://<path> to listen on for HTTP clients")
3127
flagSet.String("https-address", ":443", "<addr>:<port> to listen on for HTTPS clients")
3228
flagSet.String("tls-cert", "", "path to certificate file")
@@ -85,6 +81,16 @@ func main() {
8581

8682
flagSet.String("signature-key", "", "GAP-Signature request signature key (algorithm:secretkey)")
8783

84+
return flagSet
85+
}
86+
87+
func main() {
88+
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
89+
flagSet := mainFlagSet()
90+
91+
config := flagSet.String("config", "", "path to config file")
92+
showVersion := flagSet.Bool("version", false, "print version string")
93+
8894
flagSet.Parse(os.Args[1:])
8995

9096
if *showVersion {

options_test.go

+18
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"testing"
99
"time"
1010

11+
"github.com/mreiferson/go-options"
1112
"github.com/stretchr/testify/assert"
1213
)
1314

@@ -72,6 +73,23 @@ func TestInitializedOptions(t *testing.T) {
7273
assert.Equal(t, nil, o.Validate())
7374
}
7475

76+
func TestMultiGitLabGroupOptions(t *testing.T) {
77+
flagSet := mainFlagSet()
78+
flagSet.Parse([]string{"--gitlab-group=one", "-gitlab-group=two"})
79+
opts := NewOptions()
80+
cfg := make(EnvOptions)
81+
options.Resolve(opts, flagSet, cfg)
82+
83+
assert.Equal(t, []string{"one", "two"}, opts.GitLabGroups)
84+
85+
flagSet = mainFlagSet()
86+
flagSet.Parse([]string{"--upstream=http://127.0.0.1:2000"})
87+
opts = NewOptions()
88+
options.Resolve(opts, flagSet, cfg)
89+
90+
assert.Equal(t, 0, len(opts.GitLabGroups))
91+
}
92+
7593
// Note that it's not worth testing nonparseable URLs, since url.Parse()
7694
// seems to parse damn near anything.
7795
func TestRedirectURL(t *testing.T) {

0 commit comments

Comments
 (0)