Skip to content

Commit 4bba806

Browse files
mikeakersclaude
andcommitted
test(beads): add unit test for Init args to cover --server flag
Extract initArgs() from Init() so the argument-building logic can be tested without a running Dolt server. Covers the Codecov-flagged line where --server is appended when serverPort > 0. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f309f42 commit 4bba806

2 files changed

Lines changed: 50 additions & 6 deletions

File tree

internal/beads/beads.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -391,11 +391,8 @@ func (b *Beads) getResolvedBeadsDir() string {
391391
return ResolveBeadsDir(b.workDir)
392392
}
393393

394-
// Init initializes a new beads database in the working directory.
395-
// This uses the same environment isolation as other commands.
396-
// If ServerPort is set (via NewIsolatedWithPort), passes --server-port to bd init
397-
// so the database is created on the test Dolt server.
398-
func (b *Beads) Init(prefix string) error {
394+
// initArgs builds the argument list for bd init.
395+
func (b *Beads) initArgs(prefix string) []string {
399396
args := []string{"init"}
400397
if prefix != "" {
401398
args = append(args, "--prefix", prefix)
@@ -404,7 +401,15 @@ func (b *Beads) Init(prefix string) error {
404401
if b.serverPort > 0 {
405402
args = append(args, "--server", "--server-port", fmt.Sprintf("%d", b.serverPort))
406403
}
407-
_, err := b.run(args...)
404+
return args
405+
}
406+
407+
// Init initializes a new beads database in the working directory.
408+
// This uses the same environment isolation as other commands.
409+
// If ServerPort is set (via NewIsolatedWithPort), passes --server-port to bd init
410+
// so the database is created on the test Dolt server.
411+
func (b *Beads) Init(prefix string) error {
412+
_, err := b.run(b.initArgs(prefix)...)
408413
return err
409414
}
410415

internal/beads/beads_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2820,6 +2820,45 @@ func TestNewIsolatedWithPort(t *testing.T) {
28202820
}
28212821
}
28222822

2823+
func TestInitArgs(t *testing.T) {
2824+
tests := []struct {
2825+
name string
2826+
prefix string
2827+
serverPort int
2828+
want []string
2829+
}{
2830+
{
2831+
name: "no prefix no port",
2832+
want: []string{"init", "--quiet"},
2833+
},
2834+
{
2835+
name: "with prefix",
2836+
prefix: "myrig",
2837+
want: []string{"init", "--prefix", "myrig", "--quiet"},
2838+
},
2839+
{
2840+
name: "with server port",
2841+
prefix: "myrig",
2842+
serverPort: 13307,
2843+
want: []string{"init", "--prefix", "myrig", "--quiet", "--server", "--server-port", "13307"},
2844+
},
2845+
}
2846+
for _, tt := range tests {
2847+
t.Run(tt.name, func(t *testing.T) {
2848+
b := &Beads{serverPort: tt.serverPort}
2849+
got := b.initArgs(tt.prefix)
2850+
if len(got) != len(tt.want) {
2851+
t.Fatalf("initArgs() = %v, want %v", got, tt.want)
2852+
}
2853+
for i := range got {
2854+
if got[i] != tt.want[i] {
2855+
t.Fatalf("initArgs()[%d] = %q, want %q\nfull: %v", i, got[i], tt.want[i], got)
2856+
}
2857+
}
2858+
})
2859+
}
2860+
}
2861+
28232862
// ---------------------------------------------------------------------------
28242863
// stripEnvPrefixes tests (refactored from runWithRouting inline logic)
28252864
// ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)