Browse Source

Show NuGet log messages in Output window.

pull/15/head
mrward 15 years ago
parent
commit
3d6c88d5cc
  1. 2
      src/AddIns/Misc/PackageManagement/PackageManagement.sln
  2. 9
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  3. 2
      src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceViewModel.cs
  4. 11
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeFileSystem.cs
  5. 24
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementOutputMessagesView.cs
  6. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
  7. 8
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs
  8. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs
  9. 14
      src/AddIns/Misc/PackageManagement/Project/Src/ICompilerMessageView.cs
  10. 13
      src/AddIns/Misc/PackageManagement/Project/Src/IMessageViewCategory.cs
  11. 13
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementOutputMessagesView.cs
  12. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
  13. 27
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementCompilerMessageView.cs
  14. 28
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs
  15. 49
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs
  16. 32
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
  17. 37
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  18. 5
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  19. 8
      src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceViewModelTests.cs
  20. 33
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeCompilerMessageView.cs
  21. 30
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs
  22. 15
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs
  23. 1
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProjectSystemFactory.cs
  24. 6
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs
  25. 1
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/Tests/PackageReferenceRepositoryTests.cs
  26. 104
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs
  27. 73
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
  28. 10
      src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
  29. 2
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs

2
src/AddIns/Misc/PackageManagement/PackageManagement.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.1.0.7222-alpha
# SharpDevelop 4.1.0.7289-alpha
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement", "Project\PackageManagement.csproj", "{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement.Tests", "Test\PackageManagement.Tests.csproj", "{56E98A01-8398-4A08-9578-C7337711A52B}"

9
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -75,12 +75,21 @@ @@ -75,12 +75,21 @@
<Compile Include="Src\Design\DesignTimePackageManagementOptionsViewModel.cs" />
<Compile Include="Src\Design\DesignTimePackageManagementService.cs" />
<Compile Include="Src\Design\DesignTimePackagesViewModel.cs" />
<Compile Include="Src\Design\FakeFileSystem.cs" />
<Compile Include="Src\Design\FakePackage.cs" />
<Compile Include="Src\Design\FakePackageManagementOutputMessagesView.cs" />
<Compile Include="Src\Design\FakePackageManagementService.cs" />
<Compile Include="Src\Design\FakePackageRepository.cs" />
<Compile Include="Src\Design\FakeProjectManager.cs" />
<Compile Include="Src\Design\FakeProjectSystem.cs" />
<Compile Include="Src\Design\WpfDesigner.cs" />
<Compile Include="Src\ICompilerMessageView.cs" />
<Compile Include="Src\IMessageViewCategory.cs" />
<Compile Include="Src\IPackageManagementOutputMessagesView.cs" />
<Compile Include="Src\IPackageRepositoryCache.cs" />
<Compile Include="Src\PackageManagementCompilerMessageView.cs" />
<Compile Include="Src\PackageManagementMessageViewCategory.cs" />
<Compile Include="Src\PackageManagementOutputMessagesView.cs" />
<Compile Include="Src\PackageRepositoryCache.cs" />
<Compile Include="Src\PackagesForSelectedPageResult.cs" />
<Compile Include="Src\ILicenseAcceptanceService.cs" />

2
src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceViewModel.cs

@ -20,6 +20,8 @@ namespace ICSharpCode.PackageManagement @@ -20,6 +20,8 @@ namespace ICSharpCode.PackageManagement
ITaskFactory taskFactory)
{
this.packageManagementService = packageManagementService;
this.packageManagementService.OutputMessagesView.Clear();
installedPackagesViewModel = new InstalledPackagesViewModel(packageManagementService, taskFactory);
availablePackagesViewModel = new AvailablePackagesViewModel(packageManagementService, taskFactory);
packageUpdatesViewModel = new PackageUpdatesViewModel(packageManagementService, taskFactory);

11
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileSystem.cs → src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeFileSystem.cs

@ -7,7 +7,7 @@ using System.IO; @@ -7,7 +7,7 @@ using System.IO;
using System.Text;
using NuGet;
namespace PackageManagement.Tests.Helpers
namespace ICSharpCode.PackageManagement.Design
{
public class FakeFileSystem : IFileSystem
{
@ -15,14 +15,7 @@ namespace PackageManagement.Tests.Helpers @@ -15,14 +15,7 @@ namespace PackageManagement.Tests.Helpers
public string FileToReturnFromOpenFile;
public string PathToReturnFromGetFullPath;
public ILogger Logger {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public ILogger Logger { get; set; }
public string Root {
get {

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

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using NuGet;
namespace ICSharpCode.PackageManagement.Design
{
public class FakePackageManagementOutputMessagesView : IPackageManagementOutputMessagesView
{
public bool IsClearCalled;
public void Clear()
{
IsClearCalled = true;
}
public void Log(MessageLevel level, string message, params object[] args)
{
}
}
}

6
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs

@ -127,5 +127,11 @@ namespace ICSharpCode.PackageManagement.Design @@ -127,5 +127,11 @@ namespace ICSharpCode.PackageManagement.Design
}
public Exception ActiveProjectManagerExeptionToThrow { get; set; }
public FakePackageManagementOutputMessagesView FakeOutputMessagesView = new FakePackageManagementOutputMessagesView();
public IPackageManagementOutputMessagesView OutputMessagesView {
get { return FakeOutputMessagesView; }
}
}
}

8
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs

@ -43,9 +43,15 @@ namespace ICSharpCode.PackageManagement.Design @@ -43,9 +43,15 @@ namespace ICSharpCode.PackageManagement.Design
public IPackageRepository LocalRepository { get; set; }
public ILogger Logger { get; set; }
public IProjectSystem Project { get; set; }
public IPackageRepository SourceRepository { get; set; }
public IPackagePathResolver PathResolver { get; set; }
public IProjectSystem Project {
get { return FakeProjectSystem; }
set { FakeProjectSystem = value as FakeProjectSystem; }
}
public FakeProjectSystem FakeProjectSystem = new FakeProjectSystem();
public void AddPackageReference(string packageId, Version version, bool ignoreDependencies)
{

2
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProjectSystem.cs → src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs

@ -6,7 +6,7 @@ using System.IO; @@ -6,7 +6,7 @@ using System.IO;
using System.Runtime.Versioning;
using NuGet;
namespace PackageManagement.Tests.Helpers
namespace ICSharpCode.PackageManagement.Design
{
public class FakeProjectSystem : FakeFileSystem, IProjectSystem
{

14
src/AddIns/Misc/PackageManagement/Project/Src/ICompilerMessageView.cs

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement
{
public interface ICompilerMessageView
{
IMessageViewCategory Create(string categoryName, string categoryDisplayName);
IMessageViewCategory GetExisting(string name);
}
}

13
src/AddIns/Misc/PackageManagement/Project/Src/IMessageViewCategory.cs

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement
{
public interface IMessageViewCategory
{
void AppendLine(string text);
void Clear();
}
}

13
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementOutputMessagesView.cs

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public interface IPackageManagementOutputMessagesView : ILogger
{
void Clear();
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs

@ -23,5 +23,7 @@ namespace ICSharpCode.PackageManagement @@ -23,5 +23,7 @@ namespace ICSharpCode.PackageManagement
bool HasMultiplePackageSources { get; }
PackageSource ActivePackageSource { get; set; }
IPackageManagementOutputMessagesView OutputMessagesView { get; }
}
}

27
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementCompilerMessageView.cs

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.PackageManagement
{
public class PackageManagementCompilerMessageView : ICompilerMessageView
{
public IMessageViewCategory Create(string categoryName, string categoryDisplayName)
{
MessageViewCategory view = null;
MessageViewCategory.Create(ref view, categoryName, categoryDisplayName);
return new PackageManagementMessageViewCategory(view);
}
public IMessageViewCategory GetExisting(string categoryName)
{
MessageViewCategory view = CompilerMessageView.Instance.GetCategory(categoryName);
if (view != null) {
return new PackageManagementMessageViewCategory(view);
}
return null;
}
}
}

28
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.PackageManagement
{
public class PackageManagementMessageViewCategory : IMessageViewCategory
{
MessageViewCategory messageViewCategory;
public PackageManagementMessageViewCategory(MessageViewCategory messageViewCategory)
{
this.messageViewCategory = messageViewCategory;
}
public void AppendLine(string text)
{
messageViewCategory.AppendLine(text);
}
public void Clear()
{
messageViewCategory.ClearText();
}
}
}

49
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class PackageManagementOutputMessagesView : IPackageManagementOutputMessagesView
{
public static readonly string CategoryName = "PackageManagement";
IMessageViewCategory messageViewCategory;
public PackageManagementOutputMessagesView()
: this(new PackageManagementCompilerMessageView())
{
}
public PackageManagementOutputMessagesView(ICompilerMessageView compilerMessageView)
{
CreatePackageManagementMessageCategoryIfNoneExists(compilerMessageView);
}
void CreatePackageManagementMessageCategoryIfNoneExists(ICompilerMessageView compilerMessageView)
{
messageViewCategory = compilerMessageView.GetExisting(CategoryName);
if (messageViewCategory == null) {
CreatePackageManagementMessageCategory(compilerMessageView);
}
}
void CreatePackageManagementMessageCategory(ICompilerMessageView compilerMessageView)
{
messageViewCategory = compilerMessageView.Create(CategoryName, "Package Management");
}
public void Clear()
{
messageViewCategory.Clear();
}
public void Log(MessageLevel level, string message, params object[] args)
{
string formattedMessage = String.Format(message, args);
messageViewCategory.AppendLine(formattedMessage);
}
}
}

32
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs

@ -12,6 +12,7 @@ namespace ICSharpCode.PackageManagement @@ -12,6 +12,7 @@ namespace ICSharpCode.PackageManagement
{
public class PackageManagementService : IPackageManagementService
{
IPackageManagementOutputMessagesView outputMessagesView;
PackageManagementOptions options;
IPackageRepositoryCache packageRepositoryCache;
IPackageManagerFactory packageManagerFactory;
@ -19,25 +20,34 @@ namespace ICSharpCode.PackageManagement @@ -19,25 +20,34 @@ namespace ICSharpCode.PackageManagement
IPackageRepository activePackageRepository;
PackageSource activePackageSource;
public PackageManagementService(PackageManagementOptions options,
public PackageManagementService(
PackageManagementOptions options,
IPackageRepositoryCache packageRepositoryCache,
IPackageManagerFactory packageManagerFactory,
IPackageManagementProjectService projectService)
IPackageManagementProjectService projectService,
IPackageManagementOutputMessagesView outputMessagesView)
{
this.options = options;
this.packageRepositoryCache = packageRepositoryCache;
this.packageManagerFactory = packageManagerFactory;
this.projectService = projectService;
this.outputMessagesView = outputMessagesView;
}
public PackageManagementService()
: this(new PackageManagementOptions(),
: this(
new PackageManagementOptions(),
new PackageRepositoryCache(),
new SharpDevelopPackageManagerFactory(),
new PackageManagementProjectService())
new PackageManagementProjectService(),
new PackageManagementOutputMessagesView())
{
}
public IPackageManagementOutputMessagesView OutputMessagesView {
get { return outputMessagesView; }
}
public PackageManagementOptions Options {
get { return options; }
}
@ -97,7 +107,19 @@ namespace ICSharpCode.PackageManagement @@ -97,7 +107,19 @@ namespace ICSharpCode.PackageManagement
ISharpDevelopPackageManager CreatePackageManager(IPackageRepository packageRepository)
{
MSBuildBasedProject project = projectService.CurrentProject as MSBuildBasedProject;
return packageManagerFactory.CreatePackageManager(packageRepository, project);
ISharpDevelopPackageManager packageManager = packageManagerFactory.CreatePackageManager(packageRepository, project);
ConfigureLogger(packageManager);
return packageManager;
}
void ConfigureLogger(ISharpDevelopPackageManager packageManager)
{
packageManager.Logger = outputMessagesView;
packageManager.FileSystem.Logger = outputMessagesView;
IProjectManager projectManager = packageManager.ProjectManager;
projectManager.Logger = outputMessagesView;
projectManager.Project.Logger = outputMessagesView;
}
public void UninstallPackage(IPackageRepository repository, IPackage package)

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

@ -172,6 +172,29 @@ namespace ICSharpCode.PackageManagement @@ -172,6 +172,29 @@ namespace ICSharpCode.PackageManagement
}
}
void GetPackageOperations()
{
IPackageOperationResolver resolver = CreatePackageOperationResolver();
packageOperations = resolver.ResolveOperations(package);
}
IPackageOperationResolver CreatePackageOperationResolver()
{
return CreatePackageOperationResolver(Logger);
}
ILogger Logger {
get { return packageManagementService.OutputMessagesView; }
}
protected virtual IPackageOperationResolver CreatePackageOperationResolver(ILogger logger)
{
return new InstallWalker(LocalPackageRepository,
sourcePackageRepository,
logger,
ignoreDependencies: false);
}
bool CanInstallPackage()
{
IEnumerable<IPackage> packages = GetPackagesRequiringLicenseAcceptance();
@ -202,20 +225,6 @@ namespace ICSharpCode.PackageManagement @@ -202,20 +225,6 @@ namespace ICSharpCode.PackageManagement
}
return packages;
}
void GetPackageOperations()
{
IPackageOperationResolver resolver = CreatePackageOperationResolver();
packageOperations = resolver.ResolveOperations(package);
}
protected virtual IPackageOperationResolver CreatePackageOperationResolver()
{
return new InstallWalker(LocalPackageRepository,
sourcePackageRepository,
NullLogger.Instance,
ignoreDependencies: false);
}
bool PackageRequiresLicenseAcceptance(IPackage package)
{

5
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -68,9 +68,10 @@ @@ -68,9 +68,10 @@
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Src\Helpers\FakeCompilerMessageView.cs" />
<Compile Include="Src\Helpers\FakeFileService.cs" />
<Compile Include="Src\Helpers\FakeFileSystem.cs" />
<Compile Include="Src\Helpers\FakeLicenseAcceptanceService.cs" />
<Compile Include="Src\Helpers\FakeMessageCategoryView.cs" />
<Compile Include="Src\Helpers\FakePackageManager.cs" />
<Compile Include="Src\Helpers\FakePackageManagerFactory.cs" />
<Compile Include="Src\Helpers\FakePackageOperationResolver.cs" />
@ -89,7 +90,6 @@ @@ -89,7 +90,6 @@
<Compile Include="Src\Helpers\TestablePackageViewModel.cs" />
<Compile Include="Src\Helpers\TestableProject.cs" />
<Compile Include="Src\Helpers\TestableProjectManager.cs" />
<Compile Include="Src\Helpers\FakeProjectSystem.cs" />
<Compile Include="Src\Helpers\FakeProjectSystemFactory.cs" />
<Compile Include="Src\Helpers\FakeSharedPackageRepository.cs" />
<Compile Include="Src\Helpers\InstallPackageHelper.cs" />
@ -111,6 +111,7 @@ @@ -111,6 +111,7 @@
<Compile Include="Src\OpenHyperlinkCommandTests.cs" />
<Compile Include="Src\PackageManagementOptionsTests.cs" />
<Compile Include="Src\PackageManagementOptionsViewModelTests.cs" />
<Compile Include="Src\PackageManagementOutputMessagesViewTests.cs" />
<Compile Include="Src\PackageManagementServiceTests.cs" />
<Compile Include="Src\PackageRepositoryCacheTests.cs" />
<Compile Include="Src\PackageRepositoryPathsTests.cs" />

8
src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceViewModelTests.cs

@ -90,5 +90,13 @@ namespace PackageManagement.Tests @@ -90,5 +90,13 @@ namespace PackageManagement.Tests
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageUpdatesViewModel.PackageViewModels);
}
[Test]
public void Constructor_InstanceCreated_OutputMessagesCleared()
{
CreateViewModel();
Assert.IsTrue(fakePackageManagementService.FakeOutputMessagesView.IsClearCalled);
}
}
}

33
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeCompilerMessageView.cs

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.PackageManagement;
namespace PackageManagement.Tests.Helpers
{
public class FakeCompilerMessageView : ICompilerMessageView
{
public FakeMessageCategoryView FakeMessageCategoryView = new FakeMessageCategoryView();
public List<string> MessageViewCategoriesCreated = new List<string>();
public FakeMessageCategoryView GetExistingReturnValue;
public string CategoryNamePassedToCategoryExists;
public string FirstMessageViewCategoryCreated {
get { return MessageViewCategoriesCreated[0]; }
}
public IMessageViewCategory Create(string categoryName, string categoryDisplayName)
{
MessageViewCategoriesCreated.Add(categoryName);
return FakeMessageCategoryView;
}
public IMessageViewCategory GetExisting(string categoryName)
{
CategoryNamePassedToCategoryExists = categoryName;
return GetExistingReturnValue;
}
}
}

30
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.PackageManagement;
namespace PackageManagement.Tests.Helpers
{
public class FakeMessageCategoryView : IMessageViewCategory
{
public bool IsClearCalled;
public List<string> LinesAppended = new List<string>();
public string FirstLineAppended {
get { return LinesAppended[0]; }
}
public void AppendLine(string text)
{
LinesAppended.Add(text);
}
public void Clear()
{
IsClearCalled = true;
}
}
}

15
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs

@ -45,11 +45,18 @@ namespace PackageManagement.Tests.Helpers @@ -45,11 +45,18 @@ namespace PackageManagement.Tests.Helpers
public event EventHandler<PackageOperationEventArgs> PackageUninstalling;
#pragma warning restore 67
public IFileSystem FileSystem { get; set; }
public IFileSystem FileSystem {
get { return FakeFileSystem; }
set { FakeFileSystem = value as FakeFileSystem; }
}
public FakeFileSystem FakeFileSystem = new FakeFileSystem();
public IPackageRepository LocalRepository { get; set; }
public ILogger Logger { get; set; }
public IPackageRepository SourceRepository { get; set; }
public ISharpDevelopProjectManager ProjectManager { get; set; }
public ILogger LoggerSetBeforeInstallPackageCalled;
public FakePackageManager()
{
@ -58,11 +65,15 @@ namespace PackageManagement.Tests.Helpers @@ -58,11 +65,15 @@ namespace PackageManagement.Tests.Helpers
public void InstallPackage(IPackage package)
{
LoggerSetBeforeInstallPackageCalled = Logger;
InstallPackage(package, false);
}
public void InstallPackage(IPackage package, bool ignoreDependencies)
{
LoggerSetBeforeInstallPackageCalled = Logger;
PackagePassedToInstallPackage = package;
IgnoreDependenciesPassedToInstallPackage = ignoreDependencies;
@ -106,6 +117,8 @@ namespace PackageManagement.Tests.Helpers @@ -106,6 +117,8 @@ namespace PackageManagement.Tests.Helpers
public void InstallPackage(IPackage package, IEnumerable<PackageOperation> operations)
{
LoggerSetBeforeInstallPackageCalled = Logger;
PackagePassedToInstallPackage = package;
ParametersPassedToInstallPackage = new InstallPackageParameters();

1
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProjectSystemFactory.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.SharpDevelop.Project;
using NuGet;

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

@ -15,6 +15,7 @@ namespace PackageManagement.Tests.Helpers @@ -15,6 +15,7 @@ namespace PackageManagement.Tests.Helpers
public FakePackageManagementService FakePackageManagementService;
public FakeLicenseAcceptanceService FakeLicenseAcceptanceService;
public FakePackage FakePackage;
public ILogger LoggerUsedWhenCreatingPackageResolver;
public TestablePackageViewModel()
: this(
@ -39,12 +40,13 @@ namespace PackageManagement.Tests.Helpers @@ -39,12 +40,13 @@ namespace PackageManagement.Tests.Helpers
this.FakeSourcePackageRepository = FakePackageManagementService.FakeActivePackageRepository;
}
protected override IPackageOperationResolver CreatePackageOperationResolver()
protected override IPackageOperationResolver CreatePackageOperationResolver(ILogger logger)
{
LoggerUsedWhenCreatingPackageResolver = logger;
if (FakePackageOperationResolver != null) {
return FakePackageOperationResolver;
}
return base.CreatePackageOperationResolver();
return base.CreatePackageOperationResolver(logger);
}
}
}

1
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/Tests/PackageReferenceRepositoryTests.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.IO;
using ICSharpCode.PackageManagement.Design;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;

104
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs

@ -0,0 +1,104 @@ @@ -0,0 +1,104 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests
{
[TestFixture]
public class PackageManagementOutputMessagesViewTests
{
PackageManagementOutputMessagesView view;
FakeCompilerMessageView fakeCompilerMessageView;
FakeMessageCategoryView fakeMessageCategoryView;
void CreateView()
{
CreateCompilerMessageView();
CreateView(fakeCompilerMessageView);
}
void CreateCompilerMessageView()
{
fakeCompilerMessageView = new FakeCompilerMessageView();
fakeMessageCategoryView = fakeCompilerMessageView.FakeMessageCategoryView;
}
void CreateView(FakeCompilerMessageView fakeCompilerMessageView)
{
view = new PackageManagementOutputMessagesView(fakeCompilerMessageView);
}
void LogInfoMessage(string message)
{
view.Log(MessageLevel.Info, message);
}
[Test]
public void Log_InfoMessage_CreatesMessageViewCategoryForPackageManagement()
{
CreateView();
LogInfoMessage("Test");
string expectedCategryName = PackageManagementOutputMessagesView.CategoryName;
string actualCategoryName = fakeCompilerMessageView.FirstMessageViewCategoryCreated;
Assert.AreEqual(expectedCategryName, actualCategoryName);
}
[Test]
public void Log_InfoMessage_MessageLoggedToMessageCategoryView()
{
CreateView();
LogInfoMessage("Test");
Assert.AreEqual("Test", fakeMessageCategoryView.FirstLineAppended);
}
[Test]
public void Clear_AttemptingToClearMessages_MessagesClearedFromMessageViewCategory()
{
CreateView();
view.Clear();
Assert.IsTrue(fakeMessageCategoryView.IsClearCalled);
}
[Test]
public void Constructor_MessageViewCategoryAlreadyCreated_MessageViewCategoryNotCreatedAgain()
{
CreateCompilerMessageView();
fakeCompilerMessageView.GetExistingReturnValue = new FakeMessageCategoryView();
CreateView(fakeCompilerMessageView);
Assert.AreEqual(0, fakeCompilerMessageView.MessageViewCategoriesCreated.Count);
}
[Test]
public void Constructor_MessageViewCategoryAlreadyCreated_PackageManagementMessageCategoryNameCheckedToSeeIfItExists()
{
CreateCompilerMessageView();
fakeCompilerMessageView.GetExistingReturnValue = new FakeMessageCategoryView();
CreateView(fakeCompilerMessageView);
string expectedCategryName = PackageManagementOutputMessagesView.CategoryName;
string actualCategoryName = fakeCompilerMessageView.CategoryNamePassedToCategoryExists;
Assert.AreEqual(expectedCategryName, actualCategoryName);
}
[Test]
public void Log_InfoMessageUsingFormatStringPassed_FullyFormattedStringAddedToMessageViewCategory()
{
CreateView();
view.Log(MessageLevel.Info, "Test {0}", 1);
Assert.AreEqual("Test 1", fakeMessageCategoryView.FirstLineAppended);
}
}
}

73
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs

@ -24,6 +24,7 @@ namespace PackageManagement.Tests @@ -24,6 +24,7 @@ namespace PackageManagement.Tests
FakePackageManagementProjectService fakeProjectService;
TestableProject testProject;
InstallPackageHelper installPackageHelper;
FakePackageManagementOutputMessagesView fakeOutputMessagesView;
void CreatePackageSources()
{
@ -42,12 +43,14 @@ namespace PackageManagement.Tests @@ -42,12 +43,14 @@ namespace PackageManagement.Tests
fakePackageRepositoryFactory = new FakePackageRepositoryFactory();
fakePackageManagerFactory = new FakePackageManagerFactory();
fakeProjectService = new FakePackageManagementProjectService();
fakeOutputMessagesView = new FakePackageManagementOutputMessagesView();
fakeProjectService.CurrentProject = testProject;
packageManagementService =
new PackageManagementService(options,
fakePackageRepositoryFactory,
fakePackageManagerFactory,
fakeProjectService);
fakeProjectService,
fakeOutputMessagesView);
installPackageHelper = new InstallPackageHelper(packageManagementService);
}
@ -397,5 +400,73 @@ namespace PackageManagement.Tests @@ -397,5 +400,73 @@ namespace PackageManagement.Tests
CollectionAssert.AreEqual(installPackageHelper.PackageOperations, actualOperations);
}
[Test]
public void InstallPackage_OnePackageOperation_LoggerUsedByPackageManagerIsOutputMessagesViewLogger()
{
CreatePackageManagementService();
installPackageHelper.AddPackageInstallOperation();
installPackageHelper.InstallTestPackage();
ILogger expectedLogger = fakeOutputMessagesView;
ILogger actualLogger = fakePackageManagerFactory.FakePackageManager.Logger;
Assert.AreEqual(expectedLogger, actualLogger);
}
[Test]
public void InstallPackage_OnePackageOperation_LoggerUsedByPackageManagerIsConfiguredBeforeInstallPackageCalled()
{
CreatePackageManagementService();
installPackageHelper.AddPackageInstallOperation();
installPackageHelper.InstallTestPackage();
ILogger expectedLogger = fakeOutputMessagesView;
ILogger actualLogger = fakePackageManagerFactory.FakePackageManager.LoggerSetBeforeInstallPackageCalled;
Assert.AreEqual(expectedLogger, actualLogger);
}
[Test]
public void InstallPackage_OnePackageOperation_ProjectManagerLoggerIsOutputMessagesViewLogger()
{
CreatePackageManagementService();
installPackageHelper.AddPackageInstallOperation();
installPackageHelper.InstallTestPackage();
ILogger expectedLogger = fakeOutputMessagesView;
ILogger actualLogger = fakePackageManagerFactory.FakePackageManager.FakeProjectManager.Logger;
Assert.AreEqual(expectedLogger, actualLogger);
}
[Test]
public void InstallPackage_OnePackageOperation_ProjectManagerProjectSystemLoggerIsOutputMessagesViewLogger()
{
CreatePackageManagementService();
var projectSystem = new FakeProjectSystem();
FakeProjectManager projectManager = fakePackageManagerFactory.FakePackageManager.FakeProjectManager;
projectManager.Project = projectSystem;
installPackageHelper.AddPackageInstallOperation();
installPackageHelper.InstallTestPackage();
ILogger expectedLogger = fakeOutputMessagesView;
ILogger actualLogger = projectSystem.Logger;
Assert.AreEqual(expectedLogger, actualLogger);
}
[Test]
public void InstallPackage_OnePackageOperation_PackageManagerFileSystemLoggerIsOutputMessagesViewLogger()
{
CreatePackageManagementService();
installPackageHelper.AddPackageInstallOperation();
installPackageHelper.InstallTestPackage();
ILogger expectedLogger = fakeOutputMessagesView;
ILogger actualLogger = fakePackageManagerFactory.FakePackageManager.FileSystem.Logger;
Assert.AreEqual(expectedLogger, actualLogger);
}
}
}

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

@ -439,5 +439,15 @@ namespace PackageManagement.Tests @@ -439,5 +439,15 @@ namespace PackageManagement.Tests
Assert.IsFalse(licenseAcceptanceService.IsAcceptLicensesCalled);
}
[Test]
public void AddPackage_CheckLoggerUsed_OutputMessagesLoggerUsedWhenResolvingPackageOperations()
{
CreateViewModel();
viewModel.AddPackage();
ILogger expectedLogger = packageManagementService.FakeOutputMessagesView;
Assert.AreEqual(expectedLogger, viewModel.LoggerUsedWhenCreatingPackageResolver);
}
}
}

2
src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs

@ -152,8 +152,6 @@ namespace PackageManagement.Tests @@ -152,8 +152,6 @@ namespace PackageManagement.Tests
return new PackageOperation(package, PackageAction.Install);
}
[Test]
public void ProjectManager_InstanceCreated_SourceRepositoryIsSharedRepositoryPassedToPackageManager()
{

Loading…
Cancel
Save