Skip to content
Draft
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
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public WorkloadInstallCommand(
_shouldShutdownInstaller = _workloadInstallerFromConstructor != null;

_workloadManifestUpdater = _workloadManifestUpdaterFromConstructor ?? new WorkloadManifestUpdater(resolvedReporter, _workloadResolver, PackageDownloader, _userProfileDir,
_workloadInstaller.GetWorkloadInstallationRecordRepository(), _workloadInstaller, _packageSourceLocation, displayManifestUpdates: Verbosity.IsDetailedOrDiagnostic());
_workloadInstaller.GetWorkloadInstallationRecordRepository(), _workloadInstaller, _packageSourceLocation, displayManifestUpdates: Verbosity.IsDiagnostic());
}

private IReadOnlyCollection<string> GetValidWorkloadIds()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,10 @@ private async Task<bool> UpdateManifestWithVersionAsync(string id, bool includeP
}
catch (Exception e)
{
_reporter.WriteLine(CliCommandStrings.FailedAdManifestUpdate, manifestId, e.Message);
if (_displayManifestUpdates)
{
_reporter.WriteLine(CliCommandStrings.FailedAdManifestUpdate, manifestId, e.Message);
}
return false;
}
finally
Expand Down Expand Up @@ -405,7 +408,10 @@ private async Task UpdateAdvertisingManifestAsync(WorkloadManifestInfo manifest,
}
}

_reporter.WriteLine(CliCommandStrings.AdManifestPackageDoesNotExist, manifest.Id);
if (_displayManifestUpdates)
{
_reporter.WriteLine(CliCommandStrings.AdManifestPackageDoesNotExist, manifest.Id);
}
}

private (ManifestVersionWithBand ManifestWithBand, WorkloadCollection Workloads)? GetAdvertisingManifestVersionAndWorkloads(ManifestId manifestId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public WorkloadListCommand(
string userProfileDir1 = userProfileDir ?? CliFolderPathCalculator.DotnetUserProfileFolderPath;

_workloadManifestUpdater = workloadManifestUpdater ?? new WorkloadManifestUpdater(resolvedReporter,
_workloadListHelper.WorkloadResolver, PackageDownloader, userProfileDir1, _workloadListHelper.WorkloadRecordRepo, _workloadListHelper.Installer);
_workloadListHelper.WorkloadResolver, PackageDownloader, userProfileDir1, _workloadListHelper.WorkloadRecordRepo, _workloadListHelper.Installer, displayManifestUpdates: Verbosity.IsDiagnostic());
}

public override int Execute()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.CommandLine;
using System.Text.Json;
using Microsoft.DotNet.Cli.Commands.Workload.Install;
using Microsoft.DotNet.Cli.Extensions;
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
using Microsoft.DotNet.Cli.ToolPackage;
using Microsoft.DotNet.Cli.Utils;
Expand Down Expand Up @@ -54,7 +55,7 @@ public WorkloadUpdateCommand(


_workloadManifestUpdater = _workloadManifestUpdaterFromConstructor ?? new WorkloadManifestUpdater(resolvedReporter, _workloadResolver, PackageDownloader, _userProfileDir,
_workloadInstaller.GetWorkloadInstallationRecordRepository(), _workloadInstaller, _packageSourceLocation, sdkFeatureBand: _sdkFeatureBand);
_workloadInstaller.GetWorkloadInstallationRecordRepository(), _workloadInstaller, _packageSourceLocation, displayManifestUpdates: Verbosity.IsDiagnostic(), sdkFeatureBand: _sdkFeatureBand);
_recorder = recorder;
if (_recorder is null)
{
Expand Down
6 changes: 6 additions & 0 deletions src/Cli/dotnet/Extensions/CommonOptionsExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ public static bool IsDetailedOrDiagnostic(this VerbosityOptions verbosity)
verbosity.Equals(VerbosityOptions.detailed);
}

public static bool IsDiagnostic(this VerbosityOptions verbosity)
{
return verbosity.Equals(VerbosityOptions.diag) ||
verbosity.Equals(VerbosityOptions.diagnostic);
}

public static bool IsQuiet(this VerbosityOptions verbosity)
{
return verbosity.Equals(VerbosityOptions.q) ||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,7 @@ public void HideManifestUpdateCheckWhenVerbosityIsQuiet()
[Theory(Skip = "https://github.com/dotnet/sdk/issues/25175")]
[InlineData("--verbosity:minimal")]
[InlineData("--verbosity:normal")]
[InlineData("--verbosity:detailed")]
public void HideManifestUpdatesWhenVerbosityIsMinimalOrNormal(string verbosityFlag)
{
var command = new DotnetCommand(Log);
Expand All @@ -617,9 +618,8 @@ public void HideManifestUpdatesWhenVerbosityIsMinimalOrNormal(string verbosityFl
}

[Theory(Skip = "https://github.com/dotnet/sdk/issues/25175")]
[InlineData("--verbosity:detailed")]
[InlineData("--verbosity:diagnostic")]
public void ShowManifestUpdatesWhenVerbosityIsDetailedOrDiagnostic(string verbosityFlag)
public void ShowManifestUpdatesWhenVerbosityIsDiagnostic(string verbosityFlag)
{
string sdkFeatureBand = "6.0.300";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ public async Task ItCanFallbackWithNoUpdates(bool useOfflineCache)
var workloadResolver = WorkloadResolver.CreateForTests(workloadManifestProvider, dotnetRoot);
var nugetDownloader = new MockNuGetPackageDownloader(dotnetRoot);
var installationRepo = new MockInstallationRecordRepository();
var manifestUpdater = new WorkloadManifestUpdater(_reporter, workloadResolver, nugetDownloader, Path.Combine(testDir, ".dotnet"), installationRepo, new MockPackWorkloadInstaller(dotnetRoot));
var manifestUpdater = new WorkloadManifestUpdater(_reporter, workloadResolver, nugetDownloader, Path.Combine(testDir, ".dotnet"), installationRepo, new MockPackWorkloadInstaller(dotnetRoot), displayManifestUpdates: true);

var offlineCacheDir = "";
if (useOfflineCache)
Expand Down Expand Up @@ -349,6 +349,48 @@ public async Task ItCanFallbackWithNoUpdates(bool useOfflineCache)
_reporter.Lines.Should().Contain(string.Format(CliCommandStrings.AdManifestPackageDoesNotExist, testManifestName));
}

[Fact]
public async Task ItSuppressesMessagesWhenDisplayManifestUpdatesIsFalse()
{
// Test that advertising manifest messages are suppressed when displayManifestUpdates is false

// Arrange
string sdkFeatureBand = "6.0.300";
var testDir = _testAssetsManager.CreateTestDirectory().Path;
var dotnetRoot = Path.Combine(testDir, "dotnet");

var emptyInstalledManifestsDir = Path.Combine(dotnetRoot, "sdk-manifests", "6.0.200");
Directory.CreateDirectory(emptyInstalledManifestsDir);

var adManifestDir = Path.Combine(testDir, ".dotnet", "sdk-advertising", sdkFeatureBand);
Directory.CreateDirectory(adManifestDir);

string testManifestName = "test-manifest";
Directory.CreateDirectory(Path.Combine(emptyInstalledManifestsDir, testManifestName));
File.WriteAllText(Path.Combine(emptyInstalledManifestsDir, testManifestName, _manifestFileName), GetManifestContent(new ManifestVersion("1.0.0")));

var workloadManifestProvider = new MockManifestProvider((testManifestName, Path.Combine(emptyInstalledManifestsDir, testManifestName, _manifestFileName), "1.0.0", "6.0.200"))
{
SdkFeatureBand = new SdkFeatureBand(sdkFeatureBand)
};

var workloadResolver = WorkloadResolver.CreateForTests(workloadManifestProvider, dotnetRoot);
var nugetDownloader = new MockNuGetPackageDownloader(dotnetRoot);
var installationRepo = new MockInstallationRecordRepository();
// Create updater with displayManifestUpdates: false (simulating non-diagnostic verbosity)
var manifestUpdater = new WorkloadManifestUpdater(_reporter, workloadResolver, nugetDownloader, Path.Combine(testDir, ".dotnet"), installationRepo, new MockPackWorkloadInstaller(dotnetRoot), displayManifestUpdates: false);

nugetDownloader.PackageIdsToNotFind.Add($"{testManifestName}.Manifest-6.0.300");
nugetDownloader.PackageIdsToNotFind.Add($"{testManifestName}.Manifest-6.0.200");

// Act
await manifestUpdater.UpdateAdvertisingManifestsAsync(includePreviews: true);

// Assert - messages should be suppressed
_reporter.Lines.Should().NotContain(l => l.ToLowerInvariant().Contains("fail"));
_reporter.Lines.Should().NotContain(string.Format(CliCommandStrings.AdManifestPackageDoesNotExist, testManifestName));
}

[Theory]
[InlineData(false)]
[InlineData(true)]
Expand Down Expand Up @@ -384,7 +426,7 @@ public async Task GivenNoUpdatesAreAvailableAndNoRollbackItGivesAppropriateMessa
var workloadResolver = WorkloadResolver.CreateForTests(workloadManifestProvider, dotnetRoot);
var nugetDownloader = new MockNuGetPackageDownloader(dotnetRoot);
var installationRepo = new MockInstallationRecordRepository();
var manifestUpdater = new WorkloadManifestUpdater(_reporter, workloadResolver, nugetDownloader, Path.Combine(testDir, ".dotnet"), installationRepo, new MockPackWorkloadInstaller(dotnetRoot));
var manifestUpdater = new WorkloadManifestUpdater(_reporter, workloadResolver, nugetDownloader, Path.Combine(testDir, ".dotnet"), installationRepo, new MockPackWorkloadInstaller(dotnetRoot), displayManifestUpdates: true);

var offlineCacheDir = "";
if (useOfflineCache)
Expand Down