aa3cccead5
Implements Phase 1 of v0.1 Foundation:
- go.mod with Go 1.25
- cmd/orca/main.go entry point
- internal/cli/root.go with global --json flag
- internal/cli/version.go (orca version)
- internal/cli/init.go (orca init - creates ~/.orca/)
- internal/cli/status.go (orca status - shows daemon info)
- internal/cli/node.go (orca node {join,leave,list} - stubs)
- internal/cli/job.go (orca job {run,list,stop,logs} - stubs)
- Makefile (build, test, lint, fmt, release)
- LICENSE (MIT)
- README.md with quickstart
- .gitignore
- .githooks/pre-push + scripts/trigger_coreci.sh (CoreCI trigger)
- Smoke tests in internal/cli/root_test.go
Verified: go build, go test, go vet, gofmt all pass.
---ci---
project: orca
phase: 1
milestone: v0.1
status: execute
req_covered:
- REQ-001
- REQ-002
- REQ-013
- REQ-015
- REQ-016
- REQ-019
- REQ-024
---/ci---
68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package cli
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestVersionCommandExists(t *testing.T) {
|
|
found := false
|
|
for _, cmd := range rootCmd.Commands() {
|
|
if cmd.Name() == "version" {
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
if !found {
|
|
t.Fatal("version command not registered")
|
|
}
|
|
}
|
|
|
|
func TestRootHasAllSubcommands(t *testing.T) {
|
|
expected := []string{"version", "init", "status", "node", "job"}
|
|
registered := make(map[string]bool)
|
|
for _, cmd := range rootCmd.Commands() {
|
|
registered[cmd.Name()] = true
|
|
}
|
|
for _, name := range expected {
|
|
if !registered[name] {
|
|
t.Errorf("expected subcommand %q not registered", name)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestNodeSubcommands(t *testing.T) {
|
|
expected := []string{"join", "leave", "list"}
|
|
registered := make(map[string]bool)
|
|
for _, cmd := range nodeCmd.Commands() {
|
|
registered[cmd.Name()] = true
|
|
}
|
|
for _, name := range expected {
|
|
if !registered[name] {
|
|
t.Errorf("expected node subcommand %q not registered", name)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestJobSubcommands(t *testing.T) {
|
|
expected := []string{"run", "list", "stop", "logs"}
|
|
registered := make(map[string]bool)
|
|
for _, cmd := range jobCmd.Commands() {
|
|
registered[cmd.Name()] = true
|
|
}
|
|
for _, name := range expected {
|
|
if !registered[name] {
|
|
t.Errorf("expected job subcommand %q not registered", name)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRootHelpMentionsKeyPillars(t *testing.T) {
|
|
help := rootCmd.Long
|
|
for _, pillar := range []string{"offline", "CLI", "Nomad", "simplicity"} {
|
|
if !strings.Contains(strings.ToLower(help), strings.ToLower(pillar)) {
|
|
t.Errorf("root help does not mention pillar %q", pillar)
|
|
}
|
|
}
|
|
}
|