> On 21 Oct 2020, at 8:31 am, roger peppe <rogpe...@gmail.com> wrote:
> 
> It looks like you're testing a top level command. You might want to consider 
> using the testscript package, which provides a very concise way of end-to-end 
> testing this kind of thing.
> 
> e.g.
> 
>     mycommand -h
>     cmp stdout expect-stdout
> 
>     -- expect-stdout --
>     Expected output
> 
> See https://pkg.go.dev/github.com/rogpeppe/go-internal/testscript 
> <https://pkg.go.dev/github.com/rogpeppe/go-internal/testscript> for more 
> details.

This looks interesting, thank you. I will have a look.
> 
> On Tue, 20 Oct 2020 at 05:02, Amit Saha <amitsaha...@gmail.com 
> <mailto:amitsaha...@gmail.com>> wrote:
> Hi all, Consider the following test configuration:
> 
> 
> func TestHandleCommand(t *testing.T) {
> 
>     type expectedResult struct {
>         output string
>         err    error
>     }
>     type testConfig struct {
>         args   []string
>         result expectedResult
>     }
> 
>     testConfigs := []testConfig{
>         testConfig{
>             args: []string{"-h"},
>             result: expectedResult{
>                 err: nil,
>                 output: `Expected output`,
>             },
>         },
>     }
> 
> Then, I do this:
> 
> 
> for _, tc := range testConfigs {
>         byteBuf := new(bytes.Buffer)
>         w := bufio.NewWriter(byteBuf)
> 
>         err := handleCommand(w, tc.args)
>         if tc.result.err == nil && err != nil {
>             t.Errorf("Expected nil error, got %v", err)
>         }
> 
>         if tc.result.err != nil && err.Error() != tc.result.err.Error() {
>             t.Errorf("Expected error %v, got %v", tc.result.err, err)
>         }
> 
>         if len(tc.result.output) != 0 {
>             w.Flush()
>             gotOutput := byteBuf.String()
>             if tc.result.output != gotOutput {
>                 t.Errorf("Expected output to be: %v, Got: %v",
> tc.result.output, gotOutput)
>             }
>         }
>     }
> }
> 
> The above pattern works for me since the function may return an error
> and/or it may have something it writes to the provided writer, w.
> 
> Is there a more concise way to write this?
> 
> 
> 
> Thanks,
> Amit.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com 
> <mailto:golang-nuts%2bunsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CANODV3%3DsOA4FKakaQ0mrcC%3D-BnVNq8SdnvDHgXShmrRt-_upHw%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/golang-nuts/CANODV3%3DsOA4FKakaQ0mrcC%3D-BnVNq8SdnvDHgXShmrRt-_upHw%40mail.gmail.com>.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/385C8396-3EFB-4895-908A-EC430F1A6186%40gmail.com.

Reply via email to