返回 DeepSeek-Reasonix
invocation_inline_test.go
根目录 / internal / control / invocation_inline_test.go
1 package control
2
3 import (
4 "strings"
5 "testing"
6
7 "reasonix/internal/skill"
8 )
9
10 func TestSubmitInvocationDisplayKeepsSharedTextAcrossSeveralInlineSkills(t *testing.T) {
11 runner := &fakeTurnRunner{}
12 c := newOwnedTestController(t, Options{
13 Runner: runner,
14 Skills: []skill.Skill{
15 {Name: "one", Body: "ONE_BODY", RunAs: skill.RunInline, Scope: skill.ScopeGlobal},
16 {Name: "two", Body: "TWO_BODY", RunAs: skill.RunInline, Scope: skill.ScopeGlobal},
17 },
18 })
19 c.SubmitInvocationDisplay("/one /two shared task", "shared task", []InvocationRequest{
20 {Name: "two", Kind: "skill", Offset: 5},
21 {Name: "one", Kind: "skill", Offset: 0},
22 })
23 waitIdle(t, c)
24 if len(runner.inputs) != 1 {
25 t.Fatalf("inputs = %q", runner.inputs)
26 }
27 got := runner.inputs[0]
28 one, two := strings.Index(got, "<skill-pin name=\"one\">"), strings.Index(got, "<skill-pin name=\"two\">")
29 if one < 0 || two < one || strings.Contains(got, "Arguments:") || !strings.HasSuffix(got, "</skill-pin>\n\nshared task") {
30 t.Fatalf("several inline skills should each be pinned with the text appended once:\n%s", got)
31 }
32 }
33
33 lines GO