55 changed files with 1894 additions and 30 deletions
Binary file not shown.
Binary file not shown.
@ -0,0 +1,34 @@ |
|||||||
|
// 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.IO; |
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class DefaultProjectTemplatePackageSource |
||||||
|
{ |
||||||
|
PackageSource packageSource; |
||||||
|
|
||||||
|
public DefaultProjectTemplatePackageSource() |
||||||
|
: this(new PackageManagementPropertyService()) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public DefaultProjectTemplatePackageSource(IPropertyService propertyService) |
||||||
|
{ |
||||||
|
CreatePackageSource(propertyService.DataDirectory); |
||||||
|
} |
||||||
|
|
||||||
|
void CreatePackageSource(string dataDirectory) |
||||||
|
{ |
||||||
|
string packageDirectory = Path.Combine(dataDirectory, @"templates\packages"); |
||||||
|
packageSource = new PackageSource(packageDirectory, "Default"); |
||||||
|
} |
||||||
|
|
||||||
|
public PackageSource PackageSource { |
||||||
|
get { return packageSource; } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
// 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 NuGet; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public interface IPackageReferenceFile |
||||||
|
{ |
||||||
|
IEnumerable<PackageReference> GetPackageReferences(); |
||||||
|
void DeleteEntry(string id, Version version); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
// 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 IPackageReferenceFileFactory |
||||||
|
{ |
||||||
|
IPackageReferenceFile CreatePackageReferenceFile(string fileName); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
// 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.SharpDevelop.Project; |
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public interface IPackageReferenceInstaller |
||||||
|
{ |
||||||
|
void InstallPackages( |
||||||
|
IEnumerable<PackageReference> packageReferences, |
||||||
|
MSBuildBasedProject project); |
||||||
|
} |
||||||
|
} |
@ -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 IPackageReferencesForProject |
||||||
|
{ |
||||||
|
void RemovePackageReferences(); |
||||||
|
void InstallPackages(); |
||||||
|
} |
||||||
|
} |
@ -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 IPropertyService |
||||||
|
{ |
||||||
|
string DataDirectory { get; } |
||||||
|
string ConfigDirectory { get; } |
||||||
|
} |
||||||
|
} |
@ -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 ISettingsFactory |
||||||
|
{ |
||||||
|
ISettings CreateSettings(string directory); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,83 @@ |
|||||||
|
// 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.Core; |
||||||
|
using ICSharpCode.Core.Services; |
||||||
|
using ICSharpCode.SharpDevelop.Internal.Templates; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class InstallProjectTemplatePackagesCommand : AbstractCommand |
||||||
|
{ |
||||||
|
IPackageRepositoryCache packageRepositoryCache; |
||||||
|
IPackageManagementProjectService projectService; |
||||||
|
IMessageService messageService; |
||||||
|
ILoggingService loggingService; |
||||||
|
|
||||||
|
public InstallProjectTemplatePackagesCommand() |
||||||
|
: this( |
||||||
|
PackageManagementServices.ProjectTemplatePackageRepositoryCache, |
||||||
|
PackageManagementServices.ProjectService, |
||||||
|
ServiceManager.Instance.MessageService, |
||||||
|
ServiceManager.Instance.LoggingService) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public InstallProjectTemplatePackagesCommand( |
||||||
|
IPackageRepositoryCache packageRepositoryCache, |
||||||
|
IPackageManagementProjectService projectService, |
||||||
|
IMessageService messageService, |
||||||
|
ILoggingService loggingService) |
||||||
|
{ |
||||||
|
this.packageRepositoryCache = packageRepositoryCache; |
||||||
|
this.projectService = projectService; |
||||||
|
this.messageService = messageService; |
||||||
|
this.loggingService = loggingService; |
||||||
|
} |
||||||
|
|
||||||
|
public override void Run() |
||||||
|
{ |
||||||
|
try { |
||||||
|
InstallPackages(); |
||||||
|
} catch (Exception ex) { |
||||||
|
DisplayError(ex); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void DisplayError(Exception ex) |
||||||
|
{ |
||||||
|
loggingService.Error(null, ex); |
||||||
|
messageService.ShowError(ex.Message); |
||||||
|
} |
||||||
|
|
||||||
|
void InstallPackages() |
||||||
|
{ |
||||||
|
foreach (MSBuildBasedProject project in GetCreatedProjects()) { |
||||||
|
IPackageReferencesForProject packageReferences = CreatePackageReferencesForProject(project); |
||||||
|
packageReferences.RemovePackageReferences(); |
||||||
|
packageReferences.InstallPackages(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
IEnumerable<MSBuildBasedProject> GetCreatedProjects() |
||||||
|
{ |
||||||
|
var createInfo = Owner as ProjectCreateInformation; |
||||||
|
var newCreatedProjects = new NewProjectsCreated(createInfo, projectService); |
||||||
|
return newCreatedProjects.GetProjects(); |
||||||
|
} |
||||||
|
|
||||||
|
IPackageReferencesForProject CreatePackageReferencesForProject(MSBuildBasedProject project) |
||||||
|
{ |
||||||
|
return CreatePackageReferencesForProject(project, packageRepositoryCache); |
||||||
|
} |
||||||
|
|
||||||
|
protected virtual IPackageReferencesForProject |
||||||
|
CreatePackageReferencesForProject(MSBuildBasedProject project, IPackageRepositoryCache packageRepositoryCache) |
||||||
|
{ |
||||||
|
return new PackageReferencesForProject(project, packageRepositoryCache); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,46 @@ |
|||||||
|
// 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.SharpDevelop.Internal.Templates; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class NewProjectsCreated |
||||||
|
{ |
||||||
|
ProjectCreateInformation createInfo; |
||||||
|
OpenMSBuildProjects openProjects; |
||||||
|
|
||||||
|
public NewProjectsCreated( |
||||||
|
ProjectCreateInformation createInfo, |
||||||
|
IPackageManagementProjectService projectService) |
||||||
|
: this(createInfo, new OpenMSBuildProjects(projectService)) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public NewProjectsCreated( |
||||||
|
ProjectCreateInformation createInfo, |
||||||
|
OpenMSBuildProjects openProjects) |
||||||
|
{ |
||||||
|
this.createInfo = createInfo; |
||||||
|
this.openProjects = openProjects; |
||||||
|
} |
||||||
|
|
||||||
|
public IEnumerable<MSBuildBasedProject> GetProjects() |
||||||
|
{ |
||||||
|
foreach (IProject project in createInfo.CreatedProjects) { |
||||||
|
MSBuildBasedProject openProject = FindProject(project.Name); |
||||||
|
if (openProject != null) { |
||||||
|
yield return openProject; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
MSBuildBasedProject FindProject(string name) |
||||||
|
{ |
||||||
|
return openProjects.FindProject(name); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
// 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.SharpDevelop.Project; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class OpenMSBuildProjects |
||||||
|
{ |
||||||
|
IPackageManagementProjectService projectService; |
||||||
|
|
||||||
|
public OpenMSBuildProjects(IPackageManagementProjectService projectService) |
||||||
|
{ |
||||||
|
this.projectService = projectService; |
||||||
|
} |
||||||
|
|
||||||
|
public MSBuildBasedProject FindProject(string name) |
||||||
|
{ |
||||||
|
foreach (IProject project in projectService.GetOpenProjects()) { |
||||||
|
if (IsProjectNameMatch(project.Name, name)) { |
||||||
|
return project as MSBuildBasedProject; |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
bool IsProjectNameMatch(string a, string b) |
||||||
|
{ |
||||||
|
return String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
// 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.Core; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class PackageManagementPropertyService : IPropertyService |
||||||
|
{ |
||||||
|
public string DataDirectory { |
||||||
|
get { return PropertyService.DataDirectory; } |
||||||
|
} |
||||||
|
|
||||||
|
public string ConfigDirectory { |
||||||
|
get { return PropertyService.ConfigDirectory; } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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 System.Collections.Generic; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class PackageReferenceFile : IPackageReferenceFile |
||||||
|
{ |
||||||
|
NuGet.PackageReferenceFile file; |
||||||
|
|
||||||
|
public PackageReferenceFile(string fileName) |
||||||
|
{ |
||||||
|
file = new NuGet.PackageReferenceFile(fileName); |
||||||
|
} |
||||||
|
|
||||||
|
public IEnumerable<NuGet.PackageReference> GetPackageReferences() |
||||||
|
{ |
||||||
|
return file.GetPackageReferences(); |
||||||
|
} |
||||||
|
|
||||||
|
public void DeleteEntry(string id, Version version) |
||||||
|
{ |
||||||
|
file.DeleteEntry(id, version); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
// 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 class PackageReferenceFileFactory : IPackageReferenceFileFactory |
||||||
|
{ |
||||||
|
public IPackageReferenceFile CreatePackageReferenceFile(string fileName) |
||||||
|
{ |
||||||
|
return new PackageReferenceFile(fileName); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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.IO; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class PackageReferenceFileNameForProject |
||||||
|
{ |
||||||
|
public PackageReferenceFileNameForProject(IProject project) |
||||||
|
{ |
||||||
|
GetFileNameForProject(project); |
||||||
|
} |
||||||
|
|
||||||
|
void GetFileNameForProject(IProject project) |
||||||
|
{ |
||||||
|
FileName = Path.Combine(project.Directory, PackageReferenceRepository.PackageReferenceFile); |
||||||
|
} |
||||||
|
|
||||||
|
public string FileName { get; private set; } |
||||||
|
|
||||||
|
public override string ToString() |
||||||
|
{ |
||||||
|
return FileName; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,62 @@ |
|||||||
|
// 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.SharpDevelop.Project; |
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class PackageReferenceInstaller : IPackageReferenceInstaller |
||||||
|
{ |
||||||
|
IPackageActionRunner packageActionRunner; |
||||||
|
IPackageManagementProjectFactory projectFactory; |
||||||
|
IPackageRepositoryCache packageRepositoryCache; |
||||||
|
|
||||||
|
public PackageReferenceInstaller(IPackageRepositoryCache packageRepositoryCache) |
||||||
|
: this( |
||||||
|
packageRepositoryCache, |
||||||
|
PackageManagementServices.PackageActionRunner, |
||||||
|
new PackageManagementProjectFactory(PackageManagementServices.PackageManagementEvents)) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public PackageReferenceInstaller( |
||||||
|
IPackageRepositoryCache packageRepositoryCache, |
||||||
|
IPackageActionRunner packageActionRunner, |
||||||
|
IPackageManagementProjectFactory projectFactory) |
||||||
|
{ |
||||||
|
this.packageRepositoryCache = packageRepositoryCache; |
||||||
|
this.packageActionRunner = packageActionRunner; |
||||||
|
this.projectFactory = projectFactory; |
||||||
|
} |
||||||
|
|
||||||
|
public void InstallPackages( |
||||||
|
IEnumerable<PackageReference> packageReferences, |
||||||
|
MSBuildBasedProject project) |
||||||
|
{ |
||||||
|
IPackageManagementProject packageManagementProject = CreatePackageManagementProject(project); |
||||||
|
foreach (PackageReference packageReference in packageReferences) { |
||||||
|
InstallPackageAction action = CreateInstallPackageAction(packageManagementProject, packageReference); |
||||||
|
packageActionRunner.Run(action); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
IPackageManagementProject CreatePackageManagementProject(MSBuildBasedProject project) |
||||||
|
{ |
||||||
|
IPackageRepository repository = packageRepositoryCache.CreateAggregateRepository(); |
||||||
|
return projectFactory.CreateProject(repository, project); |
||||||
|
} |
||||||
|
|
||||||
|
InstallPackageAction CreateInstallPackageAction( |
||||||
|
IPackageManagementProject project, |
||||||
|
PackageReference packageReference) |
||||||
|
{ |
||||||
|
InstallPackageAction action = project.CreateInstallPackageAction(); |
||||||
|
action.PackageId = packageReference.Id; |
||||||
|
action.PackageVersion = packageReference.Version; |
||||||
|
return action; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,77 @@ |
|||||||
|
// 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.SharpDevelop.Project; |
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class PackageReferencesForProject : IPackageReferencesForProject |
||||||
|
{ |
||||||
|
MSBuildBasedProject project; |
||||||
|
IPackageReferenceFileFactory packageReferenceFileFactory; |
||||||
|
IPackageReferenceInstaller packageReferenceInstaller; |
||||||
|
IPackageReferenceFile packageReferenceFile; |
||||||
|
List<PackageReference> packageReferences; |
||||||
|
|
||||||
|
public PackageReferencesForProject( |
||||||
|
MSBuildBasedProject project, |
||||||
|
IPackageRepositoryCache packageRepositoryCache) |
||||||
|
: this( |
||||||
|
project, |
||||||
|
new PackageReferenceInstaller(packageRepositoryCache), |
||||||
|
new PackageReferenceFileFactory()) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public PackageReferencesForProject( |
||||||
|
MSBuildBasedProject project, |
||||||
|
IPackageReferenceInstaller packageReferenceInstaller, |
||||||
|
IPackageReferenceFileFactory packageReferenceFileFactory) |
||||||
|
{ |
||||||
|
this.project = project; |
||||||
|
this.packageReferenceFileFactory = packageReferenceFileFactory; |
||||||
|
this.packageReferenceInstaller = packageReferenceInstaller; |
||||||
|
} |
||||||
|
|
||||||
|
public void RemovePackageReferences() |
||||||
|
{ |
||||||
|
GetPackageReferences(); |
||||||
|
IPackageReferenceFile file = PackageReferenceFile; |
||||||
|
foreach (PackageReference packageReference in packageReferences) { |
||||||
|
file.DeleteEntry(packageReference.Id, packageReference.Version); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void GetPackageReferences() |
||||||
|
{ |
||||||
|
if (packageReferences == null) { |
||||||
|
IEnumerable<PackageReference> packageReferencesInFile = PackageReferenceFile.GetPackageReferences(); |
||||||
|
packageReferences = new List<PackageReference>(packageReferencesInFile); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
IPackageReferenceFile PackageReferenceFile { |
||||||
|
get { |
||||||
|
if (packageReferenceFile == null) { |
||||||
|
packageReferenceFile = GetPackageReferenceFile(); |
||||||
|
} |
||||||
|
return packageReferenceFile; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
IPackageReferenceFile GetPackageReferenceFile() |
||||||
|
{ |
||||||
|
var fileName = new PackageReferenceFileNameForProject(project); |
||||||
|
return packageReferenceFileFactory.CreatePackageReferenceFile(fileName.ToString()); |
||||||
|
} |
||||||
|
|
||||||
|
public void InstallPackages() |
||||||
|
{ |
||||||
|
GetPackageReferences(); |
||||||
|
packageReferenceInstaller.InstallPackages(packageReferences, project); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,69 @@ |
|||||||
|
// 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 NuGet; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Supports a configurable set of package repositories for project templates that can be
|
||||||
|
/// different to the registered package repositories used with the Add Package Reference dialog.
|
||||||
|
/// </summary>
|
||||||
|
public class ProjectTemplatePackageRepositoryCache : IPackageRepositoryCache |
||||||
|
{ |
||||||
|
IPackageRepositoryCache packageRepositoryCache; |
||||||
|
RegisteredProjectTemplatePackageSources registeredPackageSources; |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a new instance of the ProjectTemplatePackageRepositoryCache.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="packageRepositoryCache">The main package repository cache used
|
||||||
|
/// with the Add Package Reference dialog.</param>
|
||||||
|
public ProjectTemplatePackageRepositoryCache( |
||||||
|
IPackageRepositoryCache packageRepositoryCache, |
||||||
|
RegisteredProjectTemplatePackageSources registeredPackageSources) |
||||||
|
{ |
||||||
|
this.packageRepositoryCache = packageRepositoryCache; |
||||||
|
this.registeredPackageSources = registeredPackageSources; |
||||||
|
} |
||||||
|
|
||||||
|
public IRecentPackageRepository RecentPackageRepository { |
||||||
|
get { throw new NotImplementedException(); } |
||||||
|
} |
||||||
|
|
||||||
|
public IPackageRepository CreateAggregateRepository() |
||||||
|
{ |
||||||
|
IEnumerable<IPackageRepository> repositories = GetRegisteredPackageRepositories(); |
||||||
|
return CreateAggregateRepository(repositories); |
||||||
|
} |
||||||
|
|
||||||
|
IEnumerable<IPackageRepository> GetRegisteredPackageRepositories() |
||||||
|
{ |
||||||
|
foreach (PackageSource packageSource in registeredPackageSources.PackageSources) { |
||||||
|
yield return CreateRepository(packageSource); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem) |
||||||
|
{ |
||||||
|
throw new NotImplementedException(); |
||||||
|
} |
||||||
|
|
||||||
|
public IRecentPackageRepository CreateRecentPackageRepository(IList<RecentPackageInfo> recentPackages, IPackageRepository aggregateRepository) |
||||||
|
{ |
||||||
|
throw new NotImplementedException(); |
||||||
|
} |
||||||
|
|
||||||
|
public IPackageRepository CreateAggregateRepository(IEnumerable<IPackageRepository> repositories) |
||||||
|
{ |
||||||
|
return packageRepositoryCache.CreateAggregateRepository(repositories); |
||||||
|
} |
||||||
|
|
||||||
|
public IPackageRepository CreateRepository(PackageSource packageSource) |
||||||
|
{ |
||||||
|
return packageRepositoryCache.CreateRepository(packageSource); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
// 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.IO; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class ProjectTemplatePackagesSettingsFileName |
||||||
|
{ |
||||||
|
string directory; |
||||||
|
|
||||||
|
public ProjectTemplatePackagesSettingsFileName(IPropertyService propertyService) |
||||||
|
{ |
||||||
|
directory = Path.Combine(propertyService.ConfigDirectory, "templates"); |
||||||
|
} |
||||||
|
|
||||||
|
public string Directory { |
||||||
|
get { return directory; } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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 System.Collections.Generic; |
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class RegisteredProjectTemplatePackageSources |
||||||
|
{ |
||||||
|
RegisteredPackageSourceSettings registeredPackageSourceSettings; |
||||||
|
|
||||||
|
public RegisteredProjectTemplatePackageSources() |
||||||
|
: this(new PackageManagementPropertyService(), new SettingsFactory()) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public RegisteredProjectTemplatePackageSources( |
||||||
|
IPropertyService propertyService, |
||||||
|
ISettingsFactory settingsFactory) |
||||||
|
{ |
||||||
|
GetRegisteredPackageSources(propertyService, settingsFactory); |
||||||
|
} |
||||||
|
|
||||||
|
void GetRegisteredPackageSources(IPropertyService propertyService, ISettingsFactory settingsFactory) |
||||||
|
{ |
||||||
|
ISettings settings = CreateSettings(propertyService, settingsFactory); |
||||||
|
PackageSource defaultPackageSource = CreateDefaultPackageSource(propertyService); |
||||||
|
registeredPackageSourceSettings = new RegisteredPackageSourceSettings(settings, defaultPackageSource); |
||||||
|
} |
||||||
|
|
||||||
|
ISettings CreateSettings(IPropertyService propertyService, ISettingsFactory settingsFactory) |
||||||
|
{ |
||||||
|
var settingsFileName = new ProjectTemplatePackagesSettingsFileName(propertyService); |
||||||
|
return settingsFactory.CreateSettings(settingsFileName.Directory); |
||||||
|
} |
||||||
|
|
||||||
|
PackageSource CreateDefaultPackageSource(IPropertyService propertyService) |
||||||
|
{ |
||||||
|
var defaultPackageSource = new DefaultProjectTemplatePackageSource(propertyService); |
||||||
|
return defaultPackageSource.PackageSource; |
||||||
|
} |
||||||
|
|
||||||
|
public RegisteredPackageSources PackageSources { |
||||||
|
get { return registeredPackageSourceSettings.PackageSources; } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
// 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 SettingsFactory : ISettingsFactory |
||||||
|
{ |
||||||
|
public ISettings CreateSettings(string directory) |
||||||
|
{ |
||||||
|
var fileSystem = new PhysicalFileSystem(directory); |
||||||
|
return new UserSettings(fileSystem); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
// 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 DefaultProjectTemplatePackageSourceTests |
||||||
|
{ |
||||||
|
DefaultProjectTemplatePackageSource defaultPackageSource; |
||||||
|
|
||||||
|
FakePropertyService CreateFakePropertyService() |
||||||
|
{ |
||||||
|
return new FakePropertyService(); |
||||||
|
} |
||||||
|
|
||||||
|
void CreateDefaultPackageSource(FakePropertyService propertyService) |
||||||
|
{ |
||||||
|
defaultPackageSource = new DefaultProjectTemplatePackageSource(propertyService); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void PackageSource_PropertyServiceDefinesDataFolder_ReturnsDataTemplatePackagesFolder() |
||||||
|
{ |
||||||
|
FakePropertyService propertyService = CreateFakePropertyService(); |
||||||
|
propertyService.DataDirectory = @"d:\sharpdevelop\data"; |
||||||
|
CreateDefaultPackageSource(propertyService); |
||||||
|
|
||||||
|
var packageSource = defaultPackageSource.PackageSource; |
||||||
|
|
||||||
|
string sourceDirectory = @"d:\sharpdevelop\data\templates\packages"; |
||||||
|
var expectedPackageSource = new PackageSource(sourceDirectory, "Default"); |
||||||
|
|
||||||
|
Assert.AreEqual(expectedPackageSource, packageSource); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
// 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 PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class ExceptionThrowingPackageReferencesForProject : FakePackageReferencesForProject |
||||||
|
{ |
||||||
|
public Exception ExceptionToThrowOnInstall; |
||||||
|
|
||||||
|
public override void InstallPackages() |
||||||
|
{ |
||||||
|
throw ExceptionToThrowOnInstall; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,76 @@ |
|||||||
|
// 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.Core.Services; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class FakeLoggingService : ILoggingService |
||||||
|
{ |
||||||
|
public bool IsDebugEnabled { get; set; } |
||||||
|
|
||||||
|
public bool IsInfoEnabled { get; set; } |
||||||
|
|
||||||
|
public bool IsWarnEnabled { get; set; } |
||||||
|
|
||||||
|
public bool IsErrorEnabled { get; set; } |
||||||
|
|
||||||
|
public bool IsFatalEnabled { get; set; } |
||||||
|
|
||||||
|
public void Debug(object message) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void DebugFormatted(string format, params object[] args) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void Info(object message) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void InfoFormatted(string format, params object[] args) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void Warn(object message) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void Warn(object message, Exception exception) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void WarnFormatted(string format, params object[] args) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void Error(object message) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public Exception ExceptionLoggedAsError; |
||||||
|
|
||||||
|
public void Error(object message, Exception exception) |
||||||
|
{ |
||||||
|
ExceptionLoggedAsError = exception; |
||||||
|
} |
||||||
|
|
||||||
|
public void ErrorFormatted(string format, params object[] args) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void Fatal(object message) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void Fatal(object message, Exception exception) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void FatalFormatted(string format, params object[] args) |
||||||
|
{ |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,57 @@ |
|||||||
|
// 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.Core.Services; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class FakeMessageService : IMessageService |
||||||
|
{ |
||||||
|
public string ErrorMessageDisplayed; |
||||||
|
|
||||||
|
public void ShowError(string message) |
||||||
|
{ |
||||||
|
ErrorMessageDisplayed = message; |
||||||
|
} |
||||||
|
|
||||||
|
public Exception ExceptionPassedToShowException; |
||||||
|
|
||||||
|
public void ShowException(Exception ex, string message) |
||||||
|
{ |
||||||
|
ExceptionPassedToShowException = ex; |
||||||
|
} |
||||||
|
|
||||||
|
public void ShowWarning(string message) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public bool AskQuestion(string question, string caption) |
||||||
|
{ |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
public int ShowCustomDialog(string caption, string dialogText, int acceptButtonIndex, int cancelButtonIndex, params string[] buttontexts) |
||||||
|
{ |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
public string ShowInputBox(string caption, string dialogText, string defaultValue) |
||||||
|
{ |
||||||
|
return String.Empty; |
||||||
|
} |
||||||
|
|
||||||
|
public void ShowMessage(string message, string caption) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public void InformSaveError(string fileName, string message, string dialogName, Exception exceptionGot) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public ChooseSaveErrorResult ChooseSaveError(string fileName, string message, string dialogName, Exception exceptionGot, bool chooseLocationEnabled) |
||||||
|
{ |
||||||
|
return ChooseSaveErrorResult.Ignore; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
// 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; |
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class FakePackageReferenceFile : IPackageReferenceFile |
||||||
|
{ |
||||||
|
public List<PackageReference> FakePackageReferences = new List<PackageReference>(); |
||||||
|
|
||||||
|
public void AddFakePackageReference(string packageId, string version) |
||||||
|
{ |
||||||
|
var packageReference = new PackageReference(packageId, new Version(version)); |
||||||
|
FakePackageReferences.Add(packageReference); |
||||||
|
} |
||||||
|
|
||||||
|
public IEnumerable<PackageReference> GetPackageReferences() |
||||||
|
{ |
||||||
|
return FakePackageReferences; |
||||||
|
} |
||||||
|
|
||||||
|
public List<PackageReference> EntriesDeleted = new List<PackageReference>(); |
||||||
|
|
||||||
|
public void DeleteEntry(string id, Version version) |
||||||
|
{ |
||||||
|
var packageReference = new PackageReference(id, version); |
||||||
|
EntriesDeleted.Add(packageReference); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Description of FakePackageReferenceFileFactory.
|
||||||
|
/// </summary>
|
||||||
|
public class FakePackageReferenceFileFactory : IPackageReferenceFileFactory |
||||||
|
{ |
||||||
|
public string FileNamePassedToCreatePackageReferenceFile; |
||||||
|
|
||||||
|
public IPackageReferenceFile CreatePackageReferenceFile(string fileName) |
||||||
|
{ |
||||||
|
FileNamePassedToCreatePackageReferenceFile = fileName; |
||||||
|
return FakePackageReferenceFile; |
||||||
|
} |
||||||
|
|
||||||
|
public FakePackageReferenceFile FakePackageReferenceFile = new FakePackageReferenceFile(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
// 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; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class FakePackageReferenceInstaller : IPackageReferenceInstaller |
||||||
|
{ |
||||||
|
public IEnumerable<PackageReference> PackageReferencesPassedToInstallPackages; |
||||||
|
public MSBuildBasedProject ProjectPassedToInstallPackages; |
||||||
|
|
||||||
|
public void InstallPackages(IEnumerable<PackageReference> packageReferences, MSBuildBasedProject project) |
||||||
|
{ |
||||||
|
PackageReferencesPassedToInstallPackages = packageReferences; |
||||||
|
ProjectPassedToInstallPackages = project; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
// 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; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class FakePackageReferencesForProject : IPackageReferencesForProject |
||||||
|
{ |
||||||
|
public bool IsInstallPackagesCalled; |
||||||
|
|
||||||
|
public virtual void InstallPackages() |
||||||
|
{ |
||||||
|
IsInstallPackagesCalled = true; |
||||||
|
} |
||||||
|
|
||||||
|
public bool IsRemovePackageReferencesCalled; |
||||||
|
|
||||||
|
public void RemovePackageReferences() |
||||||
|
{ |
||||||
|
IsRemovePackageReferencesCalled = true; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
// 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; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class FakePropertyService : IPropertyService |
||||||
|
{ |
||||||
|
public FakePropertyService() |
||||||
|
{ |
||||||
|
ConfigDirectory = String.Empty; |
||||||
|
DataDirectory = String.Empty; |
||||||
|
} |
||||||
|
|
||||||
|
public string DataDirectory { get; set; } |
||||||
|
public string ConfigDirectory { get; set; } |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
// 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 ICSharpCode.PackageManagement.Design; |
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class FakeSettingsFactory : ISettingsFactory |
||||||
|
{ |
||||||
|
public FakeSettings FakeSettings = new FakeSettings(); |
||||||
|
public string DirectoryPassedToCreateSettings; |
||||||
|
|
||||||
|
public ISettings CreateSettings(string directory) |
||||||
|
{ |
||||||
|
DirectoryPassedToCreateSettings = directory; |
||||||
|
return FakeSettings; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,58 @@ |
|||||||
|
// 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; |
||||||
|
using ICSharpCode.PackageManagement.Design; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class TestableInstallProjectTemplatePackagesCommand : InstallProjectTemplatePackagesCommand |
||||||
|
{ |
||||||
|
public FakeMessageService FakeMessageService; |
||||||
|
public FakeLoggingService FakeLoggingService; |
||||||
|
public FakePackageRepositoryFactory FakePackageRepositoryCache; |
||||||
|
public FakePackageManagementProjectService FakeProjectService; |
||||||
|
|
||||||
|
public TestableInstallProjectTemplatePackagesCommand() |
||||||
|
: this( |
||||||
|
new FakePackageRepositoryFactory(), |
||||||
|
new FakePackageManagementProjectService(), |
||||||
|
new FakeMessageService(), |
||||||
|
new FakeLoggingService()) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public TestableInstallProjectTemplatePackagesCommand( |
||||||
|
FakePackageRepositoryFactory fakePackageRepositoryCache, |
||||||
|
FakePackageManagementProjectService projectService, |
||||||
|
FakeMessageService messageService, |
||||||
|
FakeLoggingService loggingService) |
||||||
|
: base(fakePackageRepositoryCache, projectService, messageService, loggingService) |
||||||
|
{ |
||||||
|
this.FakePackageRepositoryCache = fakePackageRepositoryCache; |
||||||
|
this.FakeProjectService = projectService; |
||||||
|
this.FakeMessageService = messageService; |
||||||
|
this.FakeLoggingService = loggingService; |
||||||
|
} |
||||||
|
|
||||||
|
public MSBuildBasedProject ProjectPassedToCreatePackageReferencesForProject; |
||||||
|
public List<MSBuildBasedProject> ProjectsPassedToCreatePackageReferencesForProject = |
||||||
|
new List<MSBuildBasedProject>(); |
||||||
|
|
||||||
|
public IPackageRepositoryCache PackageRepositoryCachePassedToCreatePackageReferencesForProject; |
||||||
|
public FakePackageReferencesForProject FakePackageReferencesForProject = new FakePackageReferencesForProject(); |
||||||
|
|
||||||
|
protected override IPackageReferencesForProject CreatePackageReferencesForProject( |
||||||
|
MSBuildBasedProject project, |
||||||
|
IPackageRepositoryCache packageRepositoryCache) |
||||||
|
{ |
||||||
|
ProjectPassedToCreatePackageReferencesForProject = project; |
||||||
|
ProjectsPassedToCreatePackageReferencesForProject.Add(project); |
||||||
|
PackageRepositoryCachePassedToCreatePackageReferencesForProject = packageRepositoryCache; |
||||||
|
return FakePackageReferencesForProject; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,167 @@ |
|||||||
|
// 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; |
||||||
|
using ICSharpCode.SharpDevelop.Internal.Templates; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using NUnit.Framework; |
||||||
|
using PackageManagement.Tests.Helpers; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class InstallProjectTemplatePackagesCommandTests |
||||||
|
{ |
||||||
|
TestableInstallProjectTemplatePackagesCommand command; |
||||||
|
|
||||||
|
void CreateCommand() |
||||||
|
{ |
||||||
|
command = new TestableInstallProjectTemplatePackagesCommand(); |
||||||
|
} |
||||||
|
|
||||||
|
TestableProject CreateFakeProject(string name) |
||||||
|
{ |
||||||
|
return ProjectHelper.CreateTestProject(name); |
||||||
|
} |
||||||
|
|
||||||
|
void RunCommandWithProjectCreateInfoAsOwner(TestableProject project) |
||||||
|
{ |
||||||
|
var projects = new List<TestableProject>(); |
||||||
|
projects.Add(project); |
||||||
|
RunCommandWithProjectCreateInfoAsOwner(projects); |
||||||
|
} |
||||||
|
|
||||||
|
void RunCommandWithProjectCreateInfoAsOwner(List<TestableProject> projects) |
||||||
|
{ |
||||||
|
var createInfo = new ProjectCreateInformation(projects); |
||||||
|
createInfo.Solution = projects[0].ParentSolution; |
||||||
|
|
||||||
|
command.FakeProjectService.FakeOpenProjects.AddRange(projects); |
||||||
|
|
||||||
|
RunCommandWithProjectCreateInfoAsOwner(createInfo); |
||||||
|
} |
||||||
|
|
||||||
|
void RunCommandWithProjectCreateInfoAsOwner(ProjectCreateInformation createInfo) |
||||||
|
{ |
||||||
|
command.Owner = createInfo; |
||||||
|
command.Run(); |
||||||
|
} |
||||||
|
|
||||||
|
void RunCommandWithExceptionThrowingPackageReferences(Exception exception) |
||||||
|
{ |
||||||
|
var exceptionThrowingPackageReferences = new ExceptionThrowingPackageReferencesForProject(); |
||||||
|
exceptionThrowingPackageReferences.ExceptionToThrowOnInstall = exception; |
||||||
|
command.FakePackageReferencesForProject = exceptionThrowingPackageReferences; |
||||||
|
TestableProject project = CreateFakeProject("Test"); |
||||||
|
RunCommandWithProjectCreateInfoAsOwner(project); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Run_OneProjectCreatedByNewProjectDialog_ProjectUsedToCreatePackageReferences() |
||||||
|
{ |
||||||
|
CreateCommand(); |
||||||
|
TestableProject expectedProject = CreateFakeProject("Test"); |
||||||
|
RunCommandWithProjectCreateInfoAsOwner(expectedProject); |
||||||
|
|
||||||
|
MSBuildBasedProject project = command.ProjectPassedToCreatePackageReferencesForProject; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedProject, project); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Run_OneProjectCreatedByNewProjectDialog_ProjectUsedToCreatePackageReferencesIsTakenFromOpenProjectsNotCreateInfo() |
||||||
|
{ |
||||||
|
CreateCommand(); |
||||||
|
TestableProject createInfoProject = CreateFakeProject("Test"); |
||||||
|
var projects = new List<IProject>(); |
||||||
|
projects.Add(createInfoProject); |
||||||
|
var createInfo = new ProjectCreateInformation(projects); |
||||||
|
|
||||||
|
TestableProject expectedProject = ProjectHelper.CreateTestProject("TEST"); |
||||||
|
command.FakeProjectService.FakeOpenProjects.Add(expectedProject); |
||||||
|
|
||||||
|
RunCommandWithProjectCreateInfoAsOwner(createInfo); |
||||||
|
|
||||||
|
MSBuildBasedProject project = command.ProjectPassedToCreatePackageReferencesForProject; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedProject, project); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Run_TwoProjectsCreatedByNewProjectDialog_TwoProjectsUsedToCreatePackageReferences() |
||||||
|
{ |
||||||
|
CreateCommand(); |
||||||
|
var expectedProjects = new List<TestableProject>(); |
||||||
|
expectedProjects.Add(CreateFakeProject("Test1")); |
||||||
|
expectedProjects.Add(CreateFakeProject("Test2")); |
||||||
|
RunCommandWithProjectCreateInfoAsOwner(expectedProjects); |
||||||
|
|
||||||
|
List<MSBuildBasedProject> projects = command.ProjectsPassedToCreatePackageReferencesForProject; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedProjects, projects); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Run_OneProjectCreatedByNewProjectDialog_PackageRepositoryCacheUsedToCreatePackageReferences() |
||||||
|
{ |
||||||
|
CreateCommand(); |
||||||
|
TestableProject project = CreateFakeProject("Test"); |
||||||
|
RunCommandWithProjectCreateInfoAsOwner(project); |
||||||
|
|
||||||
|
IPackageRepositoryCache cache = command.PackageRepositoryCachePassedToCreatePackageReferencesForProject; |
||||||
|
IPackageRepositoryCache expectedCache = command.FakePackageRepositoryCache; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedCache, cache); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Run_OneProjectCreatedByNewProjectDialog_PackagesAreInstalled() |
||||||
|
{ |
||||||
|
CreateCommand(); |
||||||
|
TestableProject project = CreateFakeProject("Test"); |
||||||
|
RunCommandWithProjectCreateInfoAsOwner(project); |
||||||
|
|
||||||
|
bool installed = command.FakePackageReferencesForProject.IsInstallPackagesCalled; |
||||||
|
|
||||||
|
Assert.IsTrue(installed); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Run_ExceptionThrownWhenInstallingPackages_ErrorMessageIsDisplayedToUser() |
||||||
|
{ |
||||||
|
CreateCommand(); |
||||||
|
var exception = new Exception("Test"); |
||||||
|
RunCommandWithExceptionThrowingPackageReferences(exception); |
||||||
|
|
||||||
|
string errorMessageDisplayed = command.FakeMessageService.ErrorMessageDisplayed; |
||||||
|
|
||||||
|
Assert.AreEqual("Test", errorMessageDisplayed); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Run_ExceptionThrownWhenInstallingPackages_ExceptionIsLogged() |
||||||
|
{ |
||||||
|
CreateCommand(); |
||||||
|
var expectedException = new Exception("Test"); |
||||||
|
RunCommandWithExceptionThrowingPackageReferences(expectedException); |
||||||
|
|
||||||
|
Exception exceptionLogged = command.FakeLoggingService.ExceptionLoggedAsError; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedException, exceptionLogged); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Run_OneProjectCreatedByNewProjectDialog_ProjectReferencesAreRemoved() |
||||||
|
{ |
||||||
|
CreateCommand(); |
||||||
|
TestableProject project = CreateFakeProject("Test"); |
||||||
|
RunCommandWithProjectCreateInfoAsOwner(project); |
||||||
|
|
||||||
|
bool removed = command.FakePackageReferencesForProject.IsRemovePackageReferencesCalled; |
||||||
|
|
||||||
|
Assert.IsTrue(removed); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,101 @@ |
|||||||
|
// 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; |
||||||
|
using ICSharpCode.PackageManagement.Design; |
||||||
|
using ICSharpCode.SharpDevelop.Internal.Templates; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using NUnit.Framework; |
||||||
|
using PackageManagement.Tests.Helpers; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class NewProjectsCreatedTests |
||||||
|
{ |
||||||
|
FakePackageManagementProjectService fakeProjectService; |
||||||
|
NewProjectsCreated newProjectsCreated; |
||||||
|
|
||||||
|
TestableProject CreateProject(string name) |
||||||
|
{ |
||||||
|
return ProjectHelper.CreateTestProject(name); |
||||||
|
} |
||||||
|
|
||||||
|
ProjectCreateInformation CreateProjectCreateInfo(MSBuildBasedProject project) |
||||||
|
{ |
||||||
|
var projects = new List<MSBuildBasedProject>(); |
||||||
|
projects.Add(project); |
||||||
|
return CreateProjectCreateInfo(projects); |
||||||
|
} |
||||||
|
|
||||||
|
ProjectCreateInformation CreateProjectCreateInfo(IEnumerable<MSBuildBasedProject> projects) |
||||||
|
{ |
||||||
|
return new ProjectCreateInformation(projects); |
||||||
|
} |
||||||
|
|
||||||
|
void CreateNewProjectsCreated(ProjectCreateInformation createInfo) |
||||||
|
{ |
||||||
|
fakeProjectService = new FakePackageManagementProjectService(); |
||||||
|
newProjectsCreated = new NewProjectsCreated(createInfo, fakeProjectService); |
||||||
|
} |
||||||
|
|
||||||
|
TestableProject AddProjectToProjectServiceOpenProjects(string projectName) |
||||||
|
{ |
||||||
|
TestableProject project = CreateProject(projectName); |
||||||
|
fakeProjectService.FakeOpenProjects.Add(project); |
||||||
|
return project; |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void GetProjects_OneProjectCreatedAndOneOldProjectInSolution_ReturnsProjectFromProjectService() |
||||||
|
{ |
||||||
|
TestableProject project = CreateProject("TestProject"); |
||||||
|
ProjectCreateInformation createInfo = CreateProjectCreateInfo(project); |
||||||
|
CreateNewProjectsCreated(createInfo); |
||||||
|
AddProjectToProjectServiceOpenProjects("OriginalProject"); |
||||||
|
TestableProject expectedProject = AddProjectToProjectServiceOpenProjects("TestProject"); |
||||||
|
|
||||||
|
var projects = new List<MSBuildBasedProject>(); |
||||||
|
projects.AddRange(newProjectsCreated.GetProjects()); |
||||||
|
|
||||||
|
var expectedProjects = new MSBuildBasedProject[] { |
||||||
|
expectedProject |
||||||
|
}; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedProjects, projects); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void GetProjects_OneProjectCreatedWithDifferentNameCase_ReturnsProjectFromProjectService() |
||||||
|
{ |
||||||
|
TestableProject project = CreateProject("TESTPROJECT"); |
||||||
|
ProjectCreateInformation createInfo = CreateProjectCreateInfo(project); |
||||||
|
CreateNewProjectsCreated(createInfo); |
||||||
|
TestableProject expectedProject = AddProjectToProjectServiceOpenProjects("TestProject"); |
||||||
|
|
||||||
|
var projects = new List<MSBuildBasedProject>(); |
||||||
|
projects.AddRange(newProjectsCreated.GetProjects()); |
||||||
|
|
||||||
|
var expectedProjects = new MSBuildBasedProject[] { |
||||||
|
expectedProject |
||||||
|
}; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedProjects, projects); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void GetProjects_OneProjectCreatedButProjectIsNotOpen_ReturnsNoProjects() |
||||||
|
{ |
||||||
|
TestableProject project = CreateProject("TestProject"); |
||||||
|
ProjectCreateInformation createInfo = CreateProjectCreateInfo(project); |
||||||
|
CreateNewProjectsCreated(createInfo); |
||||||
|
|
||||||
|
var projects = new List<MSBuildBasedProject>(); |
||||||
|
projects.AddRange(newProjectsCreated.GetProjects()); |
||||||
|
|
||||||
|
Assert.AreEqual(0, projects.Count); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,86 @@ |
|||||||
|
// 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; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using NuGet; |
||||||
|
using NUnit.Framework; |
||||||
|
using PackageManagement.Tests.Helpers; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class PackageReferenceInstallerTests |
||||||
|
{ |
||||||
|
PackageReferenceInstaller installer; |
||||||
|
FakePackageActionRunner fakeActionRunner; |
||||||
|
FakePackageManagementProjectFactory fakeProjectFactory; |
||||||
|
TestableProject project; |
||||||
|
List<PackageReference> packageReferences; |
||||||
|
FakePackageRepositoryFactory fakeRepositoryCache; |
||||||
|
|
||||||
|
void CreateInstaller() |
||||||
|
{ |
||||||
|
project = ProjectHelper.CreateTestProject(); |
||||||
|
packageReferences = new List<PackageReference>(); |
||||||
|
fakeActionRunner = new FakePackageActionRunner(); |
||||||
|
fakeProjectFactory = new FakePackageManagementProjectFactory(); |
||||||
|
fakeRepositoryCache = new FakePackageRepositoryFactory(); |
||||||
|
installer = new PackageReferenceInstaller(fakeRepositoryCache, fakeActionRunner, fakeProjectFactory); |
||||||
|
} |
||||||
|
|
||||||
|
void InstallPackages() |
||||||
|
{ |
||||||
|
installer.InstallPackages(packageReferences, project); |
||||||
|
} |
||||||
|
|
||||||
|
void AddPackageReference(string packageId, string version) |
||||||
|
{ |
||||||
|
var packageReference = new PackageReference(packageId, new Version(version)); |
||||||
|
packageReferences.Add(packageReference); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void InstallPackages_OnePackageReference_OnePackageIsInstalled() |
||||||
|
{ |
||||||
|
CreateInstaller(); |
||||||
|
AddPackageReference("PackageId", "1.3.4.5"); |
||||||
|
InstallPackages(); |
||||||
|
|
||||||
|
var action = fakeActionRunner.ActionPassedToRun as InstallPackageAction; |
||||||
|
|
||||||
|
var expectedVersion = new Version("1.3.4.5"); |
||||||
|
|
||||||
|
Assert.AreEqual("PackageId", action.PackageId); |
||||||
|
Assert.AreEqual(expectedVersion, action.PackageVersion); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void InstallPackages_OnePackageReference_PackageManagementProjectIsCreatedForMSBuildProject() |
||||||
|
{ |
||||||
|
CreateInstaller(); |
||||||
|
AddPackageReference("PackageId", "1.3.4.5"); |
||||||
|
InstallPackages(); |
||||||
|
|
||||||
|
MSBuildBasedProject projectUsedToCreatePackageManagementProject |
||||||
|
= fakeProjectFactory.ProjectPassedToCreateProject; |
||||||
|
|
||||||
|
Assert.AreEqual(project, projectUsedToCreatePackageManagementProject); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void InstallPackages_OnePackageReference_AggregateRepositoryFromCacheUsedToCreatePackageManagementProject() |
||||||
|
{ |
||||||
|
CreateInstaller(); |
||||||
|
AddPackageReference("PackageId", "1.3.4.5"); |
||||||
|
InstallPackages(); |
||||||
|
|
||||||
|
IPackageRepository repository = fakeProjectFactory.RepositoryPassedToCreateProject; |
||||||
|
IPackageRepository expectedRepository = fakeRepositoryCache.FakeAggregateRepository; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedRepository, repository); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,137 @@ |
|||||||
|
// 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; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using NuGet; |
||||||
|
using NUnit.Framework; |
||||||
|
using PackageManagement.Tests.Helpers; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class PackageReferencesForProjectTests |
||||||
|
{ |
||||||
|
PackageReferencesForProject packageReferencesForProject; |
||||||
|
FakePackageReferenceFileFactory fakePackageReferenceFileFactory; |
||||||
|
FakePackageReferenceFile fakePackageReferenceFile; |
||||||
|
FakePackageReferenceInstaller fakePackageReferenceInstaller; |
||||||
|
|
||||||
|
TestableProject CreateProject() |
||||||
|
{ |
||||||
|
return ProjectHelper.CreateTestProject(); |
||||||
|
} |
||||||
|
|
||||||
|
void CreatePackageReferencesForProject(MSBuildBasedProject project) |
||||||
|
{ |
||||||
|
fakePackageReferenceFileFactory = new FakePackageReferenceFileFactory(); |
||||||
|
fakePackageReferenceFile = fakePackageReferenceFileFactory.FakePackageReferenceFile; |
||||||
|
fakePackageReferenceInstaller = new FakePackageReferenceInstaller(); |
||||||
|
packageReferencesForProject = |
||||||
|
new PackageReferencesForProject( |
||||||
|
project, |
||||||
|
fakePackageReferenceInstaller, |
||||||
|
fakePackageReferenceFileFactory); |
||||||
|
} |
||||||
|
|
||||||
|
void AddPackageReference(string packageId, string version) |
||||||
|
{ |
||||||
|
fakePackageReferenceFile.AddFakePackageReference(packageId, version); |
||||||
|
} |
||||||
|
|
||||||
|
void PackageReferenceCollectionAssertAreEqual(IEnumerable<PackageReference> expected, IEnumerable<PackageReference> actual) |
||||||
|
{ |
||||||
|
IEnumerable<string> expectedAsStrings = ConvertToStrings(expected); |
||||||
|
IEnumerable<string> actualAsStrings = ConvertToStrings(actual); |
||||||
|
|
||||||
|
CollectionAssert.AreEqual(expectedAsStrings, actualAsStrings); |
||||||
|
} |
||||||
|
|
||||||
|
List<string> ConvertToStrings(IEnumerable<PackageReference> packageReferences) |
||||||
|
{ |
||||||
|
var converted = new List<string>(); |
||||||
|
foreach (PackageReference packageReference in packageReferences) { |
||||||
|
string convertedPackageReference = ConvertToString(packageReference); |
||||||
|
converted.Add(convertedPackageReference); |
||||||
|
} |
||||||
|
return converted; |
||||||
|
} |
||||||
|
|
||||||
|
string ConvertToString(PackageReference packageReference) |
||||||
|
{ |
||||||
|
return String.Format( |
||||||
|
"Id: {0}, Version: {1}", |
||||||
|
packageReference.Id, |
||||||
|
packageReference.Version); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void InstallPackages_OnePackageReferenceInPackageConfigFile_OpensPackageConfigFileInProjectDirectory() |
||||||
|
{ |
||||||
|
TestableProject project = CreateProject(); |
||||||
|
project.FileName = @"d:\projects\myproject\myproject.csproj"; |
||||||
|
CreatePackageReferencesForProject(project); |
||||||
|
AddPackageReference("PackageId", "1.0.3.2"); |
||||||
|
|
||||||
|
packageReferencesForProject.InstallPackages(); |
||||||
|
|
||||||
|
string fileName = fakePackageReferenceFileFactory.FileNamePassedToCreatePackageReferenceFile; |
||||||
|
string expectedFileName = @"d:\projects\myproject\packages.config"; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedFileName, fileName); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void InstallPackages_OnePackageReferenceInPackageConfigFile_OnePackageInstalled() |
||||||
|
{ |
||||||
|
TestableProject project = CreateProject(); |
||||||
|
CreatePackageReferencesForProject(project); |
||||||
|
AddPackageReference("PackageId", "1.0.3.2"); |
||||||
|
|
||||||
|
packageReferencesForProject.InstallPackages(); |
||||||
|
|
||||||
|
IEnumerable<PackageReference> packageReferencesInstalled = |
||||||
|
fakePackageReferenceInstaller.PackageReferencesPassedToInstallPackages; |
||||||
|
|
||||||
|
List<PackageReference> expectedPackageReferences = |
||||||
|
fakePackageReferenceFile.FakePackageReferences; |
||||||
|
|
||||||
|
CollectionAssert.AreEqual(expectedPackageReferences, packageReferencesInstalled); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void InstallPackages_OnePackageReferenceInPackageConfigFile_ProjectPassedToInstaller() |
||||||
|
{ |
||||||
|
TestableProject expectedProject = CreateProject(); |
||||||
|
CreatePackageReferencesForProject(expectedProject); |
||||||
|
AddPackageReference("PackageId", "1.0.3.2"); |
||||||
|
|
||||||
|
packageReferencesForProject.InstallPackages(); |
||||||
|
|
||||||
|
MSBuildBasedProject project = fakePackageReferenceInstaller.ProjectPassedToInstallPackages; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedProject, project); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void RemovePackageReferences_TwoPackageReferencesInPackageConfigFile_RemovesPackageReferenceFromFile() |
||||||
|
{ |
||||||
|
TestableProject project = CreateProject(); |
||||||
|
CreatePackageReferencesForProject(project); |
||||||
|
AddPackageReference("One", "1.0.3.2"); |
||||||
|
AddPackageReference("Two", "2.0.44"); |
||||||
|
|
||||||
|
packageReferencesForProject.RemovePackageReferences(); |
||||||
|
|
||||||
|
List<PackageReference> packageReferencesRemoved = fakePackageReferenceFile.EntriesDeleted; |
||||||
|
|
||||||
|
var expectedPackageReferences = new List<PackageReference>(); |
||||||
|
expectedPackageReferences.Add(new PackageReference("One", new Version("1.0.3.2"))); |
||||||
|
expectedPackageReferences.Add(new PackageReference("Two", new Version("2.0.44"))); |
||||||
|
|
||||||
|
PackageReferenceCollectionAssertAreEqual(expectedPackageReferences, packageReferencesRemoved); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,87 @@ |
|||||||
|
// 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; |
||||||
|
using ICSharpCode.PackageManagement.Design; |
||||||
|
using NuGet; |
||||||
|
using NUnit.Framework; |
||||||
|
using PackageManagement.Tests.Helpers; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class ProjectTemplatePackageRepositoryCacheTests |
||||||
|
{ |
||||||
|
ProjectTemplatePackageRepositoryCache cache; |
||||||
|
FakePackageRepositoryFactory fakeMainCache; |
||||||
|
RegisteredProjectTemplatePackageSources registeredPackageSources; |
||||||
|
FakeSettingsFactory fakeSettingsFactory; |
||||||
|
|
||||||
|
void CreateCache() |
||||||
|
{ |
||||||
|
fakeMainCache = new FakePackageRepositoryFactory(); |
||||||
|
var propertyService = new FakePropertyService(); |
||||||
|
fakeSettingsFactory = new FakeSettingsFactory(); |
||||||
|
registeredPackageSources = new RegisteredProjectTemplatePackageSources(propertyService, fakeSettingsFactory); |
||||||
|
cache = new ProjectTemplatePackageRepositoryCache(fakeMainCache, registeredPackageSources); |
||||||
|
} |
||||||
|
|
||||||
|
void ClearRegisteredPackageSources() |
||||||
|
{ |
||||||
|
registeredPackageSources.PackageSources.Clear(); |
||||||
|
} |
||||||
|
|
||||||
|
void AddRegisteredPackageSource(PackageSource packageSource) |
||||||
|
{ |
||||||
|
registeredPackageSources.PackageSources.Add(packageSource); |
||||||
|
} |
||||||
|
|
||||||
|
void AddRegisteredPackageSource(string url, string name) |
||||||
|
{ |
||||||
|
var packageSource = new PackageSource(url, name); |
||||||
|
AddRegisteredPackageSource(packageSource); |
||||||
|
} |
||||||
|
|
||||||
|
FakePackageRepository AddRegisteredPackageRepository(string packageSourceUrl, string packageSourceName) |
||||||
|
{ |
||||||
|
var packageSource = new PackageSource(packageSourceUrl, packageSourceName); |
||||||
|
AddRegisteredPackageSource(packageSource); |
||||||
|
FakePackageRepository fakeRepository = new FakePackageRepository(); |
||||||
|
fakeMainCache.FakePackageRepositories.Add(packageSource, fakeRepository); |
||||||
|
return fakeRepository; |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void CreateAggregateRepository_OneRegisteredPackageSource_CreatesAggregrateRepositoryUsingMainCache() |
||||||
|
{ |
||||||
|
CreateCache(); |
||||||
|
ClearRegisteredPackageSources(); |
||||||
|
AddRegisteredPackageSource("http://sharpdevelop.com", "Test"); |
||||||
|
|
||||||
|
IPackageRepository repository = cache.CreateAggregateRepository(); |
||||||
|
|
||||||
|
IPackageRepository expectedRepository = fakeMainCache.FakeAggregateRepository; |
||||||
|
Assert.AreEqual(expectedRepository, repository); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void CreateAggregateRepository_TwoRegisteredPackageSources_CreatesRepositoriesForRegisteredPackageSources() |
||||||
|
{ |
||||||
|
CreateCache(); |
||||||
|
ClearRegisteredPackageSources(); |
||||||
|
FakePackageRepository fakeRepository1 = AddRegisteredPackageRepository("http://sharpdevelop.com", "Test"); |
||||||
|
FakePackageRepository fakeRepository2 = AddRegisteredPackageRepository("http://test", "Test2"); |
||||||
|
|
||||||
|
IPackageRepository repository = cache.CreateAggregateRepository(); |
||||||
|
|
||||||
|
IEnumerable<IPackageRepository> repositories = fakeMainCache.RepositoriesPassedToCreateAggregateRepository; |
||||||
|
var expectedRepositories = new List<IPackageRepository>(); |
||||||
|
expectedRepositories.Add(fakeRepository1); |
||||||
|
expectedRepositories.Add(fakeRepository2); |
||||||
|
|
||||||
|
Assert.AreEqual(expectedRepositories, repositories); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,88 @@ |
|||||||
|
// 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; |
||||||
|
using ICSharpCode.PackageManagement.Design; |
||||||
|
using NuGet; |
||||||
|
using NUnit.Framework; |
||||||
|
using PackageManagement.Tests.Helpers; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class RegisteredProjectTemplatePackageSourcesTests |
||||||
|
{ |
||||||
|
RegisteredProjectTemplatePackageSources registeredPackageSources; |
||||||
|
FakeSettingsFactory fakeSettingsFactory; |
||||||
|
|
||||||
|
FakePropertyService CreatePropertyService() |
||||||
|
{ |
||||||
|
return new FakePropertyService(); |
||||||
|
} |
||||||
|
|
||||||
|
void CreateRegisteredPackageSources(List<PackageSource> packageSources, FakePropertyService propertyService) |
||||||
|
{ |
||||||
|
fakeSettingsFactory = new FakeSettingsFactory(); |
||||||
|
fakeSettingsFactory.FakeSettings.AddFakePackageSources(packageSources); |
||||||
|
registeredPackageSources = |
||||||
|
new RegisteredProjectTemplatePackageSources( |
||||||
|
propertyService, |
||||||
|
fakeSettingsFactory); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void PackageSources_NoPredefinedPackageSources_DefaultPackageSourceCreated() |
||||||
|
{ |
||||||
|
FakePropertyService propertyService = CreatePropertyService(); |
||||||
|
propertyService.DataDirectory = @"d:\sharpdevelop\data"; |
||||||
|
|
||||||
|
var packageSources = new List<PackageSource>(); |
||||||
|
CreateRegisteredPackageSources(packageSources, propertyService); |
||||||
|
|
||||||
|
RegisteredPackageSources actualPackageSources = |
||||||
|
registeredPackageSources.PackageSources; |
||||||
|
|
||||||
|
var expectedPackageSources = new PackageSource[] { |
||||||
|
new PackageSource(@"d:\sharpdevelop\data\templates\packages", "Default") |
||||||
|
}; |
||||||
|
|
||||||
|
PackageSourceCollectionAssert.AreEqual(expectedPackageSources, actualPackageSources); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void PackageSources_OnePredefinedPackageSource_RegisteredPackageSourceIsPredefinedPackageSource() |
||||||
|
{ |
||||||
|
FakePropertyService propertyService = CreatePropertyService(); |
||||||
|
propertyService.DataDirectory = @"d:\sharpdevelop\data"; |
||||||
|
var expectedPackageSources = new List<PackageSource>(); |
||||||
|
expectedPackageSources.Add(new PackageSource("http://sharpdevelop", "Test")); |
||||||
|
CreateRegisteredPackageSources(expectedPackageSources, propertyService); |
||||||
|
|
||||||
|
RegisteredPackageSources actualPackageSources = |
||||||
|
registeredPackageSources.PackageSources; |
||||||
|
|
||||||
|
PackageSourceCollectionAssert.AreEqual(expectedPackageSources, actualPackageSources); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void PackageSources_NoPredefinedPackageSources_PackageSourceConfigLookedForInUserFolder() |
||||||
|
{ |
||||||
|
FakePropertyService propertyService = CreatePropertyService(); |
||||||
|
propertyService.DataDirectory = @"d:\sharpdevelop\data"; |
||||||
|
propertyService.ConfigDirectory = @"c:\Users\test\AppData\ICSharpCode\SharpDevelop4.1"; |
||||||
|
|
||||||
|
var packageSources = new List<PackageSource>(); |
||||||
|
CreateRegisteredPackageSources(packageSources, propertyService); |
||||||
|
|
||||||
|
IEnumerable<PackageSource> actualPackageSources = |
||||||
|
registeredPackageSources.PackageSources; |
||||||
|
|
||||||
|
string directory = fakeSettingsFactory.DirectoryPassedToCreateSettings; |
||||||
|
string expectedDirectory = @"c:\Users\test\AppData\ICSharpCode\SharpDevelop4.1\templates"; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedDirectory, directory); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue