Skip to content

Commit 790afa3

Browse files
committed
fixup! Testing...
1 parent 7e0e279 commit 790afa3

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

cli/clibase/cmd_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package clibase_test
33
import (
44
"bytes"
55
"context"
6+
"fmt"
67
"strings"
78
"testing"
89

@@ -550,3 +551,46 @@ func TestCommand_EmptySlice(t *testing.T) {
550551
err = inv.Run()
551552
require.NoError(t, err)
552553
}
554+
555+
func TestCommand_DefaultsOverride(t *testing.T) {
556+
t.Parallel()
557+
558+
var got string
559+
cmd := &clibase.Cmd{
560+
Options: clibase.OptionSet{
561+
{
562+
Name: "url",
563+
Flag: "url",
564+
Default: "def.com",
565+
Env: "URL",
566+
Value: clibase.StringOf(&got),
567+
},
568+
},
569+
Handler: (func(i *clibase.Invocation) error {
570+
_, _ = fmt.Fprintf(i.Stdout, "%s", got)
571+
return nil
572+
}),
573+
}
574+
575+
// Base case
576+
inv := cmd.Invoke()
577+
stdio := fakeIO(inv)
578+
err := inv.Run()
579+
require.NoError(t, err)
580+
require.Equal(t, "def.com", stdio.Stdout.String())
581+
582+
// Flag overrides
583+
inv = cmd.Invoke("--url", "good.com")
584+
stdio = fakeIO(inv)
585+
err = inv.Run()
586+
require.NoError(t, err)
587+
require.Equal(t, "good.com", stdio.Stdout.String())
588+
589+
// Env overrides
590+
inv = cmd.Invoke()
591+
inv.Environ.Set("URL", "good.com")
592+
stdio = fakeIO(inv)
593+
err = inv.Run()
594+
require.NoError(t, err)
595+
require.Equal(t, "good.com", stdio.Stdout.String())
596+
}

cli/clibase/option.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ func (s *OptionSet) ParseEnv(vs []EnvVar) error {
117117
envs[v.Name] = v.Value
118118
}
119119

120-
for _, opt := range *s {
120+
for i, opt := range *s {
121121
if opt.Env == "" {
122122
continue
123123
}
@@ -136,6 +136,7 @@ func (s *OptionSet) ParseEnv(vs []EnvVar) error {
136136
}
137137

138138
opt.envChanged = true
139+
(*s)[i] = opt
139140
if err := opt.Value.Set(envVal); err != nil {
140141
merr = multierror.Append(
141142
merr, xerrors.Errorf("parse %q: %w", opt.Name, err),

0 commit comments

Comments
 (0)