Browse Source

Allow MvcScaffolding to set the default PowerShell runspace through the IConsoleInitializer.

pull/28/head
Matt Ward 14 years ago
parent
commit
e33c7f4edd
  1. 2
      src/AddIns/Misc/PackageManagement/PackageManagement.sln
  2. 1
      src/AddIns/Misc/PackageManagement/PowerShell/Project/Src/IPowerShellHost.cs
  3. 5
      src/AddIns/Misc/PackageManagement/PowerShell/Project/Src/PowerShellHost.cs
  4. 7
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  5. 24
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/ConsoleInitializer.cs
  6. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs
  7. 5
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs
  8. 4
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PowerShellMissingConsoleHost.cs
  9. 46
      src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/ComponentModel.cs
  10. 13
      src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/IComponentModel.cs
  11. 4
      src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/Package.cs
  12. 11
      src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/SComponentModel.cs
  13. BIN
      src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Console.Types.dll
  14. 5
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  15. 7
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementConsoleHost.cs
  16. 7
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePowerShellHost.cs
  17. 33
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/ConsoleInitializerTests.cs
  18. 11
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs
  19. 34
      src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/ComponentModelTests.cs
  20. 27
      src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/PackageTests.cs

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

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

1
src/AddIns/Misc/PackageManagement/PowerShell/Project/Src/IPowerShellHost.cs

@ -14,5 +14,6 @@ namespace ICSharpCode.PackageManagement.Scripting
void SetRemoteSignedExecutionPolicy(); void SetRemoteSignedExecutionPolicy();
void UpdateFormatting(IEnumerable<string> formattingFiles); void UpdateFormatting(IEnumerable<string> formattingFiles);
void ExecuteCommand(string command); void ExecuteCommand(string command);
void SetDefaultRunspace();
} }
} }

5
src/AddIns/Misc/PackageManagement/PowerShell/Project/Src/PowerShellHost.cs

@ -174,5 +174,10 @@ namespace ICSharpCode.PackageManagement.Scripting
scriptingConsole.WriteLine(ex.Message, ScriptingStyle.Error); scriptingConsole.WriteLine(ex.Message, ScriptingStyle.Error);
} }
} }
public void SetDefaultRunspace()
{
Runspace.DefaultRunspace = runspace;
}
} }
} }

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

@ -37,6 +37,9 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.Build" /> <Reference Include="Microsoft.Build" />
<Reference Include="NuGet.Console.Types">
<HintPath>..\RequiredLibraries\NuGet.Console.Types.dll</HintPath>
</Reference>
<Reference Include="NuGet.Core"> <Reference Include="NuGet.Core">
<HintPath>..\RequiredLibraries\NuGet.Core.dll</HintPath> <HintPath>..\RequiredLibraries\NuGet.Core.dll</HintPath>
</Reference> </Reference>
@ -319,6 +322,7 @@
<DependentUpon>RegisteredProjectTemplatePackageSourcesView.xaml</DependentUpon> <DependentUpon>RegisteredProjectTemplatePackageSourcesView.xaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Src\Scripting\ConsoleInitializer.cs" />
<Compile Include="Src\Scripting\IPackageManagementConsoleHost.cs" /> <Compile Include="Src\Scripting\IPackageManagementConsoleHost.cs" />
<Compile Include="Src\Scripting\IPackageScriptRunner.cs" /> <Compile Include="Src\Scripting\IPackageScriptRunner.cs" />
<Compile Include="Src\Scripting\IPowerShellDetection.cs" /> <Compile Include="Src\Scripting\IPowerShellDetection.cs" />
@ -423,12 +427,15 @@
<Compile Include="Src\UpdatePackageInAllProjects.cs" /> <Compile Include="Src\UpdatePackageInAllProjects.cs" />
<Compile Include="Src\ViewModelBase.cs" /> <Compile Include="Src\ViewModelBase.cs" />
<Compile Include="Src\PackageManagementViewModels.cs" /> <Compile Include="Src\PackageManagementViewModels.cs" />
<Compile Include="Src\VisualStudio\ComponentModel.cs" />
<Compile Include="Src\VisualStudio\FlavoredProject.cs" /> <Compile Include="Src\VisualStudio\FlavoredProject.cs" />
<Compile Include="Src\VisualStudio\IComponentModel.cs" />
<Compile Include="Src\VisualStudio\IVsAggregatableProject.cs" /> <Compile Include="Src\VisualStudio\IVsAggregatableProject.cs" />
<Compile Include="Src\VisualStudio\IVsHierarchy.cs" /> <Compile Include="Src\VisualStudio\IVsHierarchy.cs" />
<Compile Include="Src\VisualStudio\IVsSolution.cs" /> <Compile Include="Src\VisualStudio\IVsSolution.cs" />
<Compile Include="Src\VisualStudio\NotInstalledException.cs" /> <Compile Include="Src\VisualStudio\NotInstalledException.cs" />
<Compile Include="Src\VisualStudio\Package.cs" /> <Compile Include="Src\VisualStudio\Package.cs" />
<Compile Include="Src\VisualStudio\SComponentModel.cs" />
<Compile Include="Src\VisualStudio\SVsExtensionManager.cs" /> <Compile Include="Src\VisualStudio\SVsExtensionManager.cs" />
<Compile Include="Src\VisualStudio\ThreadHelper.cs" /> <Compile Include="Src\VisualStudio\ThreadHelper.cs" />
<Compile Include="Src\VisualStudio\VsConstants.cs" /> <Compile Include="Src\VisualStudio\VsConstants.cs" />

24
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/ConsoleInitializer.cs

@ -0,0 +1,24 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Threading.Tasks;
using NuGetConsole;
namespace ICSharpCode.PackageManagement.Scripting
{
public class ConsoleInitializer : IConsoleInitializer
{
IPackageManagementConsoleHost consoleHost;
public ConsoleInitializer(IPackageManagementConsoleHost consoleHost)
{
this.consoleHost = consoleHost;
}
public Task<Action> Initialize()
{
return Task.Factory.StartNew(() => new Action(consoleHost.SetDefaultRunspace));
}
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs

@ -24,6 +24,8 @@ namespace ICSharpCode.PackageManagement.Scripting
void ShutdownConsole(); void ShutdownConsole();
void ExecuteCommand(string command); void ExecuteCommand(string command);
void SetDefaultRunspace();
IPackageManagementProject GetProject(string packageSource, string projectName); IPackageManagementProject GetProject(string packageSource, string projectName);
IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName); IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName);
PackageSource GetActivePackageSource(string source); PackageSource GetActivePackageSource(string source);

5
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs

@ -255,5 +255,10 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
return registeredRepositories.CreateRepository(packageSource); return registeredRepositories.CreateRepository(packageSource);
} }
public void SetDefaultRunspace()
{
powerShellHost.SetDefaultRunspace();
}
} }
} }

4
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PowerShellMissingConsoleHost.cs

@ -76,5 +76,9 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
return null; return null;
} }
public void SetDefaultRunspace()
{
}
} }
} }

46
src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/ComponentModel.cs

@ -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 ICSharpCode.PackageManagement.Scripting;
using Microsoft.VisualStudio.ComponentModelHost;
using NuGetConsole;
namespace ICSharpCode.PackageManagement.VisualStudio
{
public class ComponentModel : SComponentModel, IComponentModel
{
IPackageManagementConsoleHost consoleHost;
public ComponentModel(IPackageManagementConsoleHost consoleHost)
{
this.consoleHost = consoleHost;
}
public ComponentModel()
{
}
public T GetService<T>()
where T : class
{
return GetService(typeof(T)) as T;
}
object GetService(Type type)
{
if (type.FullName == typeof(IConsoleInitializer).FullName) {
return new ConsoleInitializer(GetConsoleHost());
}
return null;
}
protected virtual IPackageManagementConsoleHost GetConsoleHost()
{
if (consoleHost != null) {
return consoleHost;
}
return PackageManagementServices.ConsoleHost;
}
}
}

13
src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/IComponentModel.cs

@ -0,0 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace Microsoft.VisualStudio.ComponentModelHost
{
public interface IComponentModel
{
T GetService<T>()
where T : class;
}
}

4
src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/Package.cs

@ -4,6 +4,7 @@
using System; using System;
using ICSharpCode.PackageManagement.EnvDTE; using ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.PackageManagement.VisualStudio; using ICSharpCode.PackageManagement.VisualStudio;
using Microsoft.VisualStudio.ComponentModelHost;
using Microsoft.VisualStudio.ExtensionManager; using Microsoft.VisualStudio.ExtensionManager;
using Microsoft.VisualStudio.Shell.Interop; using Microsoft.VisualStudio.Shell.Interop;
@ -13,13 +14,14 @@ namespace Microsoft.VisualStudio.Shell
{ {
public static object GetGlobalService(Type serviceType) public static object GetGlobalService(Type serviceType)
{ {
//typeof(SComponentModel) --> not used - console initializer.
if (serviceType == typeof(DTE)) { if (serviceType == typeof(DTE)) {
return new DTE(); return new DTE();
} else if (serviceType == typeof(SVsExtensionManager)) { } else if (serviceType == typeof(SVsExtensionManager)) {
return new SVsExtensionManager(); return new SVsExtensionManager();
} else if (serviceType == typeof(IVsSolution)) { } else if (serviceType == typeof(IVsSolution)) {
return new VsSolution(); return new VsSolution();
} else if (serviceType == typeof(SComponentModel)) {
return new ComponentModel();
} }
return null; return null;
} }

11
src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/SComponentModel.cs

@ -0,0 +1,11 @@
// 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 Microsoft.VisualStudio.ComponentModelHost
{
public interface SComponentModel
{
}
}

BIN
src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Console.Types.dll

Binary file not shown.

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

@ -38,6 +38,9 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="NuGet.Console.Types">
<HintPath>..\RequiredLibraries\NuGet.Console.Types.dll</HintPath>
</Reference>
<Reference Include="NuGet.Core"> <Reference Include="NuGet.Core">
<HintPath>..\RequiredLibraries\NuGet.Core.dll</HintPath> <HintPath>..\RequiredLibraries\NuGet.Core.dll</HintPath>
</Reference> </Reference>
@ -255,6 +258,7 @@
<Compile Include="Src\PackageManagementSolutionTests.cs" /> <Compile Include="Src\PackageManagementSolutionTests.cs" />
<Compile Include="Src\PackageRepositoryCacheTests.cs" /> <Compile Include="Src\PackageRepositoryCacheTests.cs" />
<Compile Include="Src\RegisteredProjectTemplatePackageSourcesTests.cs" /> <Compile Include="Src\RegisteredProjectTemplatePackageSourcesTests.cs" />
<Compile Include="Src\Scripting\ConsoleInitializerTests.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsConsoleTests.cs" /> <Compile Include="Src\Scripting\PackageInitializationScriptsConsoleTests.cs" />
<Compile Include="Src\Scripting\PackageInitializationScriptsTests.cs" /> <Compile Include="Src\Scripting\PackageInitializationScriptsTests.cs" />
<Compile Include="Src\Scripting\PackageManagementConsoleHostProviderTests.cs" /> <Compile Include="Src\Scripting\PackageManagementConsoleHostProviderTests.cs" />
@ -300,6 +304,7 @@
<Compile Include="Src\UpdatePackageActionTests.cs" /> <Compile Include="Src\UpdatePackageActionTests.cs" />
<Compile Include="Src\UpdatePackageInAllProjectsTests.cs" /> <Compile Include="Src\UpdatePackageInAllProjectsTests.cs" />
<Compile Include="Src\ViewModelBaseTests.cs" /> <Compile Include="Src\ViewModelBaseTests.cs" />
<Compile Include="Src\VisualStudio\ComponentModelTests.cs" />
<Compile Include="Src\VisualStudio\FlavoredProjectTests.cs" /> <Compile Include="Src\VisualStudio\FlavoredProjectTests.cs" />
<Compile Include="Src\VisualStudio\PackageTests.cs" /> <Compile Include="Src\VisualStudio\PackageTests.cs" />
<Compile Include="Src\VisualStudio\SVsExtensionManagerTests.cs" /> <Compile Include="Src\VisualStudio\SVsExtensionManagerTests.cs" />

7
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementConsoleHost.cs

@ -129,5 +129,12 @@ namespace PackageManagement.Tests.Helpers
PackageSourcePassedToGetRepository = packageSource; PackageSourcePassedToGetRepository = packageSource;
return FakePackageRepository; return FakePackageRepository;
} }
public bool IsSetDefaultRunspaceCalled;
public void SetDefaultRunspace()
{
IsSetDefaultRunspaceCalled = true;
}
} }
} }

7
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePowerShellHost.cs

@ -64,5 +64,12 @@ namespace PackageManagement.Tests.Helpers
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public bool IsSetDefaultRunspaceCalled;
public void SetDefaultRunspace()
{
IsSetDefaultRunspaceCalled = true;
}
} }
} }

33
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/ConsoleInitializerTests.cs

@ -0,0 +1,33 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Scripting;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests.Scripting
{
[TestFixture]
public class ConsoleInitializerTests
{
ConsoleInitializer initializer;
FakePackageManagementConsoleHost fakeConsoleHost;
void CreateConsoleInitializer()
{
fakeConsoleHost = new FakePackageManagementConsoleHost();
initializer = new ConsoleInitializer(fakeConsoleHost);
}
[Test]
public void Initialize_RunInitializeTask_SetsDefaultRunspaceForConsoleHost()
{
CreateConsoleInitializer();
initializer.Initialize().Result();
Assert.IsTrue(fakeConsoleHost.IsSetDefaultRunspaceCalled);
}
}
}

11
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs

@ -647,5 +647,16 @@ namespace PackageManagement.Tests.Scripting
Assert.AreEqual(expectedPackageSource, packageSource); Assert.AreEqual(expectedPackageSource, packageSource);
} }
[Test]
public void SetDefaultRunspace_AfterHostIsRun_SetsDefaultRunspaceOnPowershellHost()
{
CreateHost();
RunHost();
host.SetDefaultRunspace();
Assert.IsTrue(powerShellHost.IsSetDefaultRunspaceCalled);
}
} }
} }

34
src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/ComponentModelTests.cs

@ -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 ICSharpCode.PackageManagement.VisualStudio;
using NuGetConsole;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests.VisualStudio
{
[TestFixture]
public class ComponentModelTests
{
ComponentModel model;
FakePackageManagementConsoleHost fakeConsoleHost;
void CreateComponentModel()
{
fakeConsoleHost = new FakePackageManagementConsoleHost();
model = new ComponentModel(fakeConsoleHost);
}
[Test]
public void GetService_GetIConsoleInitializer_ReturnsConsoleInitializer()
{
CreateComponentModel();
IConsoleInitializer initializer = model.GetService<IConsoleInitializer>();
Assert.IsNotNull(initializer);
}
}
}

27
src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/PackageTests.cs

@ -2,10 +2,13 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using ICSharpCode.Core;
using ICSharpCode.PackageManagement.EnvDTE; using ICSharpCode.PackageManagement.EnvDTE;
using Microsoft.VisualStudio.ComponentModelHost;
using Microsoft.VisualStudio.ExtensionManager; using Microsoft.VisualStudio.ExtensionManager;
using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop; using Microsoft.VisualStudio.Shell.Interop;
using NuGetConsole;
using NUnit.Framework; using NUnit.Framework;
namespace PackageManagement.Tests.VisualStudio namespace PackageManagement.Tests.VisualStudio
@ -13,6 +16,14 @@ namespace PackageManagement.Tests.VisualStudio
[TestFixture] [TestFixture]
public class PackageTests public class PackageTests
{ {
[TestFixtureSetUp]
public void InitFixture()
{
if (!PropertyService.Initialized) {
PropertyService.InitializeService(String.Empty, String.Empty, String.Empty);
}
}
[Test] [Test]
public void GetGlobalService_GetExtensionManagerService_ReturnsExtensionManager() public void GetGlobalService_GetExtensionManagerService_ReturnsExtensionManager()
{ {
@ -44,5 +55,21 @@ namespace PackageManagement.Tests.VisualStudio
Assert.IsInstanceOf(typeof(IVsSolution), solution); Assert.IsInstanceOf(typeof(IVsSolution), solution);
} }
[Test]
public void GetGlobalService_GetSComponentModel_ReturnsSComponentModel()
{
object model = Package.GetGlobalService(typeof(SComponentModel)) as SComponentModel;
Assert.IsInstanceOf(typeof(SComponentModel), model);
}
[Test]
public void GetGlobalService_GetSComponentModel_ReturnsIComponentModel()
{
object model = Package.GetGlobalService(typeof(SComponentModel)) as IComponentModel;
Assert.IsInstanceOf(typeof(IComponentModel), model);
}
} }
} }

Loading…
Cancel
Save