From f9d8b3bc5146e469225e372ddc48f2af78a0df2d Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 02:12:48 +0000 Subject: [PATCH] test(ansible): add CLI registration coverage Co-authored-by: Virgil --- cmd/ansible/ansible_test.go | 79 +++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/cmd/ansible/ansible_test.go b/cmd/ansible/ansible_test.go index 4fa3e1c..c3565fd 100644 --- a/cmd/ansible/ansible_test.go +++ b/cmd/ansible/ansible_test.go @@ -5,6 +5,7 @@ import ( "dappco.re/go/core" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestExtraVars_Good_RepeatableAndCommaSeparated(t *testing.T) { @@ -94,3 +95,81 @@ func TestFirstString_Good_ResolvesShortUserAlias(t *testing.T) { assert.Equal(t, "deploy", cfgUser) } + +func TestRegister_Good_RegistersAnsibleCommands(t *testing.T) { + app := core.New() + + Register(app) + + ansible := app.Command("ansible") + require.True(t, ansible.OK) + ansibleCmd := ansible.Value.(*core.Command) + + assert.Equal(t, "ansible", ansibleCmd.Path) + assert.Equal(t, "ansible", ansibleCmd.Name) + assert.Equal(t, "Run Ansible playbooks natively (no Python required)", ansibleCmd.Description) + require.NotNil(t, ansibleCmd.Action) + + test := app.Command("ansible/test") + require.True(t, test.OK) + testCmd := test.Value.(*core.Command) + + assert.Equal(t, "ansible/test", testCmd.Path) + assert.Equal(t, "test", testCmd.Name) + assert.Equal(t, "Test SSH connectivity to a host", testCmd.Description) + require.NotNil(t, testCmd.Action) + + paths := app.Commands() + assert.Contains(t, paths, "ansible") + assert.Contains(t, paths, "ansible/test") +} + +func TestRegister_Good_ExposesExpectedFlags(t *testing.T) { + app := core.New() + + Register(app) + + ansibleCmd := app.Command("ansible").Value.(*core.Command) + assert.True(t, ansibleCmd.Flags.Has("inventory")) + assert.True(t, ansibleCmd.Flags.Has("i")) + assert.True(t, ansibleCmd.Flags.Has("limit")) + assert.True(t, ansibleCmd.Flags.Has("l")) + assert.True(t, ansibleCmd.Flags.Has("tags")) + assert.True(t, ansibleCmd.Flags.Has("t")) + assert.True(t, ansibleCmd.Flags.Has("skip-tags")) + assert.True(t, ansibleCmd.Flags.Has("extra-vars")) + assert.True(t, ansibleCmd.Flags.Has("e")) + assert.True(t, ansibleCmd.Flags.Has("verbose")) + assert.True(t, ansibleCmd.Flags.Has("v")) + assert.True(t, ansibleCmd.Flags.Has("check")) + assert.True(t, ansibleCmd.Flags.Has("diff")) + + assert.Equal(t, "", ansibleCmd.Flags.String("inventory")) + assert.Equal(t, "", ansibleCmd.Flags.String("i")) + assert.Equal(t, "", ansibleCmd.Flags.String("limit")) + assert.Equal(t, "", ansibleCmd.Flags.String("l")) + assert.Equal(t, "", ansibleCmd.Flags.String("tags")) + assert.Equal(t, "", ansibleCmd.Flags.String("t")) + assert.Equal(t, "", ansibleCmd.Flags.String("skip-tags")) + assert.Equal(t, "", ansibleCmd.Flags.String("extra-vars")) + assert.Equal(t, "", ansibleCmd.Flags.String("e")) + assert.Equal(t, 0, ansibleCmd.Flags.Int("verbose")) + assert.False(t, ansibleCmd.Flags.Bool("v")) + assert.False(t, ansibleCmd.Flags.Bool("check")) + assert.False(t, ansibleCmd.Flags.Bool("diff")) + + testCmd := app.Command("ansible/test").Value.(*core.Command) + assert.True(t, testCmd.Flags.Has("user")) + assert.True(t, testCmd.Flags.Has("u")) + assert.True(t, testCmd.Flags.Has("password")) + assert.True(t, testCmd.Flags.Has("key")) + assert.True(t, testCmd.Flags.Has("i")) + assert.True(t, testCmd.Flags.Has("port")) + + assert.Equal(t, "root", testCmd.Flags.String("user")) + assert.Equal(t, "root", testCmd.Flags.String("u")) + assert.Equal(t, "", testCmd.Flags.String("password")) + assert.Equal(t, "", testCmd.Flags.String("key")) + assert.Equal(t, "", testCmd.Flags.String("i")) + assert.Equal(t, 22, testCmd.Flags.Int("port")) +}