diff --git a/src/AddIns/Misc/PackageManagement/PackageManagement.sln b/src/AddIns/Misc/PackageManagement/PackageManagement.sln
index da789b6ae0..8b2b5afbc5 100644
--- a/src/AddIns/Misc/PackageManagement/PackageManagement.sln
+++ b/src/AddIns/Misc/PackageManagement/PackageManagement.sln
@@ -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}"
diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
index 1c6a2d7b2c..469b367f80 100644
--- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
+++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
@@ -75,12 +75,21 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceViewModel.cs
index 5990b7ddf6..bc3105c862 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceViewModel.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceViewModel.cs
@@ -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);
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileSystem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeFileSystem.cs
similarity index 90%
rename from src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileSystem.cs
rename to src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeFileSystem.cs
index 5115c36798..676701d5ae 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileSystem.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeFileSystem.cs
@@ -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
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 {
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementOutputMessagesView.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementOutputMessagesView.cs
new file mode 100644
index 0000000000..710653156a
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementOutputMessagesView.cs
@@ -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)
+ {
+
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
index 8a2968bce0..e25532f078 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
@@ -127,5 +127,11 @@ namespace ICSharpCode.PackageManagement.Design
}
public Exception ActiveProjectManagerExeptionToThrow { get; set; }
+
+ public FakePackageManagementOutputMessagesView FakeOutputMessagesView = new FakePackageManagementOutputMessagesView();
+
+ public IPackageManagementOutputMessagesView OutputMessagesView {
+ get { return FakeOutputMessagesView; }
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs
index e5f69adae2..24a3f4ee07 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs
@@ -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)
{
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProjectSystem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs
similarity index 95%
rename from src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProjectSystem.cs
rename to src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs
index 33ff1d92cf..548dbc9459 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProjectSystem.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs
@@ -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
{
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/ICompilerMessageView.cs b/src/AddIns/Misc/PackageManagement/Project/Src/ICompilerMessageView.cs
new file mode 100644
index 0000000000..2b2f980a48
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/ICompilerMessageView.cs
@@ -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);
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IMessageViewCategory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IMessageViewCategory.cs
new file mode 100644
index 0000000000..3cb0339f02
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/IMessageViewCategory.cs
@@ -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();
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementOutputMessagesView.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementOutputMessagesView.cs
new file mode 100644
index 0000000000..1344b88fdb
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementOutputMessagesView.cs
@@ -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();
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
index abb3c28fbc..1afbf89cec 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
@@ -23,5 +23,7 @@ namespace ICSharpCode.PackageManagement
bool HasMultiplePackageSources { get; }
PackageSource ActivePackageSource { get; set; }
+
+ IPackageManagementOutputMessagesView OutputMessagesView { get; }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementCompilerMessageView.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementCompilerMessageView.cs
new file mode 100644
index 0000000000..5d2da7e658
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementCompilerMessageView.cs
@@ -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;
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs
new file mode 100644
index 0000000000..1d9ef34973
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs
@@ -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();
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs
new file mode 100644
index 0000000000..87af3c2949
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs
@@ -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);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
index 0fb6fdbad0..f21873eeb1 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
@@ -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
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
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)
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
index 4dd80b4ec4..0f9a4f39be 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
@@ -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 packages = GetPackagesRequiringLicenseAcceptance();
@@ -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)
{
diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
index b5b6e3a7cc..74cea6cada 100644
--- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
+++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
@@ -68,9 +68,10 @@
Properties\GlobalAssemblyInfo.cs
+
-
+
@@ -89,7 +90,6 @@
-
@@ -111,6 +111,7 @@
+
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceViewModelTests.cs
index ec598f63cd..9fffa4ac93 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceViewModelTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceViewModelTests.cs
@@ -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);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeCompilerMessageView.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeCompilerMessageView.cs
new file mode 100644
index 0000000000..cc58a586d6
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeCompilerMessageView.cs
@@ -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 MessageViewCategoriesCreated = new List();
+ 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;
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs
new file mode 100644
index 0000000000..d780364540
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs
@@ -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 LinesAppended = new List();
+
+ public string FirstLineAppended {
+ get { return LinesAppended[0]; }
+ }
+
+ public void AppendLine(string text)
+ {
+ LinesAppended.Add(text);
+ }
+
+ public void Clear()
+ {
+ IsClearCalled = true;
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs
index 3fa098f162..d4945284a8 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs
@@ -45,11 +45,18 @@ namespace PackageManagement.Tests.Helpers
public event EventHandler 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
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
public void InstallPackage(IPackage package, IEnumerable operations)
{
+ LoggerSetBeforeInstallPackageCalled = Logger;
+
PackagePassedToInstallPackage = package;
ParametersPassedToInstallPackage = new InstallPackageParameters();
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProjectSystemFactory.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProjectSystemFactory.cs
index 90244ce7f9..0481f123e1 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProjectSystemFactory.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProjectSystemFactory.cs
@@ -3,6 +3,7 @@
using System;
using ICSharpCode.PackageManagement;
+using ICSharpCode.PackageManagement.Design;
using ICSharpCode.SharpDevelop.Project;
using NuGet;
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs
index 47e739db18..8fb964fbfc 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs
@@ -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
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);
}
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/Tests/PackageReferenceRepositoryTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/Tests/PackageReferenceRepositoryTests.cs
index 7e57a913cf..71ca8ea092 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/Tests/PackageReferenceRepositoryTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/Tests/PackageReferenceRepositoryTests.cs
@@ -3,6 +3,7 @@
using System;
using System.IO;
+using ICSharpCode.PackageManagement.Design;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs
new file mode 100644
index 0000000000..129392abd9
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs
@@ -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);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
index 7d5f7d9f25..3f14eea0ff 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
@@ -24,6 +24,7 @@ namespace PackageManagement.Tests
FakePackageManagementProjectService fakeProjectService;
TestableProject testProject;
InstallPackageHelper installPackageHelper;
+ FakePackageManagementOutputMessagesView fakeOutputMessagesView;
void CreatePackageSources()
{
@@ -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
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);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
index 196527f75f..3e4c7ded25 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
@@ -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);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
index bbe25c0997..7acaf6816c 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
@@ -152,8 +152,6 @@ namespace PackageManagement.Tests
return new PackageOperation(package, PackageAction.Install);
}
-
-
[Test]
public void ProjectManager_InstanceCreated_SourceRepositoryIsSharedRepositoryPassedToPackageManager()
{