Add focused CLI argument helpers
This commit is contained in:
@@ -56,6 +56,51 @@ func TestExecuteValidate(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestExecuteValidateArgs(t *testing.T) {
|
||||
validPath := filepath.Join("..", "bundle", "testdata", "valid_bundle")
|
||||
tests := []struct {
|
||||
name string
|
||||
args []string
|
||||
wantCode int
|
||||
wantStdout string
|
||||
wantStderr string
|
||||
}{
|
||||
{
|
||||
name: "zero args",
|
||||
args: []string{"validate"},
|
||||
wantCode: exitError,
|
||||
wantStderr: "requires a path",
|
||||
},
|
||||
{
|
||||
name: "one arg",
|
||||
args: []string{"validate", validPath},
|
||||
wantCode: exitOK,
|
||||
wantStdout: "Validated 1 bundle(s)",
|
||||
},
|
||||
{
|
||||
name: "two args",
|
||||
args: []string{"validate", validPath, validPath},
|
||||
wantCode: exitUsage,
|
||||
wantStderr: "accepts at most one path",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
var stdout, stderr bytes.Buffer
|
||||
code := Execute(context.Background(), tt.args, &stdout, &stderr)
|
||||
if code != tt.wantCode {
|
||||
t.Fatalf("exit code = %d, want %d; stderr = %q", code, tt.wantCode, stderr.String())
|
||||
}
|
||||
if tt.wantStdout != "" && !strings.Contains(stdout.String(), tt.wantStdout) {
|
||||
t.Fatalf("stdout = %q, want substring %q", stdout.String(), tt.wantStdout)
|
||||
}
|
||||
if tt.wantStderr != "" && !strings.Contains(stderr.String(), tt.wantStderr) {
|
||||
t.Fatalf("stderr = %q, want substring %q", stderr.String(), tt.wantStderr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestExecuteInspect(t *testing.T) {
|
||||
var stdout, stderr bytes.Buffer
|
||||
|
||||
@@ -69,6 +114,51 @@ func TestExecuteInspect(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestExecuteInspectArgs(t *testing.T) {
|
||||
validPath := filepath.Join("..", "bundle", "testdata", "valid_bundle")
|
||||
tests := []struct {
|
||||
name string
|
||||
args []string
|
||||
wantCode int
|
||||
wantStdout string
|
||||
wantStderr string
|
||||
}{
|
||||
{
|
||||
name: "zero args",
|
||||
args: []string{"inspect"},
|
||||
wantCode: exitError,
|
||||
wantStderr: "requires a path",
|
||||
},
|
||||
{
|
||||
name: "one arg",
|
||||
args: []string{"inspect", validPath},
|
||||
wantCode: exitOK,
|
||||
wantStdout: "id=weather.daily.brentwood.2026-05-30",
|
||||
},
|
||||
{
|
||||
name: "two args",
|
||||
args: []string{"inspect", validPath, validPath},
|
||||
wantCode: exitUsage,
|
||||
wantStderr: "accepts at most one path",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
var stdout, stderr bytes.Buffer
|
||||
code := Execute(context.Background(), tt.args, &stdout, &stderr)
|
||||
if code != tt.wantCode {
|
||||
t.Fatalf("exit code = %d, want %d; stderr = %q", code, tt.wantCode, stderr.String())
|
||||
}
|
||||
if tt.wantStdout != "" && !strings.Contains(stdout.String(), tt.wantStdout) {
|
||||
t.Fatalf("stdout = %q, want substring %q", stdout.String(), tt.wantStdout)
|
||||
}
|
||||
if tt.wantStderr != "" && !strings.Contains(stderr.String(), tt.wantStderr) {
|
||||
t.Fatalf("stderr = %q, want substring %q", stderr.String(), tt.wantStderr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestExecuteRunDryRun(t *testing.T) {
|
||||
sourceRoot := t.TempDir()
|
||||
writeCLIBundle(t, sourceRoot)
|
||||
@@ -103,6 +193,19 @@ pipelines:
|
||||
}
|
||||
}
|
||||
|
||||
func TestExecuteRunRejectsExtraPositionalArgs(t *testing.T) {
|
||||
var stdout, stderr bytes.Buffer
|
||||
|
||||
code := Execute(context.Background(), []string{"run", "--config", "config.yml", "extra"}, &stdout, &stderr)
|
||||
|
||||
if code != exitUsage {
|
||||
t.Fatalf("exit code = %d, want %d", code, exitUsage)
|
||||
}
|
||||
if !strings.Contains(stderr.String(), "does not accept positional arguments") {
|
||||
t.Fatalf("stderr = %q, want positional argument error", stderr.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestExecuteRunPublishes(t *testing.T) {
|
||||
sourceRoot := t.TempDir()
|
||||
destinationRoot := t.TempDir()
|
||||
|
||||
Reference in New Issue
Block a user