From 70257f7a8452c134b755e99e56ad622646361a2b Mon Sep 17 00:00:00 2001 From: Ashish Aggarwal Date: Thu, 1 Feb 2024 17:16:59 -0500 Subject: [PATCH] add subdir test and comments --- .../PackageItemRootViewModel.cs | 2 +- .../PackageManager/PublishPackageViewModel.cs | 26 +++++++++---------- .../PublishPackageViewModelTests.cs | 22 ++++++++++++++++ test/pkgs/NestedPackage/pkg.json | 19 +++++++++++++- 4 files changed, 54 insertions(+), 15 deletions(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageItemRootViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageItemRootViewModel.cs index 637c3955974..e8133cb67b2 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageItemRootViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageItemRootViewModel.cs @@ -138,7 +138,7 @@ internal void AddChildren(PackageItemRootViewModel item) /// add "dir 3" to "dir2" and then "dir2" to "dir1". /// /// Child item to be added. - internal void AddChild(PackageItemRootViewModel elem) + internal void AddChildRecursively(PackageItemRootViewModel elem) { if (elem.DependencyType.Equals(DependencyType.CustomNode)) return; diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PublishPackageViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PublishPackageViewModel.cs index 27f64e3e436..5af2a9b495c 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PublishPackageViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PublishPackageViewModel.cs @@ -1062,7 +1062,7 @@ private List BindParentToChild(Dictionary GetRootItems(Dictionary GetRootItems(Dictionary /// /// - private bool IsSubPathOfDeep(PackageItemRootViewModel path1, PackageItemRootViewModel path2) + internal bool IsSubPathOfDeep(PackageItemRootViewModel path1, PackageItemRootViewModel path2) { var di1 = new DirectoryInfo(path1.DirectoryName); var di2 = new DirectoryInfo(path2.DirectoryName); @@ -2707,7 +2707,7 @@ internal PackageItemRootViewModel GetPreBuildRootItemViewModel(string publishPat var docItemPreview = new PackageItemRootViewModel(docDir) { isChild = true }; var pkg = new PackageItemRootViewModel(new FileInfo(Path.Combine(rootDir, "pkg.json"))); - rootItemPreview.AddChild(pkg); + rootItemPreview.AddChildRecursively(pkg); foreach (var file in files) { @@ -2717,12 +2717,12 @@ internal PackageItemRootViewModel GetPreBuildRootItemViewModel(string publishPat if (Path.GetDirectoryName(file).EndsWith(PackageDirectoryBuilder.DocumentationDirectoryName)) { var doc = new PackageItemRootViewModel(new FileInfo(Path.Combine(docDir, fileName))); - docItemPreview.AddChild(doc); + docItemPreview.AddChildRecursively(doc); } else if (file.EndsWith(".dyf")) { var dyfPreview = new PackageItemRootViewModel(fileName, Path.Combine(dyfDir, fileName)); - dyfItemPreview.AddChild(dyfPreview); + dyfItemPreview.AddChildRecursively(dyfPreview); } else if (file.EndsWith(".dll") || PackageDirectoryBuilder.IsXmlDocFile(file, files) || PackageDirectoryBuilder.IsDynamoCustomizationFile(file, files)) { @@ -2737,13 +2737,13 @@ internal PackageItemRootViewModel GetPreBuildRootItemViewModel(string publishPat else { var dll = new PackageItemRootViewModel(new FileInfo(Path.Combine(binDir, fileName))); - binItemPreview.AddChild(dll); + binItemPreview.AddChildRecursively(dll); } } else { var extra = new PackageItemRootViewModel(new FileInfo(Path.Combine(extraDir, fileName))); - extraItemPreview.AddChild(extra); + extraItemPreview.AddChildRecursively(extra); } } @@ -2751,13 +2751,13 @@ internal PackageItemRootViewModel GetPreBuildRootItemViewModel(string publishPat { var fileName = Path.GetFileName(docFile); var doc = new PackageItemRootViewModel(new FileInfo(Path.Combine(docDir, fileName))); - docItemPreview.AddChild(doc); + docItemPreview.AddChildRecursively(doc); } - rootItemPreview.AddChild(dyfItemPreview); - rootItemPreview.AddChild(binItemPreview); - rootItemPreview.AddChild(extraItemPreview); - rootItemPreview.AddChild(docItemPreview); + rootItemPreview.AddChildRecursively(dyfItemPreview); + rootItemPreview.AddChildRecursively(binItemPreview); + rootItemPreview.AddChildRecursively(extraItemPreview); + rootItemPreview.AddChildRecursively(docItemPreview); return rootItemPreview; } diff --git a/test/DynamoCoreWpfTests/PublishPackageViewModelTests.cs b/test/DynamoCoreWpfTests/PublishPackageViewModelTests.cs index ec0f7f9cbac..2de82641ae3 100644 --- a/test/DynamoCoreWpfTests/PublishPackageViewModelTests.cs +++ b/test/DynamoCoreWpfTests/PublishPackageViewModelTests.cs @@ -236,5 +236,27 @@ public void PublishingCustomNodeAsNewVersionWorks_SetsPackageInfoCorrectly() { throw new NotImplementedException(); } + + [Test] + public void AssertIsSubPathOfDeep_IsSuccessful() + { + var newPkgVm = new PublishPackageViewModel(this.ViewModel); + + //arrange + Dictionary testDirs = new Dictionary { + { @"C:\Package\bin\Dir1|C:\Package\bin\Dir1\Dir2", true }, + { @"C:\Package\bin\Dir1|C:\Package\bin\Dir1", false }, + { @"C:\Package\bin\Dir1\Dir2\Dir3\Dir4\Dir5\Dir6\Dir7\Dir8\Dir8\Dir9\Dir10|C:\Package\bin\Dir1", false }, + { @"C:\Package\bin\Dir1|C:\Package\bin\Dir1\Dir2\Dir3\Dir4\Dir5\Dir6\Dir7\Dir8\Dir8\Dir9\Dir10", true }, + { @"bin\Dir1|bin\Dir1\Dir2", true }, + }; + + //assert + foreach (var testDir in testDirs) + { + var paths = testDir.Key.Split('|'); + Assert.AreEqual(testDir.Value, newPkgVm.IsSubPathOfDeep(new PackageItemRootViewModel(paths[0]), new PackageItemRootViewModel(paths[1]))); + } + } } } diff --git a/test/pkgs/NestedPackage/pkg.json b/test/pkgs/NestedPackage/pkg.json index 45e5f44a935..468595e5429 100644 --- a/test/pkgs/NestedPackage/pkg.json +++ b/test/pkgs/NestedPackage/pkg.json @@ -1 +1,18 @@ -{"license":"","file_hash":null,"name":"NestedPackage","version":"1.0.0","description":"original package","group":"","keywords":null,"dependencies":[],"contents":"","engine_version":"2.1.0.7840","engine":"dynamo","engine_metadata":"","site_url":"","repository_url":"","contains_binaries":true,"node_libraries":["Package, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"]} \ No newline at end of file +{ + "license": "", + "file_hash": null, + "name": "NestedPackage", + "version": "1.0.0", + "description": "original package", + "group": "", + "keywords": null, + "dependencies": [], + "contents": "", + "engine_version": "2.1.0.7840", + "engine": "dynamo", + "engine_metadata": "", + "site_url": "", + "repository_url": "", + "contains_binaries": true, + "node_libraries": [] +} \ No newline at end of file