55 changed files with 1894 additions and 30 deletions
Binary file not shown.
Binary file not shown.
@ -0,0 +1,34 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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