Skip to content

Commit b434b8e

Browse files
authored
Add more assembly version testing for SharedFx/Targeting pack (#25474)
* Add more assembly version tests packs * Add more tests * Fix test, feedback
1 parent 6cd4d8b commit b434b8e

File tree

2 files changed

+71
-2
lines changed

2 files changed

+71
-2
lines changed

src/Framework/test/SharedFxTests.cs

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
5+
using System.Collections.Generic;
56
using System.IO;
67
using System.Linq;
8+
using System.Reflection;
9+
using System.Reflection.Metadata;
10+
using System.Reflection.PortableExecutable;
711
using Newtonsoft.Json.Linq;
812
using Xunit;
913
using Xunit.Abstractions;
@@ -81,7 +85,7 @@ public void SharedFrameworkContainsExpectedFiles()
8185
}
8286

8387
[Fact]
84-
public void ItContainsValidRuntimeConfigFile()
88+
public void SharedFrameworkContainsValidRuntimeConfigFile()
8589
{
8690
var runtimeConfigFilePath = Path.Combine(_sharedFxRoot, "Microsoft.AspNetCore.App.runtimeconfig.json");
8791

@@ -98,7 +102,7 @@ public void ItContainsValidRuntimeConfigFile()
98102
}
99103

100104
[Fact]
101-
public void ItContainsValidDepsJson()
105+
public void SharedFrameworkContainsValidDepsJson()
102106
{
103107
var depsFilePath = Path.Combine(_sharedFxRoot, "Microsoft.AspNetCore.App.deps.json");
104108

@@ -155,6 +159,46 @@ public void ItContainsValidDepsJson()
155159
}
156160
}
157161

162+
[Fact]
163+
public void SharedFrameworkAssembliesHaveExpectedAssemblyVersions()
164+
{
165+
// Only test managed assemblies
166+
IEnumerable<string> dlls = Directory.GetFiles(_sharedFxRoot, "*.dll", SearchOption.AllDirectories).Where(i => !i.Contains("aspnetcorev2_inprocess"));
167+
Assert.NotEmpty(dlls);
168+
169+
Assert.All(dlls, path =>
170+
{
171+
using var fileStream = File.OpenRead(path);
172+
using var peReader = new PEReader(fileStream, PEStreamOptions.Default);
173+
var reader = peReader.GetMetadataReader(MetadataReaderOptions.Default);
174+
var assemblyDefinition = reader.GetAssemblyDefinition();
175+
176+
// Assembly versions should all match Major.Minor.0.0
177+
Assert.Equal(0, assemblyDefinition.Version.Build);
178+
Assert.Equal(0, assemblyDefinition.Version.Revision);
179+
});
180+
}
181+
182+
[Fact]
183+
public void SharedFrameworkAssemblyReferencesHaveExpectedAssemblyVersions()
184+
{
185+
IEnumerable<string> dlls = Directory.GetFiles(_sharedFxRoot, "*.dll", SearchOption.AllDirectories).Where(i => !i.Contains("aspnetcorev2_inprocess") && !i.Contains("System.Security.Cryptography.Xml", StringComparison.OrdinalIgnoreCase));
186+
Assert.NotEmpty(dlls);
187+
188+
Assert.All(dlls, path =>
189+
{
190+
using var fileStream = File.OpenRead(path);
191+
using var peReader = new PEReader(fileStream, PEStreamOptions.Default);
192+
var reader = peReader.GetMetadataReader(MetadataReaderOptions.Default);
193+
194+
Assert.All(reader.AssemblyReferences, handle =>
195+
{
196+
var reference = reader.GetAssemblyReference(handle);
197+
Assert.Equal(0, reference.Version.Revision);
198+
});
199+
});
200+
}
201+
158202
[Fact]
159203
public void ItContainsVersionFile()
160204
{

src/Framework/test/TargetingPackTests.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,31 @@ public void RefAssembliesHaveExpectedAssemblyVersions()
8989
});
9090
}
9191

92+
[Fact]
93+
public void RefAssemblyReferencesHaveExpectedAssemblyVersions()
94+
{
95+
if (!_isTargetingPackBuilding)
96+
{
97+
return;
98+
}
99+
100+
IEnumerable<string> dlls = Directory.GetFiles(Path.Combine(_targetingPackRoot, "ref", _targetingPackTfm), "*.dll", SearchOption.AllDirectories);
101+
Assert.NotEmpty(dlls);
102+
103+
Assert.All(dlls, path =>
104+
{
105+
using var fileStream = File.OpenRead(path);
106+
using var peReader = new PEReader(fileStream, PEStreamOptions.Default);
107+
var reader = peReader.GetMetadataReader(MetadataReaderOptions.Default);
108+
109+
Assert.All(reader.AssemblyReferences, handle =>
110+
{
111+
var reference = reader.GetAssemblyReference(handle);
112+
Assert.Equal(0, reference.Version.Revision);
113+
});
114+
});
115+
}
116+
92117
[Fact]
93118
public void PackageOverridesContainsCorrectEntries()
94119
{

0 commit comments

Comments
 (0)