From 316ec78b9a2e168ddec5be6c07ab24f3c74ff4bd Mon Sep 17 00:00:00 2001 From: Roberto T <61755417+RobertGlobant20@users.noreply.github.com> Date: Wed, 15 Jul 2026 12:01:25 -0600 Subject: [PATCH] DYN-9702: Null-guard PackageInfo comparison in PackageLoaderTests The shipped definitions folder (added in DYN-9702) now loads Curve_Validate.dyf as a non-package custom node at model startup, leaving PackageInfo null in CustomNodeManager.NodeInfos. The LINQ predicates in LoadingCustomNodeFromPackageSetsNodeInfoPackageInfoCorrectly and PlacingCustomNodeInstanceFromPackageRetainsCorrectPackageInfoState called PackageInfo.Equals on every entry, throwing a NullReferenceException on the non-package node and failing both tests deterministically. Add a null guard so non-package nodes are skipped before the Equals comparison. Co-Authored-By: Claude Opus 4.8 (1M context) --- test/Libraries/PackageManagerTests/PackageLoaderTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/Libraries/PackageManagerTests/PackageLoaderTests.cs b/test/Libraries/PackageManagerTests/PackageLoaderTests.cs index d881bf233b6..3f927f0df61 100644 --- a/test/Libraries/PackageManagerTests/PackageLoaderTests.cs +++ b/test/Libraries/PackageManagerTests/PackageLoaderTests.cs @@ -595,7 +595,7 @@ public void LoadingCustomNodeFromPackageSetsNodeInfoPackageInfoCorrectly() var matchingNodes = CurrentDynamoModel.CustomNodeManager.NodeInfos.Where(x => { Console.WriteLine($"val {x.Value}, name {x.Value.Name}, pkginfo {x.Value.PackageInfo}, packagemember {x.Value.IsPackageMember}"); - return x.Value.PackageInfo.Equals(packageInfo); + return x.Value.PackageInfo != null && x.Value.PackageInfo.Equals(packageInfo); } ).ToList(); //the node should have the correct package info and should be marked a packageMember. @@ -763,7 +763,7 @@ public void PlacingCustomNodeInstanceFromPackageRetainsCorrectPackageInfoState() var matchingNodes = CurrentDynamoModel.CustomNodeManager.NodeInfos.Where(x => { Console.WriteLine($"val{x.Value}, name{x.Value.Name}, pkginfo{x.Value.PackageInfo}, packagemember{x.Value.IsPackageMember}"); - return x.Value.PackageInfo.Equals(packageInfo); + return x.Value.PackageInfo != null && x.Value.PackageInfo.Equals(packageInfo); } ).ToList(); //the node should have the correct package info and should be marked a packageMember. @@ -773,7 +773,7 @@ public void PlacingCustomNodeInstanceFromPackageRetainsCorrectPackageInfoState() var cninst = CurrentDynamoModel.CustomNodeManager.CreateCustomNodeInstance(matchingNodes.FirstOrDefault().Key, null, true); this.CurrentDynamoModel.CurrentWorkspace.AddAndRegisterNode(cninst); - matchingNodes = CurrentDynamoModel.CustomNodeManager.NodeInfos.Where(x => x.Value.PackageInfo.Equals(packageInfo)).ToList(); + matchingNodes = CurrentDynamoModel.CustomNodeManager.NodeInfos.Where(x => x.Value.PackageInfo != null && x.Value.PackageInfo.Equals(packageInfo)).ToList(); Assert.AreEqual(1, matchingNodes.Count); Assert.IsTrue(matchingNodes.All(x => x.Value.IsPackageMember == true));