38 changed files with 1698 additions and 89 deletions
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
// 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.Reflection; |
||||
|
||||
// Information about this assembly is defined by the following
|
||||
// attributes.
|
||||
//
|
||||
// change them to the information which is associated with the assembly
|
||||
// you compile.
|
||||
|
||||
[assembly: AssemblyTitle("PackageManagement.Cmdlets")] |
||||
[assembly: AssemblyDescription("Package Management PowerShell Cmdlets for SharpDevelop")] |
||||
[assembly: AssemblyConfiguration("")] |
||||
[assembly: AssemblyTrademark("")] |
||||
[assembly: AssemblyCulture("")] |
@ -0,0 +1,69 @@
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> |
||||
<PropertyGroup> |
||||
<ProjectGuid>{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}</ProjectGuid> |
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform> |
||||
<OutputType>Library</OutputType> |
||||
<RootNamespace>PackageManagement.Cmdlets</RootNamespace> |
||||
<AssemblyName>PackageManagement.Cmdlets</AssemblyName> |
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |
||||
<OutputPath>..\..\..\..\..\..\AddIns\Misc\PackageManagement\</OutputPath> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Platform)' == 'x86' "> |
||||
<PlatformTarget>x86</PlatformTarget> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> |
||||
<DebugSymbols>True</DebugSymbols> |
||||
<DebugType>Full</DebugType> |
||||
<Optimize>False</Optimize> |
||||
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> |
||||
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> |
||||
<DebugSymbols>False</DebugSymbols> |
||||
<DebugType>None</DebugType> |
||||
<Optimize>True</Optimize> |
||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> |
||||
<DefineConstants>TRACE</DefineConstants> |
||||
</PropertyGroup> |
||||
<ItemGroup> |
||||
<Reference Include="NuGet.Core"> |
||||
<HintPath>..\..\RequiredLibraries\NuGet.Core.dll</HintPath> |
||||
</Reference> |
||||
<Reference Include="System" /> |
||||
<Reference Include="System.Core"> |
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
||||
</Reference> |
||||
<Reference Include="System.Management.Automation" /> |
||||
<Reference Include="System.Xml" /> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<Compile Include="..\..\..\..\..\Main\GlobalAssemblyInfo.cs"> |
||||
<Link>Configuration\GlobalAssemblyInfo.cs</Link> |
||||
</Compile> |
||||
<Compile Include="Configuration\AssemblyInfo.cs" /> |
||||
<Compile Include="Src\GetPackageCmdlet.cs" /> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ProjectReference Include="..\..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj"> |
||||
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project> |
||||
<Name>ICSharpCode.SharpDevelop</Name> |
||||
<Private>False</Private> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj"> |
||||
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project> |
||||
<Name>ICSharpCode.Core</Name> |
||||
<Private>False</Private> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\Project\PackageManagement.csproj"> |
||||
<Project>{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}</Project> |
||||
<Name>PackageManagement</Name> |
||||
<Private>False</Private> |
||||
</ProjectReference> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<Folder Include="Src" /> |
||||
</ItemGroup> |
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> |
||||
</Project> |
@ -0,0 +1,208 @@
@@ -0,0 +1,208 @@
|
||||
// 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 System.Linq; |
||||
using System.Management.Automation; |
||||
|
||||
using ICSharpCode.PackageManagement; |
||||
using ICSharpCode.PackageManagement.Scripting; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NuGet; |
||||
|
||||
namespace PackageManagement.Cmdlets |
||||
{ |
||||
[Cmdlet(VerbsCommon.Get, "Package", DefaultParameterSetName=ParameterAttribute.AllParameterSets)] |
||||
public class GetPackageCmdlet : PSCmdlet |
||||
{ |
||||
IPackageManagementService packageManagementService; |
||||
IPackageManagementConsoleHost consoleHost; |
||||
IErrorRecordFactory errorRecordFactory; |
||||
int? skip; |
||||
int? take; |
||||
|
||||
public GetPackageCmdlet() |
||||
: this( |
||||
ServiceLocator.PackageManagementService, |
||||
ServiceLocator.PackageManagementConsoleHost, |
||||
new ErrorRecordFactory()) |
||||
{ |
||||
} |
||||
|
||||
public GetPackageCmdlet( |
||||
IPackageManagementService packageManagementService, |
||||
IPackageManagementConsoleHost consoleHost, |
||||
IErrorRecordFactory errorRecordFactory) |
||||
{ |
||||
this.packageManagementService = packageManagementService; |
||||
this.consoleHost = consoleHost; |
||||
this.errorRecordFactory = errorRecordFactory; |
||||
} |
||||
|
||||
[Alias("Online", "Remote")] |
||||
[Parameter(ParameterSetName = "Available")] |
||||
public SwitchParameter ListAvailable { get; set; } |
||||
|
||||
[Parameter(ParameterSetName = "Updated")] |
||||
public SwitchParameter Updates { get; set; } |
||||
|
||||
[Parameter(Position = 0)] |
||||
public string Filter { get; set; } |
||||
|
||||
[Parameter(ParameterSetName = "Available")] |
||||
[Parameter(ParameterSetName = "Updated")] |
||||
public string Source { get; set; } |
||||
|
||||
[Parameter(ParameterSetName = "Recent")] |
||||
public SwitchParameter Recent { get; set; } |
||||
|
||||
[Parameter] |
||||
[ValidateRange(0, Int32.MaxValue)] |
||||
public int Skip { |
||||
get { return skip.GetValueOrDefault(); } |
||||
set { skip = value; } |
||||
} |
||||
|
||||
[Parameter] |
||||
[ValidateRange(0, Int32.MaxValue)] |
||||
public int Take { |
||||
get { return take.GetValueOrDefault(); } |
||||
set { take = value; } |
||||
} |
||||
|
||||
protected override void ProcessRecord() |
||||
{ |
||||
ValidateParameters(); |
||||
|
||||
IQueryable<IPackage> packages = GetPackages(); |
||||
packages = OrderPackages(packages); |
||||
packages = SelectPackageRange(packages); |
||||
WritePackagesToOutputPipeline(packages); |
||||
} |
||||
|
||||
void ValidateParameters() |
||||
{ |
||||
if (ParametersRequireProject()) { |
||||
if (DefaultProject == null) { |
||||
ThrowProjectNotOpenTerminatorError(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
bool ParametersRequireProject() |
||||
{ |
||||
if (ListAvailable.IsPresent || Recent.IsPresent) { |
||||
return false; |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
void ThrowProjectNotOpenTerminatorError() |
||||
{ |
||||
var error = errorRecordFactory.CreateNoProjectOpenErrorRecord(); |
||||
CmdletThrowTerminatingError(error); |
||||
} |
||||
|
||||
protected virtual void CmdletThrowTerminatingError(ErrorRecord errorRecord) |
||||
{ |
||||
ThrowTerminatingError(errorRecord); |
||||
} |
||||
|
||||
IQueryable<IPackage> GetPackages() |
||||
{ |
||||
if (ListAvailable.IsPresent) { |
||||
return GetAvailablePackages(); |
||||
} else if (Updates.IsPresent) { |
||||
return GetUpdatedPackages(); |
||||
} else if (Recent.IsPresent) { |
||||
return GetRecentPackages(); |
||||
} |
||||
return GetInstalledPackages(); |
||||
} |
||||
|
||||
|
||||
IQueryable<IPackage> OrderPackages(IQueryable<IPackage> packages) |
||||
{ |
||||
return packages.OrderBy(package => package.Id); |
||||
} |
||||
|
||||
IQueryable<IPackage> SelectPackageRange(IQueryable<IPackage> packages) |
||||
{ |
||||
if (skip.HasValue) { |
||||
packages = packages.Skip(skip.Value); |
||||
} |
||||
if (take.HasValue) { |
||||
packages = packages.Take(take.Value); |
||||
} |
||||
return packages; |
||||
} |
||||
|
||||
IQueryable<IPackage> GetAvailablePackages() |
||||
{ |
||||
IPackageRepository repository = CreatePackageRepositoryForActivePackageSource(); |
||||
IQueryable<IPackage> packages = repository.GetPackages(); |
||||
return FilterPackages(packages); |
||||
} |
||||
|
||||
IPackageRepository CreatePackageRepositoryForActivePackageSource() |
||||
{ |
||||
PackageSource source = GetActivePackageSource(); |
||||
return packageManagementService.CreatePackageRepository(source); |
||||
} |
||||
|
||||
PackageSource GetActivePackageSource() |
||||
{ |
||||
if (Source != null) { |
||||
return new PackageSource(Source); |
||||
} |
||||
return consoleHost.ActivePackageSource; |
||||
} |
||||
|
||||
IQueryable<IPackage> FilterPackages(IQueryable<IPackage> packages) |
||||
{ |
||||
if (Filter != null) { |
||||
string[] searchTerms = Filter.Split(' '); |
||||
return packages.Find(searchTerms); |
||||
} |
||||
return packages; |
||||
} |
||||
|
||||
IQueryable<IPackage> GetUpdatedPackages() |
||||
{ |
||||
var updatedPackages = new UpdatedPackages(packageManagementService, DefaultProject); |
||||
updatedPackages.SearchTerms = Filter; |
||||
return updatedPackages.GetUpdatedPackages().AsQueryable(); |
||||
} |
||||
|
||||
IQueryable<IPackage> GetInstalledPackages() |
||||
{ |
||||
IPackageRepository repository = CreatePackageRepositoryForActivePackageSource(); |
||||
ISharpDevelopProjectManager projectManager = CreateProjectManagerForActiveProject(repository); |
||||
IQueryable<IPackage> packages = projectManager.LocalRepository.GetPackages(); |
||||
return FilterPackages(packages); |
||||
} |
||||
|
||||
ISharpDevelopProjectManager CreateProjectManagerForActiveProject(IPackageRepository repository) |
||||
{ |
||||
return packageManagementService.CreateProjectManager(repository, DefaultProject); |
||||
} |
||||
|
||||
MSBuildBasedProject DefaultProject { |
||||
get { return consoleHost.DefaultProject as MSBuildBasedProject; } |
||||
} |
||||
|
||||
IQueryable<IPackage> GetRecentPackages() |
||||
{ |
||||
IQueryable<IPackage> packages = packageManagementService.RecentPackageRepository.GetPackages(); |
||||
return FilterPackages(packages); |
||||
} |
||||
|
||||
void WritePackagesToOutputPipeline(IQueryable<IPackage> packages) |
||||
{ |
||||
foreach (IPackage package in packages) { |
||||
WriteObject(package); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
// 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.Reflection; |
||||
|
||||
// Information about this assembly is defined by the following
|
||||
// attributes.
|
||||
//
|
||||
// change them to the information which is associated with the assembly
|
||||
// you compile.
|
||||
|
||||
[assembly: AssemblyTitle("PackageManagement.Cmdlets.Tests")] |
||||
[assembly: AssemblyDescription("Package Management PowerShell Cmdlets Unit Tests")] |
||||
[assembly: AssemblyConfiguration("")] |
||||
[assembly: AssemblyTrademark("")] |
||||
[assembly: AssemblyCulture("")] |
@ -0,0 +1,112 @@
@@ -0,0 +1,112 @@
|
||||
// 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 System.Management.Automation; |
||||
using System.Management.Automation.Host; |
||||
|
||||
namespace PackageManagement.Cmdlets.Tests.Helpers |
||||
{ |
||||
public class FakeCommandRuntime : ICommandRuntime |
||||
{ |
||||
public List<object> ObjectsPassedToWriteObject = new List<object>(); |
||||
|
||||
public PSHost Host { |
||||
get { |
||||
throw new NotImplementedException(); |
||||
} |
||||
} |
||||
|
||||
public PSTransactionContext CurrentPSTransaction { |
||||
get { |
||||
throw new NotImplementedException(); |
||||
} |
||||
} |
||||
|
||||
public void WriteDebug(string text) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public void WriteError(ErrorRecord errorRecord) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public void WriteObject(object sendToPipeline) |
||||
{ |
||||
ObjectsPassedToWriteObject.Add(sendToPipeline); |
||||
} |
||||
|
||||
public void WriteObject(object sendToPipeline, bool enumerateCollection) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public void WriteProgress(ProgressRecord progressRecord) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public void WriteProgress(long sourceId, ProgressRecord progressRecord) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public void WriteVerbose(string text) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public void WriteWarning(string text) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public void WriteCommandDetail(string text) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public bool ShouldProcess(string target) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public bool ShouldProcess(string target, string action) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public bool ShouldProcess(string verboseDescription, string verboseWarning, string caption) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public bool ShouldProcess(string verboseDescription, string verboseWarning, string caption, out ShouldProcessReason shouldProcessReason) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public bool ShouldContinue(string query, string caption) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public bool ShouldContinue(string query, string caption, ref bool yesToAll, ref bool noToAll) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public bool TransactionAvailable() |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public void ThrowTerminatingError(ErrorRecord errorRecord) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
} |
||||
} |
@ -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 System.Management.Automation; |
||||
using ICSharpCode.PackageManagement.Scripting; |
||||
|
||||
namespace PackageManagement.Cmdlets.Tests.Helpers |
||||
{ |
||||
public class FakeErrorRecordFactory : IErrorRecordFactory |
||||
{ |
||||
public ErrorRecord ErrorRecordToReturnFromCreateNoProjectOpenErrorRecord = |
||||
new ErrorRecord(new InvalidOperationException(), "NoProjectOpen", ErrorCategory.InvalidOperation, null); |
||||
|
||||
public ErrorRecord CreateNoProjectOpenErrorRecord() |
||||
{ |
||||
return ErrorRecordToReturnFromCreateNoProjectOpenErrorRecord; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
// 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 System.Management.Automation; |
||||
|
||||
using ICSharpCode.PackageManagement; |
||||
using ICSharpCode.PackageManagement.Design; |
||||
using NuGet; |
||||
using PackageManagement.Tests.Helpers; |
||||
|
||||
namespace PackageManagement.Cmdlets.Tests.Helpers |
||||
{ |
||||
public class TestableGetPackageCmdlet : GetPackageCmdlet |
||||
{ |
||||
public FakePackageManagementService FakePackageManagementService; |
||||
public FakeCommandRuntime FakeCommandRuntime; |
||||
public List<IPackage> PackagesPassedToWriteObject = new List<IPackage>(); |
||||
public FakePackageManagementConsoleHost FakePackageManagementConsoleHost; |
||||
public FakeErrorRecordFactory FakeErrorRecordFactory; |
||||
|
||||
public TestableGetPackageCmdlet() |
||||
: this( |
||||
new FakePackageManagementService(), |
||||
new FakePackageManagementConsoleHost(), |
||||
new FakeCommandRuntime(), |
||||
new FakeErrorRecordFactory()) |
||||
{ |
||||
} |
||||
|
||||
public TestableGetPackageCmdlet( |
||||
FakePackageManagementService packageManagementService, |
||||
FakePackageManagementConsoleHost consoleHost, |
||||
FakeCommandRuntime commandRuntime, |
||||
FakeErrorRecordFactory errorRecordFactory) |
||||
: base(packageManagementService, consoleHost, errorRecordFactory) |
||||
{ |
||||
this.FakePackageManagementService = packageManagementService; |
||||
this.FakePackageManagementConsoleHost = consoleHost; |
||||
this.FakeCommandRuntime = commandRuntime; |
||||
this.CommandRuntime = commandRuntime; |
||||
this.FakeErrorRecordFactory = errorRecordFactory; |
||||
} |
||||
|
||||
public void RunProcessRecord() |
||||
{ |
||||
base.ProcessRecord(); |
||||
} |
||||
|
||||
public bool IsThrowTerminatingErrorCalled { get; set; } |
||||
public ErrorRecord ErrorRecordPassedToThrowTerminatingError; |
||||
|
||||
protected override void CmdletThrowTerminatingError(ErrorRecord errorRecord) |
||||
{ |
||||
IsThrowTerminatingErrorCalled = true; |
||||
ErrorRecordPassedToThrowTerminatingError = errorRecord; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,78 @@
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> |
||||
<PropertyGroup> |
||||
<ProjectGuid>{11115C83-3DB1-431F-8B98-59040359238D}</ProjectGuid> |
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform> |
||||
<OutputType>Library</OutputType> |
||||
<RootNamespace>PackageManagement.Cmdlets.Tests</RootNamespace> |
||||
<AssemblyName>PackageManagement.Cmdlets.Tests</AssemblyName> |
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |
||||
<OutputPath>..\..\..\..\..\..\bin\UnitTests\</OutputPath> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Platform)' == 'x86' "> |
||||
<PlatformTarget>x86</PlatformTarget> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> |
||||
<DebugSymbols>True</DebugSymbols> |
||||
<DebugType>Full</DebugType> |
||||
<Optimize>False</Optimize> |
||||
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> |
||||
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> |
||||
<DebugSymbols>False</DebugSymbols> |
||||
<DebugType>None</DebugType> |
||||
<Optimize>True</Optimize> |
||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> |
||||
<DefineConstants>TRACE</DefineConstants> |
||||
</PropertyGroup> |
||||
<ItemGroup> |
||||
<Reference Include="NuGet.Core"> |
||||
<HintPath>..\..\RequiredLibraries\NuGet.Core.dll</HintPath> |
||||
</Reference> |
||||
<Reference Include="nunit.framework"> |
||||
<HintPath>..\..\..\..\..\Tools\NUnit\nunit.framework.dll</HintPath> |
||||
</Reference> |
||||
<Reference Include="System" /> |
||||
<Reference Include="System.Management.Automation" /> |
||||
<Reference Include="System.Xml" /> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<Compile Include="..\..\..\..\..\Main\GlobalAssemblyInfo.cs"> |
||||
<Link>Configuration\GlobalAssemblyInfo.cs</Link> |
||||
</Compile> |
||||
<Compile Include="Configuration\AssemblyInfo.cs" /> |
||||
<Compile Include="Helpers\FakeCommandRuntime.cs" /> |
||||
<Compile Include="Helpers\FakeErrorRecordFactory.cs" /> |
||||
<Compile Include="Helpers\TestableGetPackageCmdlet.cs" /> |
||||
<Compile Include="Src\GetPackageCmdletTests.cs" /> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ProjectReference Include="..\..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj"> |
||||
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project> |
||||
<Name>ICSharpCode.SharpDevelop</Name> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj"> |
||||
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project> |
||||
<Name>ICSharpCode.Core</Name> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\Project\PackageManagement.csproj"> |
||||
<Project>{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}</Project> |
||||
<Name>PackageManagement</Name> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\Test\PackageManagement.Tests.csproj"> |
||||
<Project>{56E98A01-8398-4A08-9578-C7337711A52B}</Project> |
||||
<Name>PackageManagement.Tests</Name> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\Project\PackageManagement.Cmdlets.csproj"> |
||||
<Project>{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}</Project> |
||||
<Name>PackageManagement.Cmdlets</Name> |
||||
</ProjectReference> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<Folder Include="Helpers" /> |
||||
<Folder Include="Src" /> |
||||
</ItemGroup> |
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> |
||||
</Project> |
@ -0,0 +1,569 @@
@@ -0,0 +1,569 @@
|
||||
// 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.Management.Automation; |
||||
using ICSharpCode.PackageManagement.Design; |
||||
using NuGet; |
||||
using NUnit.Framework; |
||||
using PackageManagement.Cmdlets.Tests.Helpers; |
||||
using PackageManagement.Tests.Helpers; |
||||
|
||||
namespace PackageManagement.Cmdlets.Tests |
||||
{ |
||||
[TestFixture] |
||||
public class GetPackageCmdletTests |
||||
{ |
||||
TestableGetPackageCmdlet cmdlet; |
||||
FakePackageManagementService packageManagementService; |
||||
FakePackageManagementConsoleHost consoleHost; |
||||
FakeCommandRuntime commandRuntime; |
||||
FakeErrorRecordFactory errorRecordFactory; |
||||
|
||||
void CreateCmdlet() |
||||
{ |
||||
cmdlet = new TestableGetPackageCmdlet(); |
||||
packageManagementService = cmdlet.FakePackageManagementService; |
||||
consoleHost = cmdlet.FakePackageManagementConsoleHost; |
||||
commandRuntime = cmdlet.FakeCommandRuntime; |
||||
errorRecordFactory = cmdlet.FakeErrorRecordFactory; |
||||
} |
||||
|
||||
void RunCmdlet() |
||||
{ |
||||
cmdlet.RunProcessRecord(); |
||||
} |
||||
|
||||
void EnableListAvailableParameter() |
||||
{ |
||||
cmdlet.ListAvailable = new SwitchParameter(true); |
||||
} |
||||
|
||||
void EnableUpdatesParameter() |
||||
{ |
||||
cmdlet.Updates = new SwitchParameter(true); |
||||
} |
||||
|
||||
TestableProject AddDefaultProjectToConsoleHost() |
||||
{ |
||||
var project = ProjectHelper.CreateTestProject(); |
||||
consoleHost.DefaultProject = project; |
||||
return project; |
||||
} |
||||
|
||||
PackageSource AddPackageSourceToConsoleHost() |
||||
{ |
||||
var source = new PackageSource("Test"); |
||||
consoleHost.ActivePackageSource = source; |
||||
return source; |
||||
} |
||||
|
||||
FakePackage AddPackageToProjectManagerLocalRepository(string version) |
||||
{ |
||||
return AddPackageToProjectManagerLocalRepository("Test", version); |
||||
} |
||||
FakePackage AddPackageToProjectManagerLocalRepository(string id, string version) |
||||
{ |
||||
var package = FakePackage.CreatePackageWithVersion(id, version); |
||||
packageManagementService |
||||
.FakeProjectManagerToReturnFromCreateProjectManager |
||||
.FakeLocalRepository |
||||
.FakePackages.Add(package); |
||||
return package; |
||||
} |
||||
|
||||
FakePackage AddPackageToAggregateRepository(string version) |
||||
{ |
||||
return AddPackageToAggregateRepository("Test", version); |
||||
} |
||||
|
||||
FakePackage AddPackageToAggregateRepository(string id, string version) |
||||
{ |
||||
return packageManagementService.AddFakePackageWithVersionToAggregrateRepository(id, version); |
||||
} |
||||
|
||||
void SetFilterParameter(string filter) |
||||
{ |
||||
cmdlet.Filter = filter; |
||||
} |
||||
|
||||
void SetSourceParameter(string source) |
||||
{ |
||||
cmdlet.Source = source; |
||||
} |
||||
|
||||
void EnableRecentParameter() |
||||
{ |
||||
cmdlet.Recent = new SwitchParameter(true); |
||||
} |
||||
|
||||
void SetSkipParameter(int skip) |
||||
{ |
||||
cmdlet.Skip = skip; |
||||
} |
||||
|
||||
void SetTakeParameter(int take) |
||||
{ |
||||
cmdlet.Take = take; |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_ListAvailablePackagesWhenDefaultPackageSourceHasOnePackage_OutputIsPackagesFromPackageSourceRepository() |
||||
{ |
||||
CreateCmdlet(); |
||||
var repository = packageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository; |
||||
repository.AddOneFakePackage("Test"); |
||||
|
||||
EnableListAvailableParameter(); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = repository.FakePackages; |
||||
|
||||
CollectionAssert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_ListAvailablePackagesWhenDefaultPackageSourceHasThreePackages_OutputIsPackagesFromPackageSourceRepository() |
||||
{ |
||||
CreateCmdlet(); |
||||
var repository = packageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository; |
||||
repository.AddOneFakePackage("A"); |
||||
repository.AddOneFakePackage("B"); |
||||
repository.AddOneFakePackage("C"); |
||||
|
||||
EnableListAvailableParameter(); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = repository.FakePackages; |
||||
|
||||
CollectionAssert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_ListAvailablePackagesWhenDefaultPackageSourceHasTwoPackages_PackagesAreSortedById() |
||||
{ |
||||
CreateCmdlet(); |
||||
var repository = packageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository; |
||||
var packageB = repository.AddOneFakePackage("B"); |
||||
var packageA = repository.AddOneFakePackage("A"); |
||||
|
||||
EnableListAvailableParameter(); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = new FakePackage[] { |
||||
packageA, |
||||
packageB |
||||
}; |
||||
|
||||
CollectionAssert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_ListAvailablePackagesWhenNoPackageSourceSpecified_PackageSourceTakenFromConsoleHost() |
||||
{ |
||||
CreateCmdlet(); |
||||
var source = AddPackageSourceToConsoleHost(); |
||||
|
||||
EnableListAvailableParameter(); |
||||
RunCmdlet(); |
||||
|
||||
var actualSource = packageManagementService.PackageSourcePassedToCreatePackageRepository; |
||||
|
||||
Assert.AreEqual(source, actualSource); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_NoParametersPassed_ReturnsPackagesInstalledForProjectSelectedInConsole() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddDefaultProjectToConsoleHost(); |
||||
FakeProjectManager projectManager = packageManagementService.FakeProjectManagerToReturnFromCreateProjectManager; |
||||
projectManager.FakeLocalRepository.AddOneFakePackage("One"); |
||||
projectManager.FakeLocalRepository.AddOneFakePackage("Two"); |
||||
|
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = projectManager.FakeLocalRepository.FakePackages; |
||||
|
||||
Assert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_NoParametersPassed_SelectedActivePackageSourceInConsoleHostUsedToCreateRepository() |
||||
{ |
||||
CreateCmdlet(); |
||||
var source = AddPackageSourceToConsoleHost(); |
||||
|
||||
RunCmdlet(); |
||||
|
||||
var actualSource = packageManagementService.PackageSourcePassedToCreatePackageRepository; |
||||
|
||||
Assert.AreEqual(source, actualSource); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_NoParametersPassed_SelectedActiveRepositoryInConsoleHostUsedToCreateProjectManager() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddPackageSourceToConsoleHost(); |
||||
|
||||
RunCmdlet(); |
||||
|
||||
var actualRepository = packageManagementService.PackageRepositoryPassedToCreateProjectManager; |
||||
var expectedRepository = packageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository; |
||||
|
||||
Assert.AreEqual(expectedRepository, actualRepository); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_NoParametersPassed_DefaultProjectInConsoleHostUsedToCreateProjectManager() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddPackageSourceToConsoleHost(); |
||||
var project = AddDefaultProjectToConsoleHost(); |
||||
|
||||
RunCmdlet(); |
||||
|
||||
var actualProject = packageManagementService.ProjectPassedToCreateProjectManager; |
||||
|
||||
Assert.AreEqual(project, actualProject); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_UpdatedPackagesRequested_ReturnsUpdatedPackagesForActiveProject() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddDefaultProjectToConsoleHost(); |
||||
AddPackageToProjectManagerLocalRepository("1.0.0.0"); |
||||
var updatedPackage = AddPackageToAggregateRepository("1.1.0.0"); |
||||
|
||||
EnableUpdatesParameter(); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = new FakePackage[] { |
||||
updatedPackage |
||||
}; |
||||
|
||||
CollectionAssert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_UpdatedPackagesRequested_ActiveProjectWhenCreatingProjectManager() |
||||
{ |
||||
CreateCmdlet(); |
||||
var project = AddDefaultProjectToConsoleHost(); |
||||
EnableUpdatesParameter(); |
||||
RunCmdlet(); |
||||
|
||||
var actualProject = packageManagementService.ProjectPassedToCreateProjectManager; |
||||
|
||||
Assert.AreEqual(project, actualProject); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_UpdatedPackagesRequested_AggregateRepositoryUsedWhenCreatingProjectManager() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddDefaultProjectToConsoleHost(); |
||||
EnableUpdatesParameter(); |
||||
RunCmdlet(); |
||||
|
||||
var actualRepository = packageManagementService.PackageRepositoryPassedToCreateProjectManager; |
||||
var expectedRepository = packageManagementService.FakeAggregateRepository; |
||||
|
||||
Assert.AreEqual(expectedRepository, actualRepository); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_ListAvailablePackagesAndFilterResults_PackagesReturnedMatchFilter() |
||||
{ |
||||
CreateCmdlet(); |
||||
var repository = packageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository; |
||||
repository.AddOneFakePackage("A"); |
||||
var package = repository.AddOneFakePackage("B"); |
||||
repository.AddOneFakePackage("C"); |
||||
|
||||
EnableListAvailableParameter(); |
||||
SetFilterParameter("B"); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = new FakePackage[] { |
||||
package |
||||
}; |
||||
|
||||
CollectionAssert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_FilterParameterPassed_InstallPackagesAreFiltered() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddPackageSourceToConsoleHost(); |
||||
FakeProjectManager projectManager = packageManagementService.FakeProjectManagerToReturnFromCreateProjectManager; |
||||
projectManager.FakeLocalRepository.AddOneFakePackage("A"); |
||||
var package = projectManager.FakeLocalRepository.AddOneFakePackage("B"); |
||||
|
||||
SetFilterParameter("B"); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = new FakePackage[] { |
||||
package |
||||
}; |
||||
|
||||
Assert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_UpdatedPackagesRequestedWithFilter_ReturnsFilteredUpdatedPackages() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddDefaultProjectToConsoleHost(); |
||||
AddPackageToProjectManagerLocalRepository("A", "1.0.0.0"); |
||||
AddPackageToAggregateRepository("A", "1.1.0.0"); |
||||
AddPackageToProjectManagerLocalRepository("B", "2.0.0.0"); |
||||
var updatedPackage = AddPackageToAggregateRepository("B", "2.1.0.0"); |
||||
|
||||
EnableUpdatesParameter(); |
||||
SetFilterParameter("B"); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = new FakePackage[] { |
||||
updatedPackage |
||||
}; |
||||
|
||||
CollectionAssert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_ListAvailablePackagesWhenPackageSourceParameterSpecified_PackageRepositoryCreatedForPackageSourceSpecifiedByParameter() |
||||
{ |
||||
CreateCmdlet(); |
||||
var repository = packageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository; |
||||
|
||||
SetSourceParameter("http://sharpdevelop.com/packages"); |
||||
EnableListAvailableParameter(); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackageSource = packageManagementService.PackageSourcePassedToCreatePackageRepository; |
||||
var expectedPackageSource = new PackageSource("http://sharpdevelop.com/packages"); |
||||
|
||||
Assert.AreEqual(expectedPackageSource, actualPackageSource); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_JustSourceParameterPassed_PackageRepositoryCreatedForPackageSourceSpecifiedByParameter() |
||||
{ |
||||
CreateCmdlet(); |
||||
SetSourceParameter("http://test"); |
||||
|
||||
RunCmdlet(); |
||||
|
||||
var actualPackageSource = packageManagementService.PackageSourcePassedToCreatePackageRepository; |
||||
var expectedPackageSource = new PackageSource("http://test"); |
||||
|
||||
Assert.AreEqual(expectedPackageSource, actualPackageSource); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_RecentPackagesRequested_RecentPackagesReturned() |
||||
{ |
||||
CreateCmdlet(); |
||||
|
||||
var recentPackageRepository = packageManagementService.FakeRecentPackageRepository; |
||||
recentPackageRepository.AddOneFakePackage("A"); |
||||
|
||||
EnableRecentParameter(); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = recentPackageRepository.FakePackages; |
||||
|
||||
Assert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_RecentPackagesRequestedWithFilter_FilteredRecentPackagesReturned() |
||||
{ |
||||
CreateCmdlet(); |
||||
|
||||
var recentPackageRepository = packageManagementService.FakeRecentPackageRepository; |
||||
recentPackageRepository.AddOneFakePackage("A"); |
||||
var packageB = recentPackageRepository.AddOneFakePackage("B"); |
||||
|
||||
EnableRecentParameter(); |
||||
SetFilterParameter("B"); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = new FakePackage[] { |
||||
packageB |
||||
}; |
||||
|
||||
Assert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_FilterParameterPassedContainingTwoSearchTermsSeparatedBySpaceCharacter_InstallPackagesAreFilteredByBothSearchTerms() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddPackageSourceToConsoleHost(); |
||||
FakeProjectManager projectManager = packageManagementService.FakeProjectManagerToReturnFromCreateProjectManager; |
||||
var packageA = projectManager.FakeLocalRepository.AddOneFakePackage("A"); |
||||
var packageB = projectManager.FakeLocalRepository.AddOneFakePackage("B"); |
||||
var packageC = projectManager.FakeLocalRepository.AddOneFakePackage("C"); |
||||
|
||||
SetFilterParameter("B C"); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = new FakePackage[] { |
||||
packageB, |
||||
packageC |
||||
}; |
||||
|
||||
Assert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_RetrieveUpdatesWhenNoProjectIsOpen_ThrowsTerminatingError() |
||||
{ |
||||
CreateCmdlet(); |
||||
EnableUpdatesParameter(); |
||||
|
||||
RunCmdlet(); |
||||
|
||||
Assert.IsTrue(cmdlet.IsThrowTerminatingErrorCalled); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_RetrieveUpdatesWhenProjectIsActive_DoesNotThrowTerminatingError() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddDefaultProjectToConsoleHost(); |
||||
EnableUpdatesParameter(); |
||||
|
||||
RunCmdlet(); |
||||
|
||||
Assert.IsFalse(cmdlet.IsThrowTerminatingErrorCalled); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_RetrieveUpdatesWhenNoProjectIsOpen_ThrowsNoProjectOpenTerminatingError() |
||||
{ |
||||
CreateCmdlet(); |
||||
EnableUpdatesParameter(); |
||||
|
||||
RunCmdlet(); |
||||
|
||||
var actual = cmdlet.ErrorRecordPassedToThrowTerminatingError; |
||||
var expected = errorRecordFactory.ErrorRecordToReturnFromCreateNoProjectOpenErrorRecord; |
||||
|
||||
Assert.AreEqual(expected, actual); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_NoParametersSetAndNoProjectIsOpen_ThrowsNoProjectOpenTerminatingError() |
||||
{ |
||||
CreateCmdlet(); |
||||
RunCmdlet(); |
||||
|
||||
var actual = cmdlet.ErrorRecordPassedToThrowTerminatingError; |
||||
var expected = errorRecordFactory.ErrorRecordToReturnFromCreateNoProjectOpenErrorRecord; |
||||
|
||||
Assert.AreEqual(expected, actual); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_ListAvailablePackagesAndProjectIsNotOpen_NoTerminatingErrorIsThrown() |
||||
{ |
||||
CreateCmdlet(); |
||||
EnableListAvailableParameter(); |
||||
RunCmdlet(); |
||||
|
||||
bool result = cmdlet.IsThrowTerminatingErrorCalled; |
||||
|
||||
Assert.IsFalse(result); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_RecentPackagesRequestedAndProjectIsNotOpen_NoTerminatingErrorIsThrown() |
||||
{ |
||||
CreateCmdlet(); |
||||
EnableRecentParameter(); |
||||
RunCmdlet(); |
||||
|
||||
bool result = cmdlet.IsThrowTerminatingErrorCalled; |
||||
|
||||
Assert.IsFalse(result); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_ListAvailableAndSkipFirstTwoPackages_ReturnsAllPackagesExceptionFirstTwo() |
||||
{ |
||||
CreateCmdlet(); |
||||
var repository = packageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository; |
||||
repository.AddOneFakePackage("A"); |
||||
repository.AddOneFakePackage("B"); |
||||
var packageC = repository.AddOneFakePackage("C"); |
||||
|
||||
EnableListAvailableParameter(); |
||||
SetSkipParameter(2); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = new FakePackage[] { |
||||
packageC |
||||
}; |
||||
|
||||
CollectionAssert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void Skip_NewGetPackageCmdletInstance_ReturnsZero() |
||||
{ |
||||
CreateCmdlet(); |
||||
int skip = cmdlet.Skip; |
||||
|
||||
Assert.AreEqual(0, skip); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_ListAvailableAndTakeTwo_ReturnsFirstTwoPackages() |
||||
{ |
||||
CreateCmdlet(); |
||||
var repository = packageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository; |
||||
var packageA = repository.AddOneFakePackage("A"); |
||||
var packageB = repository.AddOneFakePackage("B"); |
||||
repository.AddOneFakePackage("C"); |
||||
|
||||
EnableListAvailableParameter(); |
||||
SetTakeParameter(2); |
||||
RunCmdlet(); |
||||
|
||||
var actualPackages = commandRuntime.ObjectsPassedToWriteObject; |
||||
var expectedPackages = new FakePackage[] { |
||||
packageA, |
||||
packageB |
||||
}; |
||||
|
||||
CollectionAssert.AreEqual(expectedPackages, actualPackages); |
||||
} |
||||
|
||||
[Test] |
||||
public void Take_NewGetPackageCmdletInstance_ReturnsZero() |
||||
{ |
||||
CreateCmdlet(); |
||||
int take = cmdlet.Take; |
||||
|
||||
Assert.AreEqual(0, take); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
<Configuration> |
||||
<ViewDefinitions> |
||||
<View> |
||||
<Name>IPackage.Table</Name> |
||||
<ViewSelectedBy> |
||||
<TypeName>NuGet.DataServicePackage</TypeName> |
||||
<TypeName>NuGet.ZipPackage</TypeName> |
||||
</ViewSelectedBy> |
||||
<TableControl> |
||||
<TableHeaders> |
||||
<TableColumnHeader> |
||||
<Label>Id</Label> |
||||
<Width>35</Width> |
||||
</TableColumnHeader> |
||||
<TableColumnHeader> |
||||
<Label>Version</Label> |
||||
<Width>18</Width> |
||||
</TableColumnHeader> |
||||
<TableColumnHeader> |
||||
<Label>Description</Label> |
||||
</TableColumnHeader> |
||||
</TableHeaders> |
||||
<TableRowEntries> |
||||
<TableRowEntry> |
||||
<TableColumnItems> |
||||
<TableColumnItem> |
||||
<PropertyName>Id</PropertyName> |
||||
</TableColumnItem> |
||||
<TableColumnItem> |
||||
<PropertyName>Version</PropertyName> |
||||
</TableColumnItem> |
||||
<TableColumnItem> |
||||
<PropertyName>Description</PropertyName> |
||||
</TableColumnItem> |
||||
</TableColumnItems> |
||||
</TableRowEntry> |
||||
</TableRowEntries> |
||||
</TableControl> |
||||
</View> |
||||
</ViewDefinitions> |
||||
</Configuration> |
@ -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 System.Management.Automation; |
||||
|
||||
namespace ICSharpCode.PackageManagement.Scripting |
||||
{ |
||||
public class ErrorRecordFactory : IErrorRecordFactory |
||||
{ |
||||
public ErrorRecord CreateNoProjectOpenErrorRecord() |
||||
{ |
||||
return new ErrorRecord( |
||||
new InvalidOperationException("No project is currently open."), |
||||
"NoProjectOpen", |
||||
ErrorCategory.InvalidOperation, |
||||
null); |
||||
} |
||||
} |
||||
} |
@ -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 System.Management.Automation; |
||||
|
||||
namespace ICSharpCode.PackageManagement.Scripting |
||||
{ |
||||
public interface IErrorRecordFactory |
||||
{ |
||||
ErrorRecord CreateNoProjectOpenErrorRecord(); |
||||
} |
||||
} |
@ -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; |
||||
|
||||
namespace ICSharpCode.PackageManagement.Scripting |
||||
{ |
||||
public interface IPackageManagementAddInPath |
||||
{ |
||||
string CmdletsAssemblyFileName { get; } |
||||
|
||||
IEnumerable<string> GetPowerShellFormattingFileNames(); |
||||
} |
||||
} |
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
// 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 System.IO; |
||||
|
||||
namespace ICSharpCode.PackageManagement.Scripting |
||||
{ |
||||
public class PackageManagementAddInPath : IPackageManagementAddInPath |
||||
{ |
||||
string cmdletsAssemblyFileName; |
||||
|
||||
public string CmdletsAssemblyFileName { |
||||
get { |
||||
if (cmdletsAssemblyFileName == null) { |
||||
GetCmdletsAssemblyFileName(); |
||||
} |
||||
return cmdletsAssemblyFileName; |
||||
} |
||||
} |
||||
|
||||
void GetCmdletsAssemblyFileName() |
||||
{ |
||||
cmdletsAssemblyFileName = Path.Combine(AddInDirectory, "PackageManagement.Cmdlets.dll"); |
||||
} |
||||
|
||||
string AddInDirectory { |
||||
get { |
||||
string addinFilename = GetType().Assembly.Location; |
||||
return Path.GetDirectoryName(addinFilename); |
||||
} |
||||
} |
||||
|
||||
public IEnumerable<string> GetPowerShellFormattingFileNames() |
||||
{ |
||||
return Directory.GetFiles(PowerShellScriptsDirectory, "*.ps1xml"); |
||||
} |
||||
|
||||
string PowerShellScriptsDirectory { |
||||
get { return Path.Combine(AddInDirectory, "Scripts"); } |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,78 @@
@@ -0,0 +1,78 @@
|
||||
// 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 System.Linq; |
||||
|
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NuGet; |
||||
|
||||
namespace ICSharpCode.PackageManagement |
||||
{ |
||||
public class UpdatedPackages |
||||
{ |
||||
IPackageManagementService packageManagementService; |
||||
MSBuildBasedProject project; |
||||
IPackageRepository localRepository; |
||||
IPackageRepository sourceRepository; |
||||
|
||||
public UpdatedPackages(IPackageManagementService packageManagementService) |
||||
: this(packageManagementService, null) |
||||
{ |
||||
} |
||||
|
||||
public UpdatedPackages( |
||||
IPackageManagementService packageManagementService, |
||||
MSBuildBasedProject project) |
||||
{ |
||||
this.packageManagementService = packageManagementService; |
||||
this.project = project; |
||||
GetRepositories(); |
||||
} |
||||
|
||||
void GetRepositories() |
||||
{ |
||||
GetSourceRepository(); |
||||
GetLocalRepository(); |
||||
} |
||||
|
||||
void GetSourceRepository() |
||||
{ |
||||
sourceRepository = packageManagementService.CreateAggregatePackageRepository(); |
||||
} |
||||
|
||||
void GetLocalRepository() |
||||
{ |
||||
IProjectManager projectManager = CreateProjectManager(); |
||||
localRepository = projectManager.LocalRepository; |
||||
} |
||||
|
||||
public string SearchTerms { get; set; } |
||||
|
||||
public IEnumerable<IPackage> GetUpdatedPackages() |
||||
{ |
||||
IQueryable<IPackage> localPackages = localRepository.GetPackages(); |
||||
localPackages = FilterPackages(localPackages); |
||||
return GetUpdatedPackages(sourceRepository, localPackages); |
||||
} |
||||
|
||||
IQueryable<IPackage> FilterPackages(IQueryable<IPackage> localPackages) |
||||
{ |
||||
return localPackages.Find(SearchTerms); |
||||
} |
||||
|
||||
IEnumerable<IPackage> GetUpdatedPackages(IPackageRepository sourceRepository, IQueryable<IPackage> localPackages) |
||||
{ |
||||
return sourceRepository.GetUpdates(localPackages); |
||||
} |
||||
|
||||
IProjectManager CreateProjectManager() |
||||
{ |
||||
if (project != null) { |
||||
return packageManagementService.CreateProjectManager(sourceRepository, project); |
||||
} |
||||
return packageManagementService.ActiveProjectManager; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
// 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.Scripting; |
||||
|
||||
namespace PackageManagement.Tests.Helpers |
||||
{ |
||||
public class FakePackageManagementAddInPath : IPackageManagementAddInPath |
||||
{ |
||||
public string CmdletsAssemblyFileName { get; set; } |
||||
|
||||
public List<string> PowerShellFormattingFileNames = new List<string>(); |
||||
|
||||
public IEnumerable<string> GetPowerShellFormattingFileNames() |
||||
{ |
||||
return PowerShellFormattingFileNames; |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue