- FilterArgs: removes empty strings and Go test runner flags
- ParseFlag: single dash (-v, -🔥) must be 1 char, double dash (--verbose) must be 2+ chars
- Cli.Run() now uses FilterArgs and ParseFlag — no test flag awareness in surface layer
- Invalid flags silently ignored (e.g. -verbose, --v)
221 tests, 79.7% coverage.
Co-Authored-By: Virgil <virgil@lethean.io>
78 lines
1.6 KiB
Go
78 lines
1.6 KiB
Go
package core_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
. "forge.lthn.ai/core/go/pkg/core"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
// --- FilterArgs ---
|
|
|
|
func TestFilterArgs_Good(t *testing.T) {
|
|
args := []string{"deploy", "", "to", "-test.v", "homelab", "-test.paniconexit0"}
|
|
clean := FilterArgs(args)
|
|
assert.Equal(t, []string{"deploy", "to", "homelab"}, clean)
|
|
}
|
|
|
|
func TestFilterArgs_Empty_Good(t *testing.T) {
|
|
clean := FilterArgs(nil)
|
|
assert.Nil(t, clean)
|
|
}
|
|
|
|
// --- ParseFlag ---
|
|
|
|
func TestParseFlag_ShortValid_Good(t *testing.T) {
|
|
// Single letter
|
|
k, v, ok := ParseFlag("-v")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "v", k)
|
|
assert.Equal(t, "", v)
|
|
|
|
// Single emoji
|
|
k, v, ok = ParseFlag("-🔥")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "🔥", k)
|
|
assert.Equal(t, "", v)
|
|
|
|
// Short with value
|
|
k, v, ok = ParseFlag("-p=8080")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "p", k)
|
|
assert.Equal(t, "8080", v)
|
|
}
|
|
|
|
func TestParseFlag_ShortInvalid_Bad(t *testing.T) {
|
|
// Multiple chars with single dash — invalid
|
|
_, _, ok := ParseFlag("-verbose")
|
|
assert.False(t, ok)
|
|
|
|
_, _, ok = ParseFlag("-port")
|
|
assert.False(t, ok)
|
|
}
|
|
|
|
func TestParseFlag_LongValid_Good(t *testing.T) {
|
|
k, v, ok := ParseFlag("--verbose")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "verbose", k)
|
|
assert.Equal(t, "", v)
|
|
|
|
k, v, ok = ParseFlag("--port=8080")
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "port", k)
|
|
assert.Equal(t, "8080", v)
|
|
}
|
|
|
|
func TestParseFlag_LongInvalid_Bad(t *testing.T) {
|
|
// Single char with double dash — invalid
|
|
_, _, ok := ParseFlag("--v")
|
|
assert.False(t, ok)
|
|
}
|
|
|
|
func TestParseFlag_NotAFlag_Bad(t *testing.T) {
|
|
_, _, ok := ParseFlag("hello")
|
|
assert.False(t, ok)
|
|
|
|
_, _, ok = ParseFlag("")
|
|
assert.False(t, ok)
|
|
}
|