Skip to content

Commit e757f27

Browse files
Merge pull request #319 from made-by-karl/referencedAssemblyNames
Fill the ReferencedAssemblyNames Property for all loaded Assemblies
2 parents ac3c399 + 3a031ba commit e757f27

File tree

4 files changed

+18
-15
lines changed

4 files changed

+18
-15
lines changed

ArchUnitNET/Domain/Assembly.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System.Collections.Generic;
22
using System.Linq;
3-
using JetBrains.Annotations;
43

54
namespace ArchUnitNET.Domain
65
{
@@ -10,7 +9,7 @@ public Assembly(
109
string name,
1110
string fullName,
1211
bool isOnlyReferenced,
13-
[CanBeNull] List<string> referencedAssemblyNames
12+
List<string> referencedAssemblyNames
1413
)
1514
{
1615
Name = name;
@@ -23,7 +22,6 @@ [CanBeNull] List<string> referencedAssemblyNames
2322

2423
public string Name { get; }
2524

26-
[CanBeNull]
2725
public List<string> ReferencedAssemblyNames { get; }
2826
public string FullName { get; }
2927

ArchUnitNET/Loader/ArchBuilder.cs

+4-6
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,11 @@ public ArchBuilder()
3838
public IEnumerable<Assembly> Assemblies => _assemblyRegistry.Assemblies;
3939
public IEnumerable<Namespace> Namespaces => _namespaceRegistry.Namespaces;
4040

41-
public void AddAssembly(
42-
[NotNull] AssemblyDefinition moduleAssembly,
43-
bool isOnlyReferenced,
44-
[CanBeNull] IEnumerable<AssemblyNameReference> moduleReferences
45-
)
41+
public void AddAssembly([NotNull] AssemblyDefinition moduleAssembly, bool isOnlyReferenced)
4642
{
47-
var references = moduleReferences?.Select(reference => reference.Name).ToList();
43+
var references = moduleAssembly
44+
.MainModule.AssemblyReferences.Select(reference => reference.Name)
45+
.ToList();
4846

4947
if (!_assemblyRegistry.ContainsAssembly(moduleAssembly.Name.FullName))
5048
{

ArchUnitNET/Loader/ArchLoader.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ private void LoadModule(
128128
var processedAssemblies = new List<AssemblyNameReference> { module.Assembly.Name };
129129
var resolvedModules = new List<ModuleDefinition>();
130130
_assemblyResolver.AddLib(module.Assembly);
131-
_archBuilder.AddAssembly(module.Assembly, false, module.AssemblyReferences);
131+
_archBuilder.AddAssembly(module.Assembly, false);
132132
foreach (var assemblyReference in module.AssemblyReferences)
133133
{
134134
if (includeDependencies && recursive)
@@ -151,7 +151,7 @@ private void LoadModule(
151151
var assemblyDefinition =
152152
_assemblyResolver.Resolve(assemblyReference)
153153
?? throw new AssemblyResolutionException(assemblyReference);
154-
_archBuilder.AddAssembly(assemblyDefinition, false, null);
154+
_archBuilder.AddAssembly(assemblyDefinition, false);
155155
resolvedModules.AddRange(assemblyDefinition.Modules);
156156
}
157157
}
@@ -197,7 +197,7 @@ FilterFunc filterFunc
197197
var filterResult = filterFunc?.Invoke(assemblyDefinition);
198198
if (filterResult?.LoadThisAssembly != false)
199199
{
200-
_archBuilder.AddAssembly(assemblyDefinition, false, null);
200+
_archBuilder.AddAssembly(assemblyDefinition, false);
201201
resolvedModules.AddRange(assemblyDefinition.Modules);
202202
}
203203

ArchUnitNETTests/Loader/ArchLoaderTests.cs

+10-3
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,16 @@ public void SameFullNameInMultipleAssemblies()
6363
[Fact]
6464
public void LoadAssembliesIncludingRecursiveDependencies()
6565
{
66-
var archUnitNetTestArchitectureWithRecursiveDependencies = new ArchLoader()
66+
var architecture = new ArchLoader()
6767
.LoadAssembliesIncludingDependencies(new[] { typeof(BaseClass).Assembly }, true)
6868
.Build();
6969

70-
Assert.True(
71-
archUnitNetTestArchitectureWithRecursiveDependencies.Assemblies.Count() > 100
70+
Assert.True(architecture.Assemblies.Count() > 100);
71+
72+
// Check for well-known assemblies, that ReferencedAssemblyNames is not empty
73+
Assert.All(
74+
architecture.Assemblies.Where(x => x.Name.StartsWith("ArchUnit")),
75+
x => Assert.NotEmpty(x.ReferencedAssemblyNames)
7276
);
7377
}
7478

@@ -85,6 +89,9 @@ public void LoadAssembliesRecursivelyWithCustomFilter()
8589
.Build();
8690

8791
Assert.Equal(3, architecture.Assemblies.Count());
92+
93+
// Check that ReferencedAssemblyNames is not empty
94+
Assert.All(architecture.Assemblies, x => Assert.NotEmpty(x.ReferencedAssemblyNames));
8895
}
8996

9097
[Fact]

0 commit comments

Comments
 (0)