Browse Source

Log start and end of NuGet package installation in the Output window.

pull/15/head
mrward 15 years ago
parent
commit
4d2b963d57
  1. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
  2. 23
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementOutputMessagesView.cs
  3. 78
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  4. 10
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs
  5. 78
      src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs

2
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs

@ -76,7 +76,7 @@ namespace ICSharpCode.PackageManagement.Design
public override string ToString() public override string ToString()
{ {
return "Package.Id: " + Id; return String.Format("{0} {1}", Id, Version);
} }
public override bool Equals(object obj) public override bool Equals(object obj)

23
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementOutputMessagesView.cs

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Collections.Generic;
using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement;
using NuGet; using NuGet;
@ -10,6 +11,25 @@ namespace ICSharpCode.PackageManagement.Design
public class FakePackageManagementOutputMessagesView : IPackageManagementOutputMessagesView public class FakePackageManagementOutputMessagesView : IPackageManagementOutputMessagesView
{ {
public bool IsClearCalled; public bool IsClearCalled;
public List<string> FormattedMessagesLogged = new List<string>();
public string FirstFormattedMessageLogged {
get { return FormattedMessagesLogged[0]; }
}
public string LastFormattedMessageLogged {
get {
int index = FormattedMessagesLogged.Count - 1;
return FormattedMessagesLogged[index];
}
}
public string NextToLastFormattedMessageLogged {
get {
int index = FormattedMessagesLogged.Count - 2;
return FormattedMessagesLogged[index];
}
}
public void Clear() public void Clear()
{ {
@ -18,7 +38,8 @@ namespace ICSharpCode.PackageManagement.Design
public void Log(MessageLevel level, string message, params object[] args) public void Log(MessageLevel level, string message, params object[] args)
{ {
string formattedMessage = String.Format(message, args);
FormattedMessagesLogged.Add(formattedMessage);
} }
} }
} }

78
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

@ -24,7 +24,7 @@ namespace ICSharpCode.PackageManagement
public PackageViewModel( public PackageViewModel(
IPackage package, IPackage package,
IPackageManagementService packageManagementService, IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService) ILicenseAcceptanceService licenseAcceptanceService)
{ {
this.package = package; this.package = package;
@ -59,7 +59,7 @@ namespace ICSharpCode.PackageManagement
localPackageRepository = packageManagementService.ActiveProjectManager.LocalRepository; localPackageRepository = packageManagementService.ActiveProjectManager.LocalRepository;
} }
public ICommand AddPackageCommand { public ICommand AddPackageCommand {
get { return addPackageCommand; } get { return addPackageCommand; }
} }
@ -87,7 +87,7 @@ namespace ICSharpCode.PackageManagement
public Uri ProjectUrl { public Uri ProjectUrl {
get { return package.ProjectUrl; } get { return package.ProjectUrl; }
} }
public bool HasReportAbuseUrl { public bool HasReportAbuseUrl {
get { return ReportAbuseUrl != null; } get { return ReportAbuseUrl != null; }
} }
@ -166,10 +166,59 @@ namespace ICSharpCode.PackageManagement
public void AddPackage() public void AddPackage()
{ {
LogAddingPackage();
GetPackageOperations(); GetPackageOperations();
if (CanInstallPackage()) { if (CanInstallPackage()) {
InstallPackage(); InstallPackage();
} }
LogAfterPackageOperationCompletes();
}
void LogAddingPackage()
{
string message = GetFormattedStartPackageOperationMessage(AddingPackageMessageFormat);
Log(message);
}
void Log(string message)
{
Logger.Log(MessageLevel.Info, message);
}
string GetFormattedStartPackageOperationMessage(string format)
{
string message = String.Format(format, package.ToString());
return GetStartPackageOperationMessage(message);
}
string GetStartPackageOperationMessage(string message)
{
return String.Format("------- {0} -------", message);
}
ILogger Logger {
get { return packageManagementService.OutputMessagesView; }
}
protected virtual string AddingPackageMessageFormat {
get { return "Installing...{0}"; }
}
void LogAfterPackageOperationCompletes()
{
LogEndMarkerLine();
LogEmptyLine();
}
void LogEndMarkerLine()
{
string message = new String('=', 30);
Log(message);
}
void LogEmptyLine()
{
Log(String.Empty);
} }
void GetPackageOperations() void GetPackageOperations()
@ -183,16 +232,12 @@ namespace ICSharpCode.PackageManagement
return CreatePackageOperationResolver(Logger); return CreatePackageOperationResolver(Logger);
} }
ILogger Logger {
get { return packageManagementService.OutputMessagesView; }
}
protected virtual IPackageOperationResolver CreatePackageOperationResolver(ILogger logger) protected virtual IPackageOperationResolver CreatePackageOperationResolver(ILogger logger)
{ {
return new InstallWalker(LocalPackageRepository, return new InstallWalker(LocalPackageRepository,
sourcePackageRepository, sourcePackageRepository,
logger, logger,
ignoreDependencies: false); ignoreDependencies: false);
} }
bool CanInstallPackage() bool CanInstallPackage()
@ -239,8 +284,21 @@ namespace ICSharpCode.PackageManagement
public void RemovePackage() public void RemovePackage()
{ {
LogRemovingPackage();
packageManagementService.UninstallPackage(sourcePackageRepository, package); packageManagementService.UninstallPackage(sourcePackageRepository, package);
LogAfterPackageOperationCompletes();
OnPropertyChanged(model => model.IsAdded); OnPropertyChanged(model => model.IsAdded);
} }
void LogRemovingPackage()
{
string message = GetFormattedStartPackageOperationMessage(RemovingPackageMessageFormat);
Log(message);
}
protected virtual string RemovingPackageMessageFormat {
get { return "Uninstalling...{0}"; }
}
} }
} }

10
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs

@ -16,6 +16,8 @@ namespace PackageManagement.Tests.Helpers
public FakeLicenseAcceptanceService FakeLicenseAcceptanceService; public FakeLicenseAcceptanceService FakeLicenseAcceptanceService;
public FakePackage FakePackage; public FakePackage FakePackage;
public ILogger LoggerUsedWhenCreatingPackageResolver; public ILogger LoggerUsedWhenCreatingPackageResolver;
public string PackageViewModelAddingPackageMessageFormat = String.Empty;
public string PackageViewModelRemovingPackageMessageFormat = String.Empty;
public TestablePackageViewModel() public TestablePackageViewModel()
: this( : this(
@ -48,5 +50,13 @@ namespace PackageManagement.Tests.Helpers
} }
return base.CreatePackageOperationResolver(logger); return base.CreatePackageOperationResolver(logger);
} }
protected override string AddingPackageMessageFormat {
get { return PackageViewModelAddingPackageMessageFormat; }
}
protected override string RemovingPackageMessageFormat {
get { return PackageViewModelRemovingPackageMessageFormat; }
}
} }
} }

78
src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs

@ -449,5 +449,83 @@ namespace PackageManagement.Tests
ILogger expectedLogger = packageManagementService.FakeOutputMessagesView; ILogger expectedLogger = packageManagementService.FakeOutputMessagesView;
Assert.AreEqual(expectedLogger, viewModel.LoggerUsedWhenCreatingPackageResolver); Assert.AreEqual(expectedLogger, viewModel.LoggerUsedWhenCreatingPackageResolver);
} }
[Test]
public void AddPackage_PackageAddedSuccessfully_InstallingPackageMessageIsFirstMessageLogged()
{
CreateViewModel();
package.Id = "Test.Package";
package.Version = new Version(1, 2, 0, 55);
viewModel.PackageViewModelAddingPackageMessageFormat = "Updating...{0}";
viewModel.AddPackage();
string expectedMessage = "------- Updating...Test.Package 1.2.0.55 -------";
string actualMessage = packageManagementService.FakeOutputMessagesView.FirstFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_NextToLastMesssageLoggedMarksEndOfInstallation()
{
CreateViewModel();
viewModel.AddPackage();
string expectedMessage = "==============================";
string actualMessage = packageManagementService.FakeOutputMessagesView.NextToLastFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_LastMesssageLoggedIsEmptyLine()
{
CreateViewModel();
viewModel.AddPackage();
string expectedMessage = String.Empty;
string actualMessage = packageManagementService.FakeOutputMessagesView.LastFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
[Test]
public void RemovePackage_PackageRemovedSuccessfully_UninstallingPackageMessageIsFirstMessageLogged()
{
CreateViewModel();
package.Id = "Test.Package";
package.Version = new Version(1, 2, 0, 55);
viewModel.PackageViewModelRemovingPackageMessageFormat = "Removing...{0}";
viewModel.RemovePackage();
string expectedMessage = "------- Removing...Test.Package 1.2.0.55 -------";
string actualMessage = packageManagementService.FakeOutputMessagesView.FirstFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
[Test]
public void RemovePackage_PackageRemovedSuccessfully_NextToLastMesssageLoggedMarksEndOfInstallation()
{
CreateViewModel();
viewModel.RemovePackage();
string expectedMessage = "==============================";
string actualMessage = packageManagementService.FakeOutputMessagesView.NextToLastFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
[Test]
public void RemovePackage_PackageRemovedSuccessfully_LastMesssageLoggedIsEmptyLine()
{
CreateViewModel();
viewModel.RemovePackage();
string expectedMessage = String.Empty;
string actualMessage = packageManagementService.FakeOutputMessagesView.LastFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
} }
} }

Loading…
Cancel
Save