mirror of https://github.com/coder/coder.git
69 lines
1.4 KiB
Go
69 lines
1.4 KiB
Go
package cli_test
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/coder/coder/v2/cli/clitest"
|
|
"github.com/coder/coder/v2/testutil"
|
|
)
|
|
|
|
func TestVersion(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
expectedText := `Coder v0.0.0-devel
|
|
https://github.com/coder/coder
|
|
|
|
Full build of Coder, supports the server subcommand.
|
|
`
|
|
expectedJSON := `{
|
|
"version": "v0.0.0-devel",
|
|
"build_time": "0001-01-01T00:00:00Z",
|
|
"external_url": "https://github.com/coder/coder",
|
|
"slim": false,
|
|
"agpl": false,
|
|
"boring_crypto": false
|
|
}
|
|
`
|
|
for _, tt := range []struct {
|
|
Name string
|
|
Args []string
|
|
Expected string
|
|
}{
|
|
{
|
|
Name: "Defaults to human-readable output",
|
|
Args: []string{"version"},
|
|
Expected: expectedText,
|
|
},
|
|
{
|
|
Name: "JSON output",
|
|
Args: []string{"version", "--output=json"},
|
|
Expected: expectedJSON,
|
|
},
|
|
{
|
|
Name: "Text output",
|
|
Args: []string{"version", "--output=text"},
|
|
Expected: expectedText,
|
|
},
|
|
} {
|
|
tt := tt
|
|
t.Run(tt.Name, func(t *testing.T) {
|
|
t.Parallel()
|
|
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
|
|
t.Cleanup(cancel)
|
|
inv, _ := clitest.New(t, tt.Args...)
|
|
buf := new(bytes.Buffer)
|
|
inv.Stdout = buf
|
|
err := inv.WithContext(ctx).Run()
|
|
require.NoError(t, err)
|
|
actual := buf.String()
|
|
actual = strings.ReplaceAll(actual, "\r\n", "\n")
|
|
require.Equal(t, tt.Expected, actual)
|
|
})
|
|
}
|
|
}
|