Skip to content

Commit 60ed340

Browse files
committed
Adjust help text, LICENSE and NOTICE, move to nuget packages and cleanup old stuff.
1 parent 430e7b0 commit 60ed340

15 files changed

+647
-39
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ MigrationBackup/
1818

1919
# MacOS
2020
.DS_Store
21+
packed/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp3.1</TargetFramework>
5+
6+
<IsPackable>false</IsPackable>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
11+
<PackageReference Include="MSTest.TestAdapter" Version="2.1.2" />
12+
<PackageReference Include="MSTest.TestFramework" Version="2.1.2" />
13+
<PackageReference Include="coverlet.collector" Version="1.3.0">
14+
<PrivateAssets>all</PrivateAssets>
15+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
16+
</PackageReference>
17+
<PackageReference Include="System.Reflection.Emit" Version="4.7.0" />
18+
</ItemGroup>
19+
20+
<ItemGroup>
21+
<ProjectReference Include="..\CompatibilityChecker.Library\CompatibilityChecker.Library.csproj" />
22+
</ItemGroup>
23+
24+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
namespace CompatibilityCheckerTests
2+
{
3+
using System.Collections.ObjectModel;
4+
using System.Reflection;
5+
using System.Reflection.Emit;
6+
using CompatibilityChecker.Library;
7+
using Microsoft.VisualStudio.TestTools.UnitTesting;
8+
9+
[TestClass]
10+
public class TestAssemblyAnalysis
11+
{
12+
[TestMethod]
13+
public void TestAssemblyNameMustNotBeChanged_Pass()
14+
{
15+
AssemblyName referenceName = new AssemblyName("Test.Assembly");
16+
AssemblyBuilder referenceAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(referenceName, AssemblyBuilderAccess.ReflectionOnly);
17+
referenceAssemblyBuilder.Save("Test.Assembly.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
18+
19+
AssemblyName newAssemblyName = new AssemblyName("Test.Assembly");
20+
AssemblyBuilder newAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(newAssemblyName, AssemblyBuilderAccess.ReflectionOnly);
21+
newAssemblyBuilder.Save("Test.Assembly.V2.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
22+
23+
ReadOnlyCollection<Message> messages = TestUtility.AnalyzeAssemblies("Test.Assembly.dll", "Test.Assembly.V2.dll");
24+
Assert.AreEqual(0, messages.Count);
25+
}
26+
27+
[TestMethod]
28+
public void TestAssemblyNameMustNotBeChanged_Fail()
29+
{
30+
AssemblyName referenceName = new AssemblyName("Test.Assembly");
31+
AssemblyBuilder referenceAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(referenceName, AssemblyBuilderAccess.ReflectionOnly);
32+
referenceAssemblyBuilder.Save("Test.Assembly.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
33+
34+
AssemblyName newAssemblyName = new AssemblyName("Test.Assembly.V2");
35+
AssemblyBuilder newAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(newAssemblyName, AssemblyBuilderAccess.ReflectionOnly);
36+
newAssemblyBuilder.Save("Test.Assembly.V2.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
37+
38+
ReadOnlyCollection<Message> messages = TestUtility.AnalyzeAssemblies("Test.Assembly.dll", "Test.Assembly.V2.dll");
39+
Assert.AreEqual(1, messages.Count);
40+
Assert.AreEqual("Error AssemblyNameMustNotBeChanged: The simple name of an assembly cannot change for 'Test.Assembly'.", messages[0].ToString());
41+
}
42+
43+
[TestMethod]
44+
public void TestPublicKeyMustNotBeChanged_PassMissing()
45+
{
46+
AssemblyName referenceName = new AssemblyName("Test.Assembly");
47+
AssemblyBuilder referenceAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(referenceName, AssemblyBuilderAccess.ReflectionOnly);
48+
referenceAssemblyBuilder.Save("Test.Assembly.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
49+
50+
AssemblyName newAssemblyName = new AssemblyName("Test.Assembly");
51+
AssemblyBuilder newAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(newAssemblyName, AssemblyBuilderAccess.ReflectionOnly);
52+
newAssemblyBuilder.Save("Test.Assembly.V2.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
53+
54+
ReadOnlyCollection<Message> messages = TestUtility.AnalyzeAssemblies("Test.Assembly.dll", "Test.Assembly.V2.dll");
55+
Assert.AreEqual(0, messages.Count);
56+
}
57+
58+
[TestMethod]
59+
public void TestPublicKeyMustNotBeChanged_PassUnchanged()
60+
{
61+
AssemblyName referenceName = new AssemblyName("Test.Assembly");
62+
referenceName.KeyPair = TestUtility.GenerateStrongNameKeyPair();
63+
AssemblyBuilder referenceAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(referenceName, AssemblyBuilderAccess.ReflectionOnly);
64+
referenceAssemblyBuilder.Save("Test.Assembly.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
65+
66+
AssemblyName newAssemblyName = new AssemblyName("Test.Assembly");
67+
newAssemblyName.KeyPair = referenceName.KeyPair;
68+
AssemblyBuilder newAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(newAssemblyName, AssemblyBuilderAccess.ReflectionOnly);
69+
newAssemblyBuilder.Save("Test.Assembly.V2.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
70+
71+
ReadOnlyCollection<Message> messages = TestUtility.AnalyzeAssemblies("Test.Assembly.dll", "Test.Assembly.V2.dll");
72+
Assert.AreEqual(0, messages.Count);
73+
}
74+
75+
[TestMethod]
76+
public void TestPublicKeyMustNotBeChanged_PassAdded()
77+
{
78+
AssemblyName referenceName = new AssemblyName("Test.Assembly");
79+
AssemblyBuilder referenceAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(referenceName, AssemblyBuilderAccess.ReflectionOnly);
80+
referenceAssemblyBuilder.Save("Test.Assembly.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
81+
82+
AssemblyName newAssemblyName = new AssemblyName("Test.Assembly");
83+
newAssemblyName.KeyPair = TestUtility.GenerateStrongNameKeyPair();
84+
AssemblyBuilder newAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(newAssemblyName, AssemblyBuilderAccess.ReflectionOnly);
85+
newAssemblyBuilder.Save("Test.Assembly.V2.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
86+
87+
ReadOnlyCollection<Message> messages = TestUtility.AnalyzeAssemblies("Test.Assembly.dll", "Test.Assembly.V2.dll");
88+
Assert.AreEqual(0, messages.Count);
89+
}
90+
91+
[TestMethod]
92+
public void TestPublicKeyMustNotBeChanged_Fail()
93+
{
94+
AssemblyName referenceName = new AssemblyName("Test.Assembly");
95+
referenceName.KeyPair = TestUtility.GenerateStrongNameKeyPair();
96+
AssemblyBuilder referenceAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(referenceName, AssemblyBuilderAccess.ReflectionOnly);
97+
referenceAssemblyBuilder.Save("Test.Assembly.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
98+
99+
AssemblyName newAssemblyName = new AssemblyName("Test.Assembly");
100+
newAssemblyName.KeyPair = TestUtility.GenerateStrongNameKeyPair();
101+
AssemblyBuilder newAssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(newAssemblyName, AssemblyBuilderAccess.ReflectionOnly);
102+
newAssemblyBuilder.Save("Test.Assembly.V2.dll", PortableExecutableKinds.ILOnly, ImageFileMachine.AMD64);
103+
104+
ReadOnlyCollection<Message> messages = TestUtility.AnalyzeAssemblies("Test.Assembly.dll", "Test.Assembly.V2.dll");
105+
Assert.AreEqual(1, messages.Count);
106+
Assert.AreEqual("Error PublicKeyMustNotBeChanged: The public key of a strong-named assembly 'Test.Assembly' cannot change.", messages[0].ToString());
107+
}
108+
}
109+
}

0 commit comments

Comments
 (0)