-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOnImportAndRemoveTests.cs
More file actions
112 lines (94 loc) · 3.69 KB
/
Copy pathOnImportAndRemoveTests.cs
File metadata and controls
112 lines (94 loc) · 3.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using System;
using System.Management.Automation;
using System.Reflection;
using System.Runtime.InteropServices;
using DBAClientX.PowerShell;
using Xunit;
public class OnImportAndRemoveTests
{
[Fact]
public void MyResolveEventHandler_ReturnsNullWhenNoMatch()
{
var resolveArgs = new ResolveEventArgs("NonExistingAssembly");
var method = typeof(OnModuleImportAndRemove).GetMethod(
"MyResolveEventHandler",
BindingFlags.NonPublic | BindingFlags.Static);
var result = (Assembly?)method!.Invoke(null, new object?[] { null, resolveArgs });
Assert.Null(result);
}
[Fact]
public void GetSimpleAssemblyName_ParsesDisplayName()
{
var method = typeof(OnModuleImportAndRemove).GetMethod(
"GetSimpleAssemblyName",
BindingFlags.NonPublic | BindingFlags.Static);
var result = (string?)method!.Invoke(null, new object?[] { "System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" });
Assert.Equal("System.Data", result);
}
#if NET5_0_OR_GREATER
[Fact]
public void LoadContext_IsAvailable()
{
Assert.NotNull(OnModuleImportAndRemove.LoadContext);
}
[Fact]
public void OnImportAndRemove_AreIdempotentForDefaultLoadContextResolver()
{
var stateField = typeof(OnModuleImportAndRemove).GetField(
"_defaultAlcResolvingRegistered",
BindingFlags.NonPublic | BindingFlags.Static);
Assert.NotNull(stateField);
stateField!.SetValue(null, 0);
var sut = new OnModuleImportAndRemove();
sut.OnImport();
Assert.Equal(1, stateField.GetValue(null));
sut.OnImport();
Assert.Equal(1, stateField.GetValue(null));
sut.OnRemove(null!);
Assert.Equal(0, stateField.GetValue(null));
sut.OnRemove(null!);
Assert.Equal(0, stateField.GetValue(null));
}
[Fact]
public void GetRuntimeIdentifiers_IncludesUnixFallbackForUnixLikePlatforms()
{
var method = typeof(OnModuleImportAndRemove).GetMethod(
"GetRuntimeIdentifiers",
BindingFlags.NonPublic | BindingFlags.Static,
binder: null,
new[] { typeof(string), typeof(Architecture), typeof(bool), typeof(bool), typeof(bool) },
modifiers: null);
var result = ((IEnumerable<string>)method!.Invoke(null, new object[] { "linux-x64", Architecture.X64, false, false, true })!).ToArray();
Assert.Contains("linux-x64", result);
Assert.Contains("linux", result);
Assert.Contains("unix", result);
}
[Fact]
public void GetCompatibleRuntimeLibraryDirectories_UsesCompatibleTargetFramework()
{
var root = Path.Combine(Path.GetTempPath(), "DbaClientX-" + Guid.NewGuid().ToString("N"));
try
{
Directory.CreateDirectory(Path.Combine(root, "net8.0"));
Directory.CreateDirectory(Path.Combine(root, "net9.0"));
Directory.CreateDirectory(Path.Combine(root, "netstandard2.0"));
var method = typeof(OnModuleImportAndRemove).GetMethod(
"GetCompatibleRuntimeLibraryDirectories",
BindingFlags.NonPublic | BindingFlags.Static);
var result = ((IEnumerable<string>)method!.Invoke(null, new object[] { root })!)
.Select(Path.GetFileName)
.ToArray();
Assert.Equal("net8.0", result[0]);
Assert.DoesNotContain("net9.0", result);
Assert.Contains("netstandard2.0", result);
}
finally
{
if (Directory.Exists(root))
{
Directory.Delete(root, recursive: true);
}
}
}
#endif
}