From a0dbbc0bb6ca597e79f8019da28b3dd507feacaa Mon Sep 17 00:00:00 2001 From: Marco Fogliatto <2962955+mfogliatto@users.noreply.github.com> Date: Sat, 20 Dec 2025 08:30:32 +0100 Subject: [PATCH] Fix AssemblyName rules loading only picking up first rule of set --- .../AssemblyNameViolationDetectorTests.cs | 31 +++++++++++++++++++ .../AssemblyNameViolationDetector.cs | 1 - 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/ReferenceCop.Tests/Detectors/AssemblyNameViolationDetectorTests.cs b/src/ReferenceCop.Tests/Detectors/AssemblyNameViolationDetectorTests.cs index b6dca52..218a81d 100644 --- a/src/ReferenceCop.Tests/Detectors/AssemblyNameViolationDetectorTests.cs +++ b/src/ReferenceCop.Tests/Detectors/AssemblyNameViolationDetectorTests.cs @@ -12,6 +12,37 @@ [TestClass] public class AssemblyNameViolationDetectorTests { + [TestMethod] + public void GetViolationsFrom_WhenMultipleRulesDefined_LoadsAndDetectsAllRules() + { + // Arrange. + const string assembly1 = "System.Xml"; + const string assembly2 = "System.Text"; + const string assembly3 = "System.Data"; + var config = new ReferenceCopConfigBuilder() + .WithAssemblyNameRule(assembly1) + .WithAssemblyNameRule(assembly2) + .WithAssemblyNameRule(assembly3) + .Build(); + var detector = new AssemblyNameViolationDetector(new ExactMatchComparer(), config); + var references = new[] + { + ReferenceEvaluationContextFactory.Create(new AssemblyIdentity(assembly1)), + ReferenceEvaluationContextFactory.Create(new AssemblyIdentity(assembly2)), + ReferenceEvaluationContextFactory.Create(new AssemblyIdentity(assembly3)), + ReferenceEvaluationContextFactory.Create(new AssemblyIdentity("System.IO")), + }; + + // Act + var violations = detector.GetViolationsFrom(references).ToList(); + + // Assert + violations.Should().HaveCount(3, "because all three rules should be loaded and detected"); + violations.Should().Contain(v => v.ReferenceName == assembly1); + violations.Should().Contain(v => v.ReferenceName == assembly2); + violations.Should().Contain(v => v.ReferenceName == assembly3); + } + [TestMethod] public void GetViolationsFrom_WhenNoRules_ReturnsEmpty() { diff --git a/src/ReferenceCop/Detectors/AssemblyNameViolationDetector.cs b/src/ReferenceCop/Detectors/AssemblyNameViolationDetector.cs index 0643eb2..14b58d8 100644 --- a/src/ReferenceCop/Detectors/AssemblyNameViolationDetector.cs +++ b/src/ReferenceCop/Detectors/AssemblyNameViolationDetector.cs @@ -51,7 +51,6 @@ private void LoadRulesFrom(ReferenceCopConfig config) try { this.rules.Add(rule.Pattern, rule); - break; } catch (ArgumentException) {