Full test coverage for convert compatibility cmd

Signed-off-by: Max Proske <max@mproske.com>
This commit is contained in:
Max Proske 2025-02-04 22:29:40 -08:00 committed by Guillaume Lours
parent a6a39422e4
commit 6ecb8d40ae

View File

@ -17,6 +17,9 @@
package compatibility package compatibility
import ( import (
"errors"
"os"
"os/exec"
"testing" "testing"
"gotest.tools/v3/assert" "gotest.tools/v3/assert"
@ -24,9 +27,10 @@ import (
func Test_convert(t *testing.T) { func Test_convert(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
args []string args []string
want []string want []string
wantErr bool
}{ }{
{ {
name: "compose only", name: "compose only",
@ -93,11 +97,36 @@ func Test_convert(t *testing.T) {
args: []string{"--project-name", "compose", "down", "--remove-orphans"}, args: []string{"--project-name", "compose", "down", "--remove-orphans"},
want: []string{"compose", "--project-name", "compose", "down", "--remove-orphans"}, want: []string{"compose", "--project-name", "compose", "down", "--remove-orphans"},
}, },
{
name: "completion command",
args: []string{"__complete", "up"},
want: []string{"__complete", "compose", "up"},
},
{
name: "string flag without argument",
args: []string{"--log-level"},
wantErr: true,
},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
got := Convert(tt.args) if tt.wantErr {
assert.DeepEqual(t, tt.want, got) if os.Getenv("BE_CRASHER") == "1" {
Convert(tt.args)
return
}
cmd := exec.Command(os.Args[0], "-test.run=^"+t.Name()+"$")
cmd.Env = append(os.Environ(), "BE_CRASHER=1")
err := cmd.Run()
var e *exec.ExitError
if errors.As(err, &e) && !e.Success() {
return
}
t.Fatalf("process ran with err %v, want exit status 1", err)
} else {
got := Convert(tt.args)
assert.DeepEqual(t, tt.want, got)
}
}) })
} }
} }