Fix AssemblyLoadContext fixture

Resolves #676.
This commit is contained in:
Andrew Schwartzmeyer
2016-03-17 17:36:06 -07:00
parent 6ec3dc308e
commit b820817c84
2 changed files with 27 additions and 6 deletions
@@ -0,0 +1,26 @@
using Xunit;
using System;
using System.Management.Automation;
using Microsoft.PowerShell.Linux.Host;
// This collection fixture initializes Core PowerShell's AssemblyLoadContext once and only
// once. Attempting to initialize in a class level fixture will cause multiple
// initializations, resulting in test failure due to "Binding model is already locked for
// the AppDomain and cannot be reset".
namespace PSTests
{
public class AssemblyLoadContextFixture
{
public AssemblyLoadContextFixture()
{
// Initialize the Core PowerShell AssemblyLoadContext
PowerShellAssemblyLoadContextInitializer.SetPowerShellAssemblyLoadContext(AppContext.BaseDirectory);
}
}
[CollectionDefinition("AssemblyLoadContext")]
public class AssemblyLoadContextCollection : ICollectionFixture<AssemblyLoadContextFixture>
{
// nothing to do but satisfy the interface
}
}
+1 -6
View File
@@ -9,17 +9,12 @@ namespace PSTests
// NOTE: do not call AddCommand("out-host") after invoking or MergeMyResults,
// otherwise Invoke will not return any objects
[Collection("AssemblyLoadContext")]
public class RunspaceTests
{
private static int count = 3;
private static string script = String.Format($"get-process | select-object -first {count}");
// Initialize the Core PowerShell AssemblyLoadContext
public RunspaceTests()
{
PowerShellAssemblyLoadContextInitializer.SetPowerShellAssemblyLoadContext(AppContext.BaseDirectory);
}
[Fact]
public void TestRunspaceWithPipeline()
{