Skip to content

Commit 917bf0f

Browse files
fix: resolve lint errors in recursion and sandbox packages
1 parent df74b4d commit 917bf0f

6 files changed

Lines changed: 26 additions & 66 deletions

File tree

‎benchmark_test/recursion_benchmark_test.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func (s *BenchmarkStats) String() string {
5757
defer s.mu.Unlock()
5858

5959
var b strings.Builder
60-
b.WriteString(fmt.Sprintf("\n=== Benchmark Results ===\n"))
60+
b.WriteString("\n=== Benchmark Results ===\n")
6161
b.WriteString(fmt.Sprintf("Total Time: %v\n", s.TotalTime))
6262
b.WriteString(fmt.Sprintf("Total Iterations: %d\n", s.TotalIterations))
6363
b.WriteString(fmt.Sprintf("Max Depth Reached: %d\n", s.MaxDepthReached))
@@ -75,7 +75,7 @@ func (s *BenchmarkStats) String() string {
7575
}
7676
}
7777

78-
b.WriteString(fmt.Sprintf("\n[Totals]\n"))
78+
b.WriteString("\n[Totals]\n")
7979
b.WriteString(fmt.Sprintf(" Total Prompt Tokens: %d\n", totalPrompt))
8080
b.WriteString(fmt.Sprintf(" Total Completion Tokens: %d\n", totalCompletion))
8181
b.WriteString(fmt.Sprintf(" Grand Total Tokens: %d\n", totalPrompt+totalCompletion))

‎pkg/repl/recursive_test.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ func TestRecursiveREPL_ExecuteBasic(t *testing.T) {
142142
for _, tt := range tests {
143143
t.Run(tt.name, func(t *testing.T) {
144144
// Reset REPL for each test
145-
repl.Reset()
145+
_ = repl.Reset()
146146

147147
result, err := repl.Execute(context.Background(), tt.code)
148148
if err != nil {

‎pkg/rlm/recursion_integration_test.go‎

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,12 @@ import (
55
"fmt"
66
"os"
77
"strings"
8-
"sync/atomic"
98
"testing"
109
"time"
1110

1211
"github.com/XiaoConstantine/rlm-go/pkg/core"
13-
"github.com/XiaoConstantine/rlm-go/pkg/repl"
1412
)
1513

16-
// mockRecursiveLLMClient simulates a root LLM for recursive testing.
17-
// It returns responses that trigger recursive calls based on the iteration.
18-
type mockRecursiveLLMClient struct {
19-
completeFunc func(ctx context.Context, messages []core.Message) (core.LLMResponse, error)
20-
calls [][]core.Message
21-
callCount int32
22-
}
23-
24-
func (m *mockRecursiveLLMClient) Complete(ctx context.Context, messages []core.Message) (core.LLMResponse, error) {
25-
m.calls = append(m.calls, messages)
26-
atomic.AddInt32(&m.callCount, 1)
27-
return m.completeFunc(ctx, messages)
28-
}
29-
3014
// TestRecursiveComplete_Basic tests basic recursive completion workflow
3115
func TestRecursiveComplete_Basic(t *testing.T) {
3216
callCount := 0
@@ -515,30 +499,6 @@ func TestIntegration_MultiDepthRecursion(t *testing.T) {
515499
}
516500
}
517501

518-
// mockREPLClientForRecursion provides a mock REPL client for recursion testing
519-
type mockREPLClientForRecursion struct {
520-
queryFunc func(ctx context.Context, prompt string) (repl.QueryResponse, error)
521-
batchFunc func(ctx context.Context, prompts []string) ([]repl.QueryResponse, error)
522-
}
523-
524-
func (m *mockREPLClientForRecursion) Query(ctx context.Context, prompt string) (repl.QueryResponse, error) {
525-
if m.queryFunc != nil {
526-
return m.queryFunc(ctx, prompt)
527-
}
528-
return repl.QueryResponse{Response: "mock response"}, nil
529-
}
530-
531-
func (m *mockREPLClientForRecursion) QueryBatched(ctx context.Context, prompts []string) ([]repl.QueryResponse, error) {
532-
if m.batchFunc != nil {
533-
return m.batchFunc(ctx, prompts)
534-
}
535-
results := make([]repl.QueryResponse, len(prompts))
536-
for i := range prompts {
537-
results[i] = repl.QueryResponse{Response: fmt.Sprintf("mock batch response %d", i)}
538-
}
539-
return results, nil
540-
}
541-
542502
// TestRecursiveComplete_ContextPropagation tests that context is passed through recursion
543503
func TestRecursiveComplete_ContextPropagation(t *testing.T) {
544504
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)

‎pkg/sandbox/container.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func (e *ContainerExecutor) Execute(ctx context.Context, code string) (*core.Exe
107107
if err != nil {
108108
return nil, fmt.Errorf("failed to create temp dir: %w", err)
109109
}
110-
defer os.RemoveAll(tmpDir)
110+
defer func() { _ = os.RemoveAll(tmpDir) }()
111111

112112
// Generate the full Go program
113113
program, err := e.generateProgram(code)

‎pkg/sandbox/container_test.go‎

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func TestLocalExecutorBasic(t *testing.T) {
7373
if err != nil {
7474
t.Fatalf("Failed to create local executor: %v", err)
7575
}
76-
defer exec.Close()
76+
defer func() { _ = exec.Close() }()
7777

7878
// Test basic code execution
7979
result, err := exec.Execute(context.Background(), `fmt.Println("Hello, sandbox!")`)
@@ -99,7 +99,7 @@ func TestLocalExecutorWithContext(t *testing.T) {
9999
if err != nil {
100100
t.Fatalf("Failed to create local executor: %v", err)
101101
}
102-
defer exec.Close()
102+
defer func() { _ = exec.Close() }()
103103

104104
// Load string context
105105
err = exec.LoadContext("test context data")
@@ -135,7 +135,7 @@ func TestLocalExecutorWithQuery(t *testing.T) {
135135
if err != nil {
136136
t.Fatalf("Failed to create local executor: %v", err)
137137
}
138-
defer exec.Close()
138+
defer func() { _ = exec.Close() }()
139139

140140
// Execute code that uses Query
141141
result, err := exec.Execute(context.Background(), `
@@ -173,7 +173,7 @@ func TestLocalExecutorWithBatchedQuery(t *testing.T) {
173173
if err != nil {
174174
t.Fatalf("Failed to create local executor: %v", err)
175175
}
176-
defer exec.Close()
176+
defer func() { _ = exec.Close() }()
177177

178178
// Execute code that uses QueryBatched
179179
result, err := exec.Execute(context.Background(), `
@@ -208,7 +208,7 @@ func TestLocalExecutorTimeout(t *testing.T) {
208208
if err != nil {
209209
t.Fatalf("Failed to create local executor: %v", err)
210210
}
211-
defer exec.Close()
211+
defer func() { _ = exec.Close() }()
212212

213213
// Note: Yaegi doesn't support true cancellation, so this test
214214
// verifies the timeout configuration is passed correctly.
@@ -234,7 +234,7 @@ func TestLocalExecutorGetVariable(t *testing.T) {
234234
if err != nil {
235235
t.Fatalf("Failed to create local executor: %v", err)
236236
}
237-
defer exec.Close()
237+
defer func() { _ = exec.Close() }()
238238

239239
// Execute code that sets a variable
240240
_, err = exec.Execute(context.Background(), `
@@ -264,7 +264,7 @@ func TestLocalExecutorGetLocals(t *testing.T) {
264264
if err != nil {
265265
t.Fatalf("Failed to create local executor: %v", err)
266266
}
267-
defer exec.Close()
267+
defer func() { _ = exec.Close() }()
268268

269269
// Execute code that sets common variables
270270
_, err = exec.Execute(context.Background(), `
@@ -295,7 +295,7 @@ func TestLocalExecutorReset(t *testing.T) {
295295
if err != nil {
296296
t.Fatalf("Failed to create local executor: %v", err)
297297
}
298-
defer exec.Close()
298+
defer func() { _ = exec.Close() }()
299299

300300
// Execute some code
301301
_, _ = exec.Execute(context.Background(), `
@@ -323,7 +323,7 @@ func TestNewExecutorWithAuto(t *testing.T) {
323323
if err != nil {
324324
t.Fatalf("Failed to create executor: %v", err)
325325
}
326-
defer exec.Close()
326+
defer func() { _ = exec.Close() }()
327327

328328
// Should have created some executor
329329
backend := exec.Backend()
@@ -356,7 +356,7 @@ func TestContainerExecutorBasic(t *testing.T) {
356356
if err != nil {
357357
t.Fatalf("Failed to create container executor: %v", err)
358358
}
359-
defer exec.Close()
359+
defer func() { _ = exec.Close() }()
360360

361361
t.Logf("Using backend: %s", exec.Backend())
362362

@@ -396,7 +396,7 @@ func TestContainerExecutorWithContext(t *testing.T) {
396396
if err != nil {
397397
t.Fatalf("Failed to create container executor: %v", err)
398398
}
399-
defer exec.Close()
399+
defer func() { _ = exec.Close() }()
400400

401401
// Pull image first if needed
402402
if !exec.ImageExists() {
@@ -438,7 +438,7 @@ func TestContainerExecutorResourceLimits(t *testing.T) {
438438
if err != nil {
439439
t.Fatalf("Failed to create container executor: %v", err)
440440
}
441-
defer exec.Close()
441+
defer func() { _ = exec.Close() }()
442442

443443
// Pull image first if needed
444444
if !exec.ImageExists() {
@@ -475,7 +475,7 @@ func TestContainerExecutorRuntimeInfo(t *testing.T) {
475475
if err != nil {
476476
t.Fatalf("Failed to create container executor: %v", err)
477477
}
478-
defer exec.Close()
478+
defer func() { _ = exec.Close() }()
479479

480480
info, err := exec.RuntimeInfo()
481481
if err != nil {
@@ -497,7 +497,7 @@ func TestIPCServerBasic(t *testing.T) {
497497
if err != nil {
498498
t.Fatalf("Failed to create IPC server: %v", err)
499499
}
500-
defer server.Stop()
500+
defer func() { _ = server.Stop() }()
501501

502502
server.Start()
503503

@@ -513,7 +513,7 @@ func TestIPCServerBasic(t *testing.T) {
513513
if err != nil {
514514
t.Fatalf("Failed to create IPC client: %v", err)
515515
}
516-
defer ipcClient.Close()
516+
defer func() { _ = ipcClient.Close() }()
517517

518518
// Test Query
519519
response, tokenUsage, err := ipcClient.Query("test prompt")
@@ -545,7 +545,7 @@ func TestIPCServerBatched(t *testing.T) {
545545
if err != nil {
546546
t.Fatalf("Failed to create IPC server: %v", err)
547547
}
548-
defer server.Stop()
548+
defer func() { _ = server.Stop() }()
549549

550550
server.Start()
551551

@@ -554,7 +554,7 @@ func TestIPCServerBatched(t *testing.T) {
554554
if err != nil {
555555
t.Fatalf("Failed to create IPC client: %v", err)
556556
}
557-
defer ipcClient.Close()
557+
defer func() { _ = ipcClient.Close() }()
558558

559559
// Test QueryBatched
560560
responses, usages, err := ipcClient.QueryBatched([]string{"p1", "p2"})
@@ -633,7 +633,7 @@ func TestLocalExecutorMinMaxHelpers(t *testing.T) {
633633
if err != nil {
634634
t.Fatalf("Failed to create local executor: %v", err)
635635
}
636-
defer exec.Close()
636+
defer func() { _ = exec.Close() }()
637637

638638
// Test min/max helper functions
639639
result, err := exec.Execute(context.Background(), `
@@ -659,7 +659,7 @@ func TestLocalExecutorMapContext(t *testing.T) {
659659
if err != nil {
660660
t.Fatalf("Failed to create local executor: %v", err)
661661
}
662-
defer exec.Close()
662+
defer func() { _ = exec.Close() }()
663663

664664
// Load map context (stored as JSON string)
665665
err = exec.LoadContext(map[string]any{

‎pkg/sandbox/protocol.go‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ func (s *IPCServer) acceptLoop() {
147147

148148
// Set a deadline to periodically check for cancellation
149149
if tcpListener, ok := s.listener.(*net.TCPListener); ok {
150-
tcpListener.SetDeadline(time.Now().Add(1 * time.Second))
150+
_ = tcpListener.SetDeadline(time.Now().Add(1 * time.Second))
151151
}
152152

153153
conn, err := s.listener.Accept()
@@ -170,7 +170,7 @@ func (s *IPCServer) acceptLoop() {
170170

171171
// handleConnection processes messages from a single connection.
172172
func (s *IPCServer) handleConnection(conn net.Conn) {
173-
defer conn.Close()
173+
defer func() { _ = conn.Close() }()
174174

175175
reader := bufio.NewReader(conn)
176176
encoder := json.NewEncoder(conn)
@@ -183,7 +183,7 @@ func (s *IPCServer) handleConnection(conn net.Conn) {
183183
}
184184

185185
// Set read deadline
186-
conn.SetReadDeadline(time.Now().Add(5 * time.Minute))
186+
_ = conn.SetReadDeadline(time.Now().Add(5 * time.Minute))
187187

188188
// Read a line (one JSON message per line)
189189
line, err := reader.ReadBytes('\n')

0 commit comments

Comments
 (0)