初始化仓库
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
package copilot
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/chenhg5/cc-connect/core"
|
||||
)
|
||||
|
||||
func TestIntegration_CopilotFlow(t *testing.T) {
|
||||
if os.Getenv("COPILOT_INTEGRATION") != "1" {
|
||||
t.Skip("set COPILOT_INTEGRATION=1 to run")
|
||||
}
|
||||
if _, err := exec.LookPath("copilot"); err != nil {
|
||||
t.Skip("copilot CLI not in PATH, skipping")
|
||||
}
|
||||
|
||||
agent, err := New(map[string]any{
|
||||
"work_dir": t.TempDir(),
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("New: %v", err)
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
||||
defer cancel()
|
||||
|
||||
session, err := agent.StartSession(ctx, "integration-test")
|
||||
if err != nil {
|
||||
t.Fatalf("StartSession: %v", err)
|
||||
}
|
||||
defer func() { _ = session.Close() }()
|
||||
|
||||
// Send a deterministic prompt
|
||||
err = session.Send("Reply with exactly 'integration-ok' and nothing else", nil, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("Send: %v", err)
|
||||
}
|
||||
|
||||
// Collect events until done
|
||||
var result string
|
||||
timeout := time.After(25 * time.Second)
|
||||
for {
|
||||
select {
|
||||
case ev, ok := <-session.Events():
|
||||
if !ok {
|
||||
goto done
|
||||
}
|
||||
switch ev.Type {
|
||||
case core.EventText:
|
||||
result += ev.Content
|
||||
case core.EventResult:
|
||||
result += ev.Content
|
||||
goto done
|
||||
}
|
||||
case <-timeout:
|
||||
t.Fatal("timeout waiting for response")
|
||||
}
|
||||
}
|
||||
done:
|
||||
t.Logf("Response: %s", result)
|
||||
if !strings.Contains(strings.ToLower(result), "integration-ok") {
|
||||
t.Errorf("expected 'integration-ok' in response, got: %s", result)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user