Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[.Net] Dispose kernel after running dotnet interactive tests #3378

Merged
merged 3 commits into from
Aug 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/dotnet-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ jobs:
os: [ ubuntu-latest, macos-latest, windows-latest ]
python-version: ["3.11"]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,82 +1,83 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// DotnetInteractiveServiceTest.cs

//using FluentAssertions;
//using Xunit;
//using Xunit.Abstractions;
using FluentAssertions;
using Xunit;
using Xunit.Abstractions;

//namespace AutoGen.DotnetInteractive.Tests;
namespace AutoGen.DotnetInteractive.Tests;

//public class DotnetInteractiveServiceTest : IDisposable
//{
// private ITestOutputHelper _output;
// private InteractiveService _interactiveService;
// private string _workingDir;
[Collection("Sequential")]
public class DotnetInteractiveServiceTest : IDisposable
{
private ITestOutputHelper _output;
private InteractiveService _interactiveService;
private string _workingDir;

// public DotnetInteractiveServiceTest(ITestOutputHelper output)
// {
// _output = output;
// _workingDir = Path.Combine(Path.GetTempPath(), "test", Path.GetRandomFileName());
// if (!Directory.Exists(_workingDir))
// {
// Directory.CreateDirectory(_workingDir);
// }
public DotnetInteractiveServiceTest(ITestOutputHelper output)
{
_output = output;
_workingDir = Path.Combine(Path.GetTempPath(), "test", Path.GetRandomFileName());
if (!Directory.Exists(_workingDir))
{
Directory.CreateDirectory(_workingDir);
}

// _interactiveService = new InteractiveService(_workingDir);
// _interactiveService.StartAsync(_workingDir, default).Wait();
// }
_interactiveService = new InteractiveService(_workingDir);
_interactiveService.StartAsync(_workingDir, default).Wait();
}

// public void Dispose()
// {
// _interactiveService.Dispose();
// }
public void Dispose()
{
_interactiveService.Dispose();
}

// [Fact]
// public async Task ItRunCSharpCodeSnippetTestsAsync()
// {
// var cts = new CancellationTokenSource();
// var isRunning = await _interactiveService.StartAsync(_workingDir, cts.Token);
[Fact]
public async Task ItRunCSharpCodeSnippetTestsAsync()
{
var cts = new CancellationTokenSource();
var isRunning = await _interactiveService.StartAsync(_workingDir, cts.Token);

// isRunning.Should().BeTrue();
isRunning.Should().BeTrue();

// _interactiveService.IsRunning().Should().BeTrue();
_interactiveService.IsRunning().Should().BeTrue();

// // test code snippet
// var hello_world = @"
//Console.WriteLine(""hello world"");
//";
// test code snippet
var hello_world = @"
Console.WriteLine(""hello world"");
";

// await this.TestCSharpCodeSnippet(_interactiveService, hello_world, "hello world");
// await this.TestCSharpCodeSnippet(
// _interactiveService,
// code: @"
//Console.WriteLine(""hello world""
//",
// expectedOutput: "Error: (2,32): error CS1026: ) expected");
await this.TestCSharpCodeSnippet(_interactiveService, hello_world, "hello world");
await this.TestCSharpCodeSnippet(
_interactiveService,
code: @"
Console.WriteLine(""hello world""
",
expectedOutput: "Error: (2,32): error CS1026: ) expected");

// await this.TestCSharpCodeSnippet(
// service: _interactiveService,
// code: "throw new Exception();",
// expectedOutput: "Error: System.Exception: Exception of type 'System.Exception' was thrown");
// }
await this.TestCSharpCodeSnippet(
service: _interactiveService,
code: "throw new Exception();",
expectedOutput: "Error: System.Exception: Exception of type 'System.Exception' was thrown");
}

// [Fact]
// public async Task ItRunPowershellScriptTestsAsync()
// {
// // test power shell
// var ps = @"Write-Output ""hello world""";
// await this.TestPowershellCodeSnippet(_interactiveService, ps, "hello world");
// }
[Fact]
public async Task ItRunPowershellScriptTestsAsync()
{
// test power shell
var ps = @"Write-Output ""hello world""";
await this.TestPowershellCodeSnippet(_interactiveService, ps, "hello world");
}

// private async Task TestPowershellCodeSnippet(InteractiveService service, string code, string expectedOutput)
// {
// var result = await service.SubmitPowershellCodeAsync(code, CancellationToken.None);
// result.Should().StartWith(expectedOutput);
// }
private async Task TestPowershellCodeSnippet(InteractiveService service, string code, string expectedOutput)
{
var result = await service.SubmitPowershellCodeAsync(code, CancellationToken.None);
result.Should().StartWith(expectedOutput);
}

// private async Task TestCSharpCodeSnippet(InteractiveService service, string code, string expectedOutput)
// {
// var result = await service.SubmitCSharpCodeAsync(code, CancellationToken.None);
// result.Should().StartWith(expectedOutput);
// }
//}
private async Task TestCSharpCodeSnippet(InteractiveService service, string code, string expectedOutput)
{
var result = await service.SubmitCSharpCodeAsync(code, CancellationToken.None);
result.Should().StartWith(expectedOutput);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
namespace AutoGen.DotnetInteractive.Tests;

[Collection("Sequential")]
public class DotnetInteractiveStdioKernelConnectorTests
public class DotnetInteractiveStdioKernelConnectorTests : IDisposable
{
private string _workingDir;
private Kernel kernel;
Expand Down Expand Up @@ -77,4 +77,9 @@ public async Task ItAddPythonKernelTestAsync()
var result = await this.kernel.RunSubmitCodeCommandAsync(pythonCode, "python");
result.Should().Contain("Hello, World!");
}

public void Dispose()
{
this.kernel.Dispose();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@

namespace AutoGen.DotnetInteractive.Tests;

[Collection("Sequential")]
public class InProcessDotnetInteractiveKernelBuilderTest
{
[Fact]
public async Task ItAddCSharpKernelTestAsync()
{
var kernel = DotnetInteractiveKernelBuilder
using var kernel = DotnetInteractiveKernelBuilder
.CreateEmptyInProcessKernelBuilder()
.AddCSharpKernel()
.Build();
Expand All @@ -29,7 +30,7 @@ public async Task ItAddCSharpKernelTestAsync()
[Fact]
public async Task ItAddPowershellKernelTestAsync()
{
var kernel = DotnetInteractiveKernelBuilder
using var kernel = DotnetInteractiveKernelBuilder
.CreateEmptyInProcessKernelBuilder()
.AddPowershellKernel()
.Build();
Expand All @@ -45,7 +46,7 @@ public async Task ItAddPowershellKernelTestAsync()
[Fact]
public async Task ItAddFSharpKernelTestAsync()
{
var kernel = DotnetInteractiveKernelBuilder
using var kernel = DotnetInteractiveKernelBuilder
.CreateEmptyInProcessKernelBuilder()
.AddFSharpKernel()
.Build();
Expand All @@ -62,7 +63,7 @@ public async Task ItAddFSharpKernelTestAsync()
[Fact]
public async Task ItAddPythonKernelTestAsync()
{
var kernel = DotnetInteractiveKernelBuilder
using var kernel = DotnetInteractiveKernelBuilder
.CreateEmptyInProcessKernelBuilder()
.AddPythonKernel("python3")
.Build();
Expand Down
Loading