Skip to content

Commit 857c998

Browse files
committed
Merge in release/9.4 changes
2 parents 9eab7c2 + 700a5f6 commit 857c998

File tree

4 files changed

+48
-26
lines changed

4 files changed

+48
-26
lines changed

src/Aspire.Cli/Aspire.Cli.csproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919

2020
<!-- Set the nuget properties when building as a global tool. -->
2121
<PropertyGroup Condition="'$(IsCliToolProject)' == 'true'">
22-
<!-- This package needs to remain as preview. -->
23-
<SuppressFinalPackageVersion>true</SuppressFinalPackageVersion>
2422
<IsPackable>true</IsPackable>
2523
<PackAsTool>true</PackAsTool>
2624
<ToolCommandName>aspire</ToolCommandName>

tests/Aspire.Cli.Tests/Commands/ConfigCommandTests.cs

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public async Task ConfigSetCommand_WithDeepDotNotation_CreatesDeeplyNestedObject
9292
var json = await File.ReadAllTextAsync(settingsPath);
9393
var settings = JsonNode.Parse(json)?.AsObject();
9494
Assert.NotNull(settings);
95-
95+
9696
Assert.True(settings["foo"] is JsonObject);
9797
var fooObject = settings["foo"]!.AsObject();
9898
Assert.True(fooObject["bar"] is JsonObject);
@@ -108,7 +108,7 @@ public async Task ConfigSetCommand_ReplacesPrimitiveWithObject()
108108
var provider = services.BuildServiceProvider();
109109

110110
var command = provider.GetRequiredService<Aspire.Cli.Commands.RootCommand>();
111-
111+
112112
// First set a primitive value
113113
var result1 = command.Parse("config set foo primitive");
114114
var exitCode1 = await result1.InvokeAsync().WaitAsync(CliTestConstants.DefaultTimeout);
@@ -124,7 +124,7 @@ public async Task ConfigSetCommand_ReplacesPrimitiveWithObject()
124124
var json = await File.ReadAllTextAsync(settingsPath);
125125
var settings = JsonNode.Parse(json)?.AsObject();
126126
Assert.NotNull(settings);
127-
127+
128128
Assert.True(settings["foo"] is JsonObject);
129129
var fooObject = settings["foo"]!.AsObject();
130130
Assert.Equal("nested", fooObject["bar"]?.ToString());
@@ -244,7 +244,7 @@ public async Task ConfigDeleteCommand_CleansUpEmptyParentObjects()
244244
var json = await File.ReadAllTextAsync(settingsPath);
245245
var settings = JsonNode.Parse(json)?.AsObject();
246246
Assert.NotNull(settings);
247-
247+
248248
// The deep object should be completely removed since it became empty
249249
Assert.False(settings.ContainsKey("deep"));
250250
}
@@ -340,18 +340,4 @@ public async Task FeatureFlags_WhenSetToInvalidValue_ReturnsFalse()
340340
var featureFlags = provider.GetRequiredService<IFeatures>();
341341
Assert.False(featureFlags.IsFeatureEnabled("testFeature", defaultValue: true));
342342
}
343-
344-
[Fact]
345-
public void DeployCommand_IsAlwaysAvailable()
346-
{
347-
using var workspace = TemporaryWorkspace.Create(outputHelper);
348-
var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper);
349-
var provider = services.BuildServiceProvider();
350-
351-
var rootCommand = provider.GetRequiredService<Aspire.Cli.Commands.RootCommand>();
352-
353-
// Check that deploy command is always available
354-
var hasDeployCommand = rootCommand.Subcommands.Any(cmd => cmd.Name == "deploy");
355-
Assert.True(hasDeployCommand);
356-
}
357-
}
343+
}

tests/Aspire.Cli.Tests/Commands/DeployCommandTests.cs

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public async Task DeployCommandWithHelpArgumentReturnsZero()
1717
{
1818
using var tempRepo = TemporaryWorkspace.Create(outputHelper);
1919

20-
var services = CliTestHelper.CreateServiceCollection(tempRepo, outputHelper);
20+
var services = CliTestHelper.CreateServiceCollection(tempRepo, outputHelper, options => options.EnabledFeatures = [KnownFeatures.DeployCommandEnabled]);
2121
var provider = services.BuildServiceProvider();
2222

2323
var command = provider.GetRequiredService<RootCommand>();
@@ -35,6 +35,7 @@ public async Task DeployCommandFailsWithInvalidProjectFile()
3535
// Arrange
3636
var services = CliTestHelper.CreateServiceCollection(tempRepo, outputHelper, options =>
3737
{
38+
options.EnabledFeatures = [KnownFeatures.DeployCommandEnabled];
3839
options.DotNetCliRunnerFactory = (sp) =>
3940
{
4041
var runner = new TestDotNetCliRunner
@@ -68,7 +69,7 @@ public async Task DeployCommandFailsWhenAppHostIsNotCompatible()
6869
var services = CliTestHelper.CreateServiceCollection(tempRepo, outputHelper, options =>
6970
{
7071
options.ProjectLocatorFactory = (sp) => new TestProjectLocator();
71-
72+
options.EnabledFeatures = [KnownFeatures.DeployCommandEnabled];
7273
options.DotNetCliRunnerFactory = (sp) =>
7374
{
7475
var runner = new TestDotNetCliRunner
@@ -102,7 +103,7 @@ public async Task DeployCommandFailsWhenAppHostBuildFails()
102103
var services = CliTestHelper.CreateServiceCollection(tempRepo, outputHelper, options =>
103104
{
104105
options.ProjectLocatorFactory = (sp) => new TestProjectLocator();
105-
106+
options.EnabledFeatures = [KnownFeatures.DeployCommandEnabled];
106107
options.DotNetCliRunnerFactory = (sp) =>
107108
{
108109
var runner = new TestDotNetCliRunner
@@ -136,7 +137,7 @@ public async Task DeployCommandSucceedsEndToEnd()
136137
var services = CliTestHelper.CreateServiceCollection(tempRepo, outputHelper, options =>
137138
{
138139
options.ProjectLocatorFactory = (sp) => new TestProjectLocator();
139-
140+
options.EnabledFeatures = [KnownFeatures.DeployCommandEnabled];
140141
options.DotNetCliRunnerFactory = (sp) =>
141142
{
142143
var runner = new TestDotNetCliRunner
@@ -200,7 +201,7 @@ public async Task DeployCommandIncludesDeployFlagInArguments()
200201
var services = CliTestHelper.CreateServiceCollection(tempRepo, outputHelper, options =>
201202
{
202203
options.ProjectLocatorFactory = (sp) => new TestProjectLocator();
203-
204+
options.EnabledFeatures = [KnownFeatures.DeployCommandEnabled];
204205
options.DotNetCliRunnerFactory = (sp) =>
205206
{
206207
var runner = new TestDotNetCliRunner
@@ -256,6 +257,38 @@ public async Task DeployCommandIncludesDeployFlagInArguments()
256257
// Assert
257258
Assert.Equal(0, exitCode);
258259
}
260+
261+
[Fact]
262+
public void DeployCommand_WhenFeatureFlagDisabled_IsNotAvailable()
263+
{
264+
using var workspace = TemporaryWorkspace.Create(outputHelper);
265+
var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper);
266+
var provider = services.BuildServiceProvider();
267+
268+
var command = provider.GetRequiredService<RootCommand>();
269+
270+
// Check that the deploy command is not available in the subcommands
271+
var deployCommand = command.Subcommands.FirstOrDefault(c => c.Name == "deploy");
272+
Assert.Null(deployCommand);
273+
}
274+
275+
[Fact]
276+
public void DeployCommand_WhenFeatureFlagEnabled_IsAvailable()
277+
{
278+
using var workspace = TemporaryWorkspace.Create(outputHelper);
279+
var services = CliTestHelper.CreateServiceCollection(
280+
workspace,
281+
outputHelper,
282+
options => options.EnabledFeatures = [KnownFeatures.DeployCommandEnabled]
283+
);
284+
var provider = services.BuildServiceProvider();
285+
286+
var command = provider.GetRequiredService<RootCommand>();
287+
288+
// Check that the deploy command is available in the subcommands
289+
var deployCommand = command.Subcommands.FirstOrDefault(c => c.Name == "deploy");
290+
Assert.NotNull(deployCommand);
291+
}
259292
}
260293

261294
internal sealed class TestDeployCommandPrompter(IInteractionService interactionService) : PublishCommandPrompter(interactionService)

tests/Aspire.Cli.Tests/Utils/CliTestHelper.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,11 @@ public IProjectLocator CreateDefaultProjectLocatorFactory(IServiceProvider servi
212212
return new TestDotNetSdkInstaller();
213213
};
214214

215+
public Func<IServiceProvider, IDotNetSdkInstaller> DotNetSdkInstallerFactory { get; set; } = (IServiceProvider serviceProvider) =>
216+
{
217+
return new TestDotNetSdkInstaller();
218+
};
219+
215220
public Func<IServiceProvider, INuGetPackageCache> NuGetPackageCacheFactory { get; set; } = (IServiceProvider serviceProvider) =>
216221
{
217222
var logger = serviceProvider.GetRequiredService<ILogger<NuGetPackageCache>>();

0 commit comments

Comments
 (0)