From 754c81ef01cb75c298863e1bc61be5acce3ec147 Mon Sep 17 00:00:00 2001 From: Diego Colombo Date: Sun, 6 Nov 2022 17:31:33 +0000 Subject: [PATCH] kql and sql fix --- .../KqlConnectionTests.cs | 28 +++++++++++++++++++ .../MsSqlConnectionTests.cs | 28 +++++++++++++++++++ .../ToolsServiceKernel.cs | 4 +++ 3 files changed, 60 insertions(+) diff --git a/src/Microsoft.DotNet.Interactive.Kql.Tests/KqlConnectionTests.cs b/src/Microsoft.DotNet.Interactive.Kql.Tests/KqlConnectionTests.cs index 7742baa72e..4c96e66362 100644 --- a/src/Microsoft.DotNet.Interactive.Kql.Tests/KqlConnectionTests.cs +++ b/src/Microsoft.DotNet.Interactive.Kql.Tests/KqlConnectionTests.cs @@ -98,6 +98,34 @@ public async Task It_can_store_result_set_with_a_name() .Which.Value.Should().BeAssignableTo>(); } + [KqlFact] + public async Task When_variable_does_not_exist_then_an_error_is_returned() + { + var cluster = KqlFactAttribute.GetClusterForTests(); + using var kernel = await CreateKernelAsync(); + var result = await kernel.SubmitCodeAsync( + $"#!connect kql --kernel-name KustoHelp --cluster \"{cluster}\" --database \"Samples\""); + + + result.KernelEvents + .ToSubscribedList() + .Should() + .NotContainErrors(); + + var kqlKernel = kernel.FindKernelByName("kql-KustoHelp"); + + result = await kqlKernel.SendAsync(new RequestValue("my_data_result")); + + using var events = result.KernelEvents.ToSubscribedList(); + + events.Should() + .ContainSingle() + .Which + .Message + .Should() + .Contain("Value 'my_data_result' not found in kernel kql-KustoHelp"); + } + [KqlFact] public async Task sending_query_to_kusto_will_generate_suggestions() { diff --git a/src/Microsoft.DotNet.Interactive.SqlServer.Tests/MsSqlConnectionTests.cs b/src/Microsoft.DotNet.Interactive.SqlServer.Tests/MsSqlConnectionTests.cs index 65f824dc8f..b2dd60a924 100644 --- a/src/Microsoft.DotNet.Interactive.SqlServer.Tests/MsSqlConnectionTests.cs +++ b/src/Microsoft.DotNet.Interactive.SqlServer.Tests/MsSqlConnectionTests.cs @@ -297,6 +297,34 @@ await kernel.SubmitCodeAsync($@" .Be(1); } + [MsSqlFact] + public async Task When_variable_does_not_exist_then_an_error_is_returned() + { + var connectionString = MsSqlFactAttribute.GetConnectionStringForTests(); + using var kernel = await CreateKernelAsync(); + var result = await kernel.SubmitCodeAsync( + $"#!connect mssql --kernel-name adventureworks \"{connectionString}\""); + + + result.KernelEvents + .ToSubscribedList() + .Should() + .NotContainErrors(); + + var sqlKernel = kernel.FindKernelByName("sql-adventureworks"); + + result = await sqlKernel.SendAsync(new RequestValue("my_data_result")); + + using var events = result.KernelEvents.ToSubscribedList(); + + events.Should() + .ContainSingle() + .Which + .Message + .Should() + .Contain("Value 'my_data_result' not found in kernel sql-adventureworks"); + } + [MsSqlFact] public async Task It_can_store_multiple_result_set_with_a_name() { diff --git a/src/Microsoft.DotNet.Interactive.SqlServer/ToolsServiceKernel.cs b/src/Microsoft.DotNet.Interactive.SqlServer/ToolsServiceKernel.cs index a9242d99f8..cdb7f0c11e 100644 --- a/src/Microsoft.DotNet.Interactive.SqlServer/ToolsServiceKernel.cs +++ b/src/Microsoft.DotNet.Interactive.SqlServer/ToolsServiceKernel.cs @@ -351,6 +351,10 @@ public Task HandleAsync(RequestValue command, KernelInvocationContext context) { context.PublishValueProduced(command, value); } + else + { + context.Fail(command, message: $"Value '{command.Name}' not found in kernel {Name}"); + } return Task.CompletedTask; }