Skip to content

Commit

Permalink
Add test for WithVersion option (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
mfridman authored Mar 7, 2024
1 parent 607d06e commit 43fa23a
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 2 deletions.
19 changes: 17 additions & 2 deletions protoplugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,9 @@ func run(
_, err := fmt.Fprintln(stdout, runOptions.version)
return err
}
return fmt.Errorf("unknown argument: %s", args[0])
return newUnknownArgumentsError(args)
default:
return fmt.Errorf("unknown arguments: %v", strings.Join(args, " "))
return newUnknownArgumentsError(args)
}

if runOptions.warningHandlerFunc == nil {
Expand Down Expand Up @@ -210,3 +210,18 @@ func (f mainOptionsFunc) applyMainOption(runOptions *runOptions) {
func (f mainOptionsFunc) applyRunOption(runOptions *runOptions) {
f(runOptions)
}

type unknownArgumentsError struct {
args []string
}

func newUnknownArgumentsError(args []string) error {
return &unknownArgumentsError{args: args}
}

func (e *unknownArgumentsError) Error() string {
if len(e.args) == 1 {
return fmt.Sprintf("unknown argument: %s", e.args[0])
}
return fmt.Sprintf("unknown arguments: %s", strings.Join(e.args, " "))
}
33 changes: 33 additions & 0 deletions protoplugin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"sort"
"strings"
"testing"
"testing/iotest"

"github.com/bufbuild/protocompile"
"github.com/bufbuild/protocompile/protoutil"
Expand Down Expand Up @@ -68,6 +69,38 @@ func TestBasic(t *testing.T) {
)
}

func TestWithVersionOption(t *testing.T) {
t.Parallel()

run := func(args []string, runOptions ...RunOption) (string, error) {
stdout := bytes.NewBuffer(nil)
err := Run(
context.Background(),
args,
iotest.ErrReader(io.EOF),
stdout,
io.Discard,
HandlerFunc(func(ctx context.Context, w *ResponseWriter, r *Request) error { return nil }),
runOptions...,
)
return stdout.String(), err
}

var unknownArgumentsError *unknownArgumentsError
_, err := run([]string{"--unsupported"})
require.ErrorAs(t, err, &unknownArgumentsError)
_, err = run([]string{"--unsupported"}, WithVersion("0.0.1"))
require.ErrorAs(t, err, &unknownArgumentsError)
_, err = run([]string{"--version"})
require.ErrorAs(t, err, &unknownArgumentsError)
_, err = run([]string{"--foo", "--bar"})
require.ErrorAs(t, err, &unknownArgumentsError)

out, err := run([]string{"--version"}, WithVersion("0.0.1"))
require.NoError(t, err)
require.Equal(t, "0.0.1\n", out)
}

func testBasic(
t *testing.T,
fileToGenerate []string,
Expand Down

0 comments on commit 43fa23a

Please sign in to comment.