| File: DotnetToolFunctionalTests.cs.cs | Web Access |
| Project: src\tests\Aspire.Hosting.DotnetTool.Tests\Aspire.Hosting.DotnetTool.Tests.csproj (Aspire.Hosting.DotnetTool.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Utils; namespace Aspire.Hosting.DotnetTool.Tests; public class DotnetToolFunctionalTests(ITestOutputHelper testOutputHelper) { [Fact] public async Task VerifyDotnetToolResource() { var cts = new CancellationTokenSource(TimeSpan.FromMinutes(2)); using var builder = TestDistributedApplicationBuilder.Create().WithTestAndResourceLogging(testOutputHelper); var resource = builder .AddDotnetTool("tool", "dotnet-ef") .WithArgs("--help"); using var app = builder.Build(); await app.StartAsync(cts.Token); await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); var terminalState = await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.TerminalStates, cts.Token); Assert.Equal(KnownResourceStates.Finished, terminalState); Assert.True(app.ResourceNotifications.TryGetCurrentState(resource.Resource.Name, out var resourceState)); Assert.Equal(resourceState.Snapshot.ExitCode, 0); } [Fact] public async Task VerifyNonExistentDotnetToolResource() { var cts = new CancellationTokenSource(TimeSpan.FromMinutes(2)); using var builder = TestDistributedApplicationBuilder.Create().WithTestAndResourceLogging(testOutputHelper); var resource = builder .AddDotnetTool("tool", "dotnet-ef") .WithArgs("--help") .WithToolSource("./fake-package-feed") .WithToolIgnoreExistingFeeds(); using var app = builder.Build(); await app.StartAsync(cts.Token); await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); var terminalState = await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.TerminalStates, cts.Token); Assert.Equal(KnownResourceStates.Finished, terminalState); Assert.True(app.ResourceNotifications.TryGetCurrentState(resource.Resource.Name, out var resourceState)); Assert.NotEqual(resourceState.Snapshot.ExitCode, 0); } }