Skip to content

Commit

Permalink
[.Net] Dispose kernel after running dotnet interactive tests (#3378)
Browse files Browse the repository at this point in the history
* dispose kernel after running test

* add timeout
  • Loading branch information
LittleLittleCloud authored Aug 20, 2024
1 parent d5068d9 commit a638a08
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 70 deletions.
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

0 comments on commit a638a08

Please sign in to comment.