MCPcopy Create free account
hub / github.com/docker/docker-agent / TestForkSession

Function TestForkSession

pkg/session/branch_test.go:374–458  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

372}
373
374func TestForkSession(t *testing.T) {
375 t.Parallel()
376 t.Run("nil parent returns error", func(t *testing.T) {
377 t.Parallel()
378 _, err := ForkSession(nil, 0)
379 require.Error(t, err)
380 assert.Contains(t, err.Error(), "parent session is nil")
381 })
382
383 t.Run("out-of-range position returns error", func(t *testing.T) {
384 t.Parallel()
385 parent := &Session{Messages: []Item{NewMessageItem(UserMessage("test"))}}
386 _, err := ForkSession(parent, 2)
387 require.Error(t, err)
388 assert.Contains(t, err.Error(), "out of range")
389 })
390
391 t.Run("copies messages up to position and uses fork-numbered title", func(t *testing.T) {
392 t.Parallel()
393 parent := &Session{
394 ID: "parent-id",
395 Title: "Parent Title",
396 Messages: []Item{
397 NewMessageItem(UserMessage("msg1")),
398 NewMessageItem(UserMessage("msg2")),
399 NewMessageItem(UserMessage("msg3")),
400 },
401 }
402
403 forked, err := ForkSession(parent, 2)
404 require.NoError(t, err)
405 assert.NotEqual(t, parent.ID, forked.ID)
406 assert.Equal(t, "Parent Title (fork 1)", forked.Title)
407 assert.Len(t, forked.Messages, 2)
408 assert.Equal(t, "msg1", forked.Messages[0].Message.Message.Content)
409 assert.Equal(t, "msg2", forked.Messages[1].Message.Message.Content)
410 })
411
412 t.Run("fork of a fork increments the counter", func(t *testing.T) {
413 t.Parallel()
414 parent := &Session{
415 Title: "Parent Title (fork 2)",
416 Messages: []Item{NewMessageItem(UserMessage("hi"))},
417 }
418
419 forked, err := ForkSession(parent, 1)
420 require.NoError(t, err)
421 assert.Equal(t, "Parent Title (fork 3)", forked.Title)
422 })
423
424 t.Run("position zero produces an empty fork", func(t *testing.T) {
425 t.Parallel()
426 parent := &Session{
427 Title: "Parent Title",
428 Messages: []Item{NewMessageItem(UserMessage("only"))},
429 }
430
431 forked, err := ForkSession(parent, 0)

Callers

nothing calls this directly

Calls 6

ForkSessionFunction · 0.85
NewMessageItemFunction · 0.85
UserMessageFunction · 0.70
RunMethod · 0.65
LenMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected