77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package cmd
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestExecute_VersionFlag(t *testing.T) {
|
|
origV, origC, origD := version, commit, date
|
|
t.Cleanup(func() {
|
|
version = origV
|
|
commit = origC
|
|
date = origD
|
|
})
|
|
version = "1.2.3"
|
|
commit = "abc123"
|
|
date = ""
|
|
|
|
out := captureStdout(t, func() {
|
|
_ = captureStderr(t, func() {
|
|
if err := Execute([]string{"--version"}); err != nil {
|
|
t.Fatalf("Execute: %v", err)
|
|
}
|
|
})
|
|
})
|
|
if !strings.Contains(out, "1.2.3") {
|
|
t.Fatalf("unexpected out=%q", out)
|
|
}
|
|
}
|
|
|
|
func TestExecute_VersionCommand_JSON(t *testing.T) {
|
|
origV, origC, origD := version, commit, date
|
|
t.Cleanup(func() {
|
|
version = origV
|
|
commit = origC
|
|
date = origD
|
|
})
|
|
version = "1.2.3"
|
|
commit = "abc123"
|
|
date = "2025-12-26T00:00:00Z"
|
|
|
|
out := captureStdout(t, func() {
|
|
_ = captureStderr(t, func() {
|
|
if err := Execute([]string{"--json", "version"}); err != nil {
|
|
t.Fatalf("Execute: %v", err)
|
|
}
|
|
})
|
|
})
|
|
|
|
var parsed map[string]any
|
|
if err := json.Unmarshal([]byte(out), &parsed); err != nil {
|
|
t.Fatalf("json parse: %v\nout=%q", err, out)
|
|
}
|
|
if parsed["version"] != "1.2.3" || parsed["commit"] != "abc123" || parsed["date"] != "2025-12-26T00:00:00Z" {
|
|
t.Fatalf("unexpected json: %#v", parsed)
|
|
}
|
|
}
|
|
|
|
func TestExecute_ExitCodes(t *testing.T) {
|
|
err := Execute([]string{"--nope"})
|
|
if err == nil {
|
|
t.Fatalf("expected error")
|
|
}
|
|
if ExitCode(err) != 2 {
|
|
t.Fatalf("expected exit code 2, got %d (err=%v)", ExitCode(err), err)
|
|
}
|
|
|
|
err = Execute([]string{"drive", "get"})
|
|
if err == nil {
|
|
t.Fatalf("expected error")
|
|
}
|
|
if ExitCode(err) != 2 {
|
|
t.Fatalf("expected exit code 2, got %d (err=%v)", ExitCode(err), err)
|
|
}
|
|
}
|