(t *testing.T)
| 694 | } |
| 695 | |
| 696 | func TestSubcommandDispatchViaBinary(t *testing.T) { |
| 697 | root := t.TempDir() |
| 698 | if err := os.MkdirAll(filepath.Join(root, ".codemap"), 0o755); err != nil { |
| 699 | t.Fatal(err) |
| 700 | } |
| 701 | cfg := config.ProjectConfig{Only: []string{"go"}} |
| 702 | cfgData, err := json.Marshal(cfg) |
| 703 | if err != nil { |
| 704 | t.Fatal(err) |
| 705 | } |
| 706 | if err := os.WriteFile(config.ConfigPath(root), cfgData, 0o644); err != nil { |
| 707 | t.Fatal(err) |
| 708 | } |
| 709 | |
| 710 | t.Run("watch status", func(t *testing.T) { |
| 711 | stdout, stderr, err := runCodemapWithInput("", "watch", "status", root) |
| 712 | if err != nil { |
| 713 | t.Fatalf("watch status failed: %v\nstderr=%s", err, stderr) |
| 714 | } |
| 715 | if !strings.Contains(stdout, "Watch daemon not running") { |
| 716 | t.Fatalf("unexpected watch status output:\n%s", stdout) |
| 717 | } |
| 718 | }) |
| 719 | |
| 720 | t.Run("hook usage", func(t *testing.T) { |
| 721 | _, stderr, err := runCodemapWithInput("", "hook") |
| 722 | if err == nil { |
| 723 | t.Fatal("expected hook command without name to fail") |
| 724 | } |
| 725 | if !strings.Contains(stderr, "Usage: codemap hook <hookname>") { |
| 726 | t.Fatalf("unexpected stderr:\n%s", stderr) |
| 727 | } |
| 728 | }) |
| 729 | |
| 730 | t.Run("unknown hook", func(t *testing.T) { |
| 731 | _, stderr, err := runCodemapWithInput("", "hook", "unknown-hook", root) |
| 732 | if err == nil { |
| 733 | t.Fatal("expected unknown hook to fail") |
| 734 | } |
| 735 | if !strings.Contains(stderr, "Hook error: unknown hook") { |
| 736 | t.Fatalf("unexpected stderr:\n%s", stderr) |
| 737 | } |
| 738 | }) |
| 739 | |
| 740 | t.Run("config show", func(t *testing.T) { |
| 741 | stdout, stderr, err := runCodemapWithInput("", "config", "show", root) |
| 742 | if err != nil { |
| 743 | t.Fatalf("config show failed: %v\nstderr=%s", err, stderr) |
| 744 | } |
| 745 | if !strings.Contains(stdout, "only: go") { |
| 746 | t.Fatalf("unexpected config show output:\n%s", stdout) |
| 747 | } |
| 748 | }) |
| 749 | |
| 750 | t.Run("handoff latest missing", func(t *testing.T) { |
| 751 | missingRoot := t.TempDir() |
| 752 | stdout, stderr, err := runCodemapWithInput("", "handoff", "--latest", missingRoot) |
| 753 | if err != nil { |
nothing calls this directly
no test coverage detected