diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f4cf5a..a4ae615 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,6 +55,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Added `AsMap() (map[string]any, error)`; on type mismatch the error wraps a per-engine `evaluator.ErrAsMapTypeMismatch` sentinel. ([#141](https://github.com/robbyt/go-polyscript/pull/141)) +- **BREAKING**: `data.Setter.AddDataToContext` no longer takes a variadic. + Signature is now `AddDataToContext(ctx, data map[string]any) (context.Context, error)`. + Callers with multiple sources must merge them first. ### Deprecated - The twelve legacy top-level constructors (`FromRisorFile`, diff --git a/engines/extism/evaluator/evaluator.go b/engines/extism/evaluator/evaluator.go index 1de8f5f..806271d 100644 --- a/engines/extism/evaluator/evaluator.go +++ b/engines/extism/evaluator/evaluator.go @@ -244,7 +244,7 @@ func (be *Evaluator) Eval(ctx context.Context) (platform.EvaluatorResponse, erro // which can be eventually passed to the Eval method. func (be *Evaluator) AddDataToContext( ctx context.Context, - d ...map[string]any, + d map[string]any, ) (context.Context, error) { - return data.AddDataToContextFromProvider(ctx, be.logger.WithGroup("AddDataToContext"), be.getDataProvider(), d...) + return data.AddDataToContextFromProvider(ctx, be.logger.WithGroup("AddDataToContext"), be.getDataProvider(), d) } diff --git a/engines/extism/evaluator/evaluator_test.go b/engines/extism/evaluator/evaluator_test.go index 272be7a..8eb74c6 100644 --- a/engines/extism/evaluator/evaluator_test.go +++ b/engines/extism/evaluator/evaluator_test.go @@ -63,7 +63,7 @@ func (m *mockErrProvider) GetData(ctx context.Context) (map[string]any, error) { func (m *mockErrProvider) AddDataToContext( ctx context.Context, - data ...map[string]any, + data map[string]any, ) (context.Context, error) { return ctx, m.err } @@ -80,7 +80,7 @@ func (m *mockMapProvider) GetData(ctx context.Context) (map[string]any, error) { func (m *mockMapProvider) AddDataToContext( ctx context.Context, - data ...map[string]any, + data map[string]any, ) (context.Context, error) { return ctx, nil } @@ -750,7 +750,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { tests := []struct { name string setupExe func(t *testing.T) *script.ExecutableUnit - inputs []map[string]any + input map[string]any wantError bool expectedErr string }{ @@ -765,7 +765,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { return newExe(t, "test-nil-provider", content, nil) }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: true, expectedErr: "no data provider available", }, @@ -780,7 +780,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { return newExe(t, "test-valid-data", content, data.NewContextProvider(constants.EvalData)) }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: false, }, { @@ -794,7 +794,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { return newExe(t, "test-empty-input", content, data.NewContextProvider(constants.EvalData)) }, - inputs: []map[string]any{{}}, + input: map[string]any{}, wantError: false, }, { @@ -803,7 +803,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { t.Helper() return nil }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: true, expectedErr: "no data provider available", }, @@ -821,7 +821,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { } return newExe(t, "test-err-provider", content, mockProvider) }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: true, expectedErr: "provider error", }, @@ -834,7 +834,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { evaluator := New(handler, exe) ctx := t.Context() - enrichedCtx, err := evaluator.AddDataToContext(ctx, tt.inputs...) + enrichedCtx, err := evaluator.AddDataToContext(ctx, tt.input) // Check error expectations if tt.wantError { diff --git a/engines/integration_test.go b/engines/integration_test.go index 2f28393..e04ecb1 100644 --- a/engines/integration_test.go +++ b/engines/integration_test.go @@ -1036,11 +1036,11 @@ let config_data = ctx["config"] // Use explicit keys as recommended in the documentation ctx := t.Context() - enrichedCtx, err := evaluator.AddDataToContext(ctx, - map[string]any{"request": createTestRequest()}, - map[string]any{"user": map[string]any{"name": "TestUser", "id": 123}}, - map[string]any{"config": map[string]any{"debug": true}}, - ) + enrichedCtx, err := evaluator.AddDataToContext(ctx, map[string]any{ + "request": createTestRequest(), + "user": map[string]any{"name": "TestUser", "id": 123}, + "config": map[string]any{"debug": true}, + }) require.NoError(t, err) // Execute diff --git a/engines/risor/evaluator/evaluator.go b/engines/risor/evaluator/evaluator.go index a9cd0c2..8813e0a 100644 --- a/engines/risor/evaluator/evaluator.go +++ b/engines/risor/evaluator/evaluator.go @@ -172,7 +172,7 @@ func (be *Evaluator) Eval(ctx context.Context) (platform.EvaluatorResponse, erro // which can be eventually passed to the Eval method. func (be *Evaluator) AddDataToContext( ctx context.Context, - d ...map[string]any, + d map[string]any, ) (context.Context, error) { - return data.AddDataToContextFromProvider(ctx, be.logger.WithGroup("AddDataToContext"), be.getDataProvider(), d...) + return data.AddDataToContextFromProvider(ctx, be.logger.WithGroup("AddDataToContext"), be.getDataProvider(), d) } diff --git a/engines/risor/evaluator/evaluator_test.go b/engines/risor/evaluator/evaluator_test.go index 09cb744..0f26373 100644 --- a/engines/risor/evaluator/evaluator_test.go +++ b/engines/risor/evaluator/evaluator_test.go @@ -39,7 +39,7 @@ func (m *MockProvider) GetData(ctx context.Context) (map[string]any, error) { func (m *MockProvider) AddDataToContext( ctx context.Context, - data ...map[string]any, + data map[string]any, ) (context.Context, error) { args := m.Called(ctx, data) if ctx, ok := args.Get(0).(context.Context); ok { @@ -422,7 +422,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { tests := []struct { name string setupExe func(t *testing.T) *script.ExecutableUnit - inputs []map[string]any + input map[string]any wantError bool errorMessage string }{ @@ -442,7 +442,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { return newExe(t, "with-provider", nil, mockProvider) }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: false, }, { @@ -457,7 +457,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { return newExe(t, "with-provider-error", nil, mockProvider) }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: true, errorMessage: "provider error", }, @@ -467,7 +467,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { t.Helper() return newExe(t, "nil-provider", nil, nil) }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: true, errorMessage: "no data provider available", }, @@ -477,7 +477,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { t.Helper() return nil }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: true, errorMessage: "no data provider available", }, @@ -497,7 +497,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { } ctx := t.Context() - result, err := evaluator.AddDataToContext(ctx, tt.inputs...) + result, err := evaluator.AddDataToContext(ctx, tt.input) if tt.wantError { require.Error(t, err) diff --git a/engines/starlark/evaluator/evaluator.go b/engines/starlark/evaluator/evaluator.go index 5e421b1..12a1fb8 100644 --- a/engines/starlark/evaluator/evaluator.go +++ b/engines/starlark/evaluator/evaluator.go @@ -230,7 +230,7 @@ func (be *Evaluator) Eval(ctx context.Context) (platform.EvaluatorResponse, erro // which can be eventually passed to the Eval method. func (be *Evaluator) AddDataToContext( ctx context.Context, - d ...map[string]any, + d map[string]any, ) (context.Context, error) { - return data.AddDataToContextFromProvider(ctx, be.logger.WithGroup("AddDataToContext"), be.getDataProvider(), d...) + return data.AddDataToContextFromProvider(ctx, be.logger.WithGroup("AddDataToContext"), be.getDataProvider(), d) } diff --git a/engines/starlark/evaluator/evaluator_test.go b/engines/starlark/evaluator/evaluator_test.go index 5ef5419..034bd04 100644 --- a/engines/starlark/evaluator/evaluator_test.go +++ b/engines/starlark/evaluator/evaluator_test.go @@ -71,7 +71,7 @@ func (m *MockProvider) GetData(ctx context.Context) (map[string]any, error) { func (m *MockProvider) AddDataToContext( ctx context.Context, - data ...map[string]any, + data map[string]any, ) (context.Context, error) { args := m.Called(ctx, data) if ctx, ok := args.Get(0).(context.Context); ok { @@ -247,7 +247,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { tests := []struct { name string setupExe func(t *testing.T) *script.ExecutableUnit - inputs []map[string]any + input map[string]any wantError bool errorMessage string }{ @@ -267,7 +267,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { return newExe(t, "with provider", nil, mockProvider) }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: false, }, { @@ -282,7 +282,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { return newExe(t, "with provider error", nil, mockProvider) }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: true, errorMessage: "provider error", }, @@ -292,7 +292,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { t.Helper() return newExe(t, "nil provider", nil, nil) }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: true, errorMessage: "no data provider available", }, @@ -302,7 +302,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { t.Helper() return nil }, - inputs: []map[string]any{{"test": "data"}}, + input: map[string]any{"test": "data"}, wantError: true, errorMessage: "no data provider available", }, @@ -317,7 +317,7 @@ func TestEvaluator_AddDataToContext(t *testing.T) { evaluator := New(handler, exe) ctx := t.Context() - result, err := evaluator.AddDataToContext(ctx, tt.inputs...) + result, err := evaluator.AddDataToContext(ctx, tt.input) if tt.wantError { require.Error(t, err) diff --git a/examples/data-prep/starlark/main.go b/examples/data-prep/starlark/main.go index 4f849df..8e929af 100644 --- a/examples/data-prep/starlark/main.go +++ b/examples/data-prep/starlark/main.go @@ -5,6 +5,7 @@ import ( _ "embed" "fmt" "log/slog" + "maps" "net/http" "net/url" "os" @@ -74,12 +75,14 @@ func prepareRuntimeData( "user_data": userData, } + // Merge request and metadata into a single map before handing it to the + // evaluator. AddDataToContext takes one map; callers with multiple + // sources should compose them first. + runtimeData := maps.Clone(requestMeta) + runtimeData["request"] = httpReq + // Add the request metadata to the context using the data.Provider - enrichedCtx, err := evaluator.AddDataToContext( - ctx, - map[string]any{"request": httpReq}, - requestMeta, - ) + enrichedCtx, err := evaluator.AddDataToContext(ctx, runtimeData) if err != nil { return nil, fmt.Errorf("failed to prepare context: %w", err) } diff --git a/platform/data/addDataToContext.go b/platform/data/addDataToContext.go index 251bb3a..4ee388a 100644 --- a/platform/data/addDataToContext.go +++ b/platform/data/addDataToContext.go @@ -14,7 +14,7 @@ import ( // - ctx: The base context to enrich // - logger: A logger instance for recording operations // - provider: The data provider to use for storing data -// - d: Variable list of data items to add to the context +// - d: The data map to add to the context // // Returns: // - enrichedCtx: The context with added data @@ -23,7 +23,7 @@ func AddDataToContextHelper( ctx context.Context, logger *slog.Logger, provider Provider, - d ...map[string]any, + d map[string]any, ) (context.Context, error) { if logger == nil { logger = slog.Default() @@ -35,7 +35,7 @@ func AddDataToContextHelper( } // Use the data provider plugin to store the raw data - enrichedCtx, err := provider.AddDataToContext(ctx, d...) + enrichedCtx, err := provider.AddDataToContext(ctx, d) if err != nil { return ctx, fmt.Errorf("failed to prepare context: %w", err) } @@ -50,10 +50,10 @@ func AddDataToContextFromProvider( ctx context.Context, logger *slog.Logger, provider Provider, - d ...map[string]any, + d map[string]any, ) (context.Context, error) { if provider == nil { return ctx, fmt.Errorf("no data provider available") } - return AddDataToContextHelper(ctx, logger, provider, d...) + return AddDataToContextHelper(ctx, logger, provider, d) } diff --git a/platform/data/addDataToContext_test.go b/platform/data/addDataToContext_test.go index 3e932a3..3f691ab 100644 --- a/platform/data/addDataToContext_test.go +++ b/platform/data/addDataToContext_test.go @@ -107,7 +107,7 @@ func TestAddDataToContextHelper(t *testing.T) { req := createTestRequestHelper() enrichedCtx, err := AddDataToContextHelper(baseCtx, logger, provider, - map[string]any{"key": "value"}, map[string]any{"request": req}) + map[string]any{"key": "value", "request": req}) require.NoError(t, err) assert.NotEqual(t, baseCtx, enrichedCtx, "Context should be modified") @@ -218,8 +218,7 @@ func TestAddDataToContextWithErrorHandling(t *testing.T) { // Add a mix of valid and invalid data to trigger an error enrichedCtx, err := AddDataToContextHelper(baseCtx, logger, provider, - map[string]any{"valid": "data"}, - map[string]any{"": "empty-key"}, // Empty key will trigger an error + map[string]any{"valid": "data", "": "empty-key"}, // Empty key triggers an error ) // Should return an error diff --git a/platform/data/compositeProvider.go b/platform/data/compositeProvider.go index 5d70801..d7fc295 100644 --- a/platform/data/compositeProvider.go +++ b/platform/data/compositeProvider.go @@ -85,10 +85,10 @@ func deepMerge(src, dst map[string]any) map[string]any { // staticProvider := NewStaticProvider(map[string]any{"config": configData}) // contextProvider := NewContextProvider(constants.EvalData) // composite := NewCompositeProvider(staticProvider, contextProvider) -// ctx, err := composite.AddDataToContext(ctx, req, userData) +// ctx, err := composite.AddDataToContext(ctx, userData) func (p *CompositeProvider) AddDataToContext( ctx context.Context, - data ...map[string]any, + data map[string]any, ) (context.Context, error) { // Start with the original context finalCtx := ctx @@ -116,7 +116,7 @@ func (p *CompositeProvider) AddDataToContext( staticCount++ } - nextCtx, err := provider.AddDataToContext(finalCtx, data...) + nextCtx, err := provider.AddDataToContext(finalCtx, data) if err != nil { // Handle StaticProvider errors separately if isStaticProvider && errors.Is(err, ErrStaticProviderNoRuntimeUpdates) { diff --git a/platform/data/contextProvider.go b/platform/data/contextProvider.go index ef80ae4..3bd95c3 100644 --- a/platform/data/contextProvider.go +++ b/platform/data/contextProvider.go @@ -77,7 +77,7 @@ func (p *ContextProvider) GetData(ctx context.Context) (map[string]any, error) { // the returned context threaded forward for any subsequent enrichment. func (p *ContextProvider) AddDataToContext( ctx context.Context, - data ...map[string]any, + data map[string]any, ) (context.Context, error) { if p.contextKey == "" { return ctx, fmt.Errorf("context key is empty") @@ -95,25 +95,19 @@ func (p *ContextProvider) AddDataToContext( } } - for _, dataMap := range data { - if dataMap == nil { + for key, value := range data { + if key == "" { + errz = append(errz, fmt.Errorf("empty keys are not allowed")) continue } - for key, value := range dataMap { - if key == "" { - errz = append(errz, fmt.Errorf("empty keys are not allowed")) - continue - } - - processedValue, err := p.processValue(value) - if err != nil { - errz = append(errz, fmt.Errorf("processing value for key '%s': %w", key, err)) - continue - } - - p.mergeIntoMap(toStore, key, processedValue, &errz) + processedValue, err := p.processValue(value) + if err != nil { + errz = append(errz, fmt.Errorf("processing value for key '%s': %w", key, err)) + continue } + + p.mergeIntoMap(toStore, key, processedValue, &errz) } newCtx := context.WithValue(ctx, p.contextKey, toStore) diff --git a/platform/data/contextProvider_test.go b/platform/data/contextProvider_test.go index 5f21070..c978311 100644 --- a/platform/data/contextProvider_test.go +++ b/platform/data/contextProvider_test.go @@ -232,10 +232,9 @@ func TestContextProvider_AddDataToContext(t *testing.T) { ctx := t.Context() newCtx, err := provider.AddDataToContext(ctx, - map[string]any{"key1": "value1"}, - map[string]any{"key2": "value2"}) + map[string]any{"key1": "value1", "key2": "value2"}) - require.NoError(t, err, "Should not return error with multiple map items") + require.NoError(t, err, "Should not return error with merged data") assert.NotEqual(t, ctx, newCtx, "Context should be modified") data, err := provider.GetData(newCtx) diff --git a/platform/data/data_helpers_test.go b/platform/data/data_helpers_test.go index 5bcf46d..882ff16 100644 --- a/platform/data/data_helpers_test.go +++ b/platform/data/data_helpers_test.go @@ -55,7 +55,7 @@ func (m *MockProvider) GetData(ctx context.Context) (map[string]any, error) { func (m *MockProvider) AddDataToContext( ctx context.Context, - data ...map[string]any, + data map[string]any, ) (context.Context, error) { args := m.Called(ctx, data) newCtx, _ := args.Get(0).(context.Context) diff --git a/platform/data/provider.go b/platform/data/provider.go index 35831a0..f477ba4 100644 --- a/platform/data/provider.go +++ b/platform/data/provider.go @@ -17,17 +17,18 @@ type Setter interface { // It processes input data according to the engine implementation and stores it // in the context using the ExecutableUnit's DataProvider. // - // The variadic data parameter accepts maps with string keys and arbitrary values. - // HTTP requests, structs, and other types should be wrapped in maps with descriptive keys. + // The data map accepts string keys and arbitrary values. HTTP requests, structs, + // and other types should be wrapped in maps with descriptive keys. Pass a single + // map; merge ahead of time when you have multiple sources. // // Example: - // scriptData := map[string]any{"greeting": "Hello, World!"} - // enrichedCtx, err := evaluator.AddDataToContext(ctx, map[string]any{"request": request}, scriptData) + // scriptData := map[string]any{"greeting": "Hello, World!", "request": request} + // enrichedCtx, err := evaluator.AddDataToContext(ctx, scriptData) // if err != nil { // return err // } // result, err := evaluator.Eval(enrichedCtx) - AddDataToContext(ctx context.Context, data ...map[string]any) (context.Context, error) + AddDataToContext(ctx context.Context, data map[string]any) (context.Context, error) } // Provider defines the interface for accessing runtime data for script execution. diff --git a/platform/data/provider_test.go b/platform/data/provider_test.go index 107e069..9b0d215 100644 --- a/platform/data/provider_test.go +++ b/platform/data/provider_test.go @@ -254,14 +254,13 @@ func TestProvider_AddDataToContext(t *testing.T) { assert.Equal(t, ctx, newCtx, "Context should remain unchanged") }) - // Test with multiple data items - t.Run("context provider with multiple data items", func(t *testing.T) { + // Test that multiple keys in a single map work + t.Run("context provider with multiple keys in one map", func(t *testing.T) { provider := NewContextProvider(constants.EvalData) ctx := t.Context() newCtx, err := provider.AddDataToContext(ctx, - map[string]any{"key1": "value1"}, - map[string]any{"key2": "value2"}) + map[string]any{"key1": "value1", "key2": "value2"}) require.NoError(t, err) assert.NotEqual(t, ctx, newCtx, "Context should be modified") diff --git a/platform/data/staticProvider.go b/platform/data/staticProvider.go index 29e75f8..2e3239a 100644 --- a/platform/data/staticProvider.go +++ b/platform/data/staticProvider.go @@ -39,7 +39,7 @@ func (p *StaticProvider) GetData(_ context.Context) (map[string]any, error) { // The CompositeProvider should check for this specific error using errors.Is. func (p *StaticProvider) AddDataToContext( ctx context.Context, - _ ...map[string]any, + _ map[string]any, ) (context.Context, error) { return ctx, ErrStaticProviderNoRuntimeUpdates } diff --git a/platform/data/staticProvider_test.go b/platform/data/staticProvider_test.go index a2b5908..cc2e840 100644 --- a/platform/data/staticProvider_test.go +++ b/platform/data/staticProvider_test.go @@ -172,15 +172,13 @@ func TestStaticProvider_AddDataToContext(t *testing.T) { "Error should be ErrStaticProviderNoRuntimeUpdates") }) - t.Run("multiple args returns error", func(t *testing.T) { + t.Run("multi-key map returns error", func(t *testing.T) { provider := NewStaticProvider(simpleData) ctx := t.Context() newCtx, err := provider.AddDataToContext( ctx, - map[string]any{"key": "value"}, - map[string]any{"str": "string"}, - map[string]any{"num": 42}, + map[string]any{"key": "value", "str": "string", "num": 42}, ) require.Error(t, err, "StaticProvider should reject all attempts to add data") diff --git a/platform/evaluator_test.go b/platform/evaluator_test.go index 319cd77..03fcf80 100644 --- a/platform/evaluator_test.go +++ b/platform/evaluator_test.go @@ -25,7 +25,7 @@ type mockDataPreparer struct { func (m *mockDataPreparer) AddDataToContext( ctx context.Context, - data ...map[string]any, + data map[string]any, ) (context.Context, error) { args := m.Called(ctx, data) return args.Get(0).(context.Context), args.Error(1) @@ -48,7 +48,7 @@ func (m *mockEvaluatorWithPreparer) Eval( func (m *mockEvaluatorWithPreparer) AddDataToContext( ctx context.Context, - data ...map[string]any, + data map[string]any, ) (context.Context, error) { args := m.Called(ctx, data) return args.Get(0).(context.Context), args.Error(1) @@ -176,9 +176,7 @@ func TestEvalDataPreparerInterfaceDirectImplementation(t *testing.T) { // Call AddDataToContext resultCtx, err := dataPreparer.AddDataToContext( ctx, - map[string]any{"data1": data1}, - map[string]any{"data2": data2}, - map[string]any{"data3": data3}, + map[string]any{"data1": data1, "data2": data2, "data3": data3}, ) require.NoError(t, err, "AddDataToContext should not return an error") require.NotNil(t, resultCtx, "Enriched context should not be nil") diff --git a/platform/mocks_test.go b/platform/mocks_test.go index 6b90925..d48febc 100644 --- a/platform/mocks_test.go +++ b/platform/mocks_test.go @@ -32,7 +32,7 @@ func (m *mockEvaluator) Load(newVersion script.ExecutableUnit) error { func (m *mockEvaluator) AddDataToContext( ctx context.Context, - d ...map[string]any, + d map[string]any, ) (context.Context, error) { args := m.Called(ctx, d) return args.Get(0).(context.Context), args.Error(1) diff --git a/polyscript_mocks_test.go b/polyscript_mocks_test.go index 05586be..da84f2f 100644 --- a/polyscript_mocks_test.go +++ b/polyscript_mocks_test.go @@ -32,7 +32,7 @@ func (m *mockEvaluator) Load(newVersion script.ExecutableUnit) error { func (m *mockEvaluator) AddDataToContext( ctx context.Context, - d ...map[string]any, + d map[string]any, ) (context.Context, error) { args := m.Called(ctx, d) return args.Get(0).(context.Context), args.Error(1) diff --git a/polyscript_test.go b/polyscript_test.go index 9458c27..a20f93a 100644 --- a/polyscript_test.go +++ b/polyscript_test.go @@ -28,7 +28,7 @@ type mockPreparer struct { func (m *mockPreparer) AddDataToContext( ctx context.Context, - data ...map[string]any, + data map[string]any, ) (context.Context, error) { args := m.Called(ctx, data) return args.Get(0).(context.Context), args.Error(1)