From 7e4c83cdb565e84417a91db5a002e2bd8b8c11f4 Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Thu, 28 Jul 2022 18:14:25 +0200 Subject: [PATCH 01/11] fixed paths duplicates --- .../ExtensionFramework/TestPluginCache.cs | 2 +- .../InProcDataCollectionExtensionManager.cs | 8 ++++---- ...ProcDataCollectionExtensionManagerTests.cs | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.TestPlatform.Common/ExtensionFramework/TestPluginCache.cs b/src/Microsoft.TestPlatform.Common/ExtensionFramework/TestPluginCache.cs index 337bc7c60e..22f0af4419 100644 --- a/src/Microsoft.TestPlatform.Common/ExtensionFramework/TestPluginCache.cs +++ b/src/Microsoft.TestPlatform.Common/ExtensionFramework/TestPluginCache.cs @@ -50,7 +50,7 @@ public class TestPluginCache /// /// Initializes a new instance of the class. /// - protected TestPluginCache() + public TestPluginCache() { _filterableExtensionPaths = new List(); _unfilterableExtensionPaths = new List(); diff --git a/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs b/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs index 413db1d17a..f5cb6b9203 100644 --- a/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs +++ b/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs @@ -29,7 +29,7 @@ internal class InProcDataCollectionExtensionManager private readonly IDataCollectionSink _inProcDataCollectionSink; private readonly string? _defaultCodeBase; - private readonly List _codeBasePaths; + internal readonly HashSet CodeBasePaths; private readonly IFileHelper _fileHelper; internal IDictionary InProcDataCollectors; @@ -61,13 +61,13 @@ protected InProcDataCollectionExtensionManager(string? runSettings, ITestEventsP _inProcDataCollectionSink = new InProcDataCollectionSink(); _defaultCodeBase = defaultCodeBase; _fileHelper = fileHelper; - _codeBasePaths = new List { _defaultCodeBase }; + CodeBasePaths = new HashSet { _defaultCodeBase }; // Get Datacollector code base paths from test plugin cache var extensionPaths = testPluginCache.GetExtensionPaths(DataCollectorEndsWithPattern); foreach (var extensionPath in extensionPaths) { - _codeBasePaths.Add(Path.GetDirectoryName(extensionPath)!); + CodeBasePaths.Add(Path.GetDirectoryName(extensionPath)!); } // Initialize InProcDataCollectors @@ -248,7 +248,7 @@ private string GetCodebase(string codeBase) return codeBase; } - foreach (var extensionPath in _codeBasePaths) + foreach (var extensionPath in CodeBasePaths) { if (extensionPath is null) { diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index 769617af26..f35468a08c 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -53,6 +53,25 @@ public InProcDataCollectionExtensionManagerTests() _inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, _testPluginCache, _mockFileHelper.Object); } + [TestMethod] + public void CheckExtensionPathsDuplicates() + { + var testPluginCache = new TestPluginCache(); + testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll" }, false); + testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll", @"c:\test2\Collector.dll" }, true); + + var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, testPluginCache, _mockFileHelper.Object); + + Assert.AreEqual(3, inProcDataCollectionExtensionManager.CodeBasePaths.Count); // CodeBasePaths contains the two extensions(after removing Deduplicates) and the _defaultCodebase + + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(_defaultCodebase)); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test1\Collector.dll"))); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test2\Collector.dll"))); + + + } + + [TestMethod] public void InProcDataCollectionExtensionManagerShouldLoadsDataCollectorsFromRunSettings() { From 9308a55ce149c7fcdc69de63f53607c5181d0434 Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Thu, 28 Jul 2022 18:23:54 +0200 Subject: [PATCH 02/11] added comment --- .../DataCollection/InProcDataCollectionExtensionManagerTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index f35468a08c..851e180af2 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -57,6 +57,7 @@ public InProcDataCollectionExtensionManagerTests() public void CheckExtensionPathsDuplicates() { var testPluginCache = new TestPluginCache(); + // the boolean argument refers too adding the pathes to which list(we have two lists)and the bug happend when we merge the two lists and they have the same path testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll" }, false); testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll", @"c:\test2\Collector.dll" }, true); From ffd6d431933ed834fb52880f127250e49d904000 Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Thu, 28 Jul 2022 18:27:49 +0200 Subject: [PATCH 03/11] fix the comments --- .../InProcDataCollectionExtensionManagerTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index 851e180af2..266956d1d1 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -57,13 +57,13 @@ public InProcDataCollectionExtensionManagerTests() public void CheckExtensionPathsDuplicates() { var testPluginCache = new TestPluginCache(); - // the boolean argument refers too adding the pathes to which list(we have two lists)and the bug happend when we merge the two lists and they have the same path + // the boolean argument refers to adding the paths to which list(we have two lists)and the duplicate happened when we merged the two lists and they had the same path testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll" }, false); testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll", @"c:\test2\Collector.dll" }, true); var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, testPluginCache, _mockFileHelper.Object); - Assert.AreEqual(3, inProcDataCollectionExtensionManager.CodeBasePaths.Count); // CodeBasePaths contains the two extensions(after removing Deduplicates) and the _defaultCodebase + Assert.AreEqual(3, inProcDataCollectionExtensionManager.CodeBasePaths.Count); // "CodeBasePaths" contains the two extensions(after removing duplicates) and the "_defaultCodebase" Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(_defaultCodebase)); Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test1\Collector.dll"))); From e99d5eb29e48314e9fcd152737f88537417dfd2a Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Fri, 29 Jul 2022 12:11:59 +0200 Subject: [PATCH 04/11] applied PR's comments --- .../ExtensionFramework/TestPluginCache.cs | 2 +- .../InProcDataCollectionExtensionManager.cs | 5 +++-- .../InProcDataCollectionExtensionManagerTests.cs | 9 ++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Microsoft.TestPlatform.Common/ExtensionFramework/TestPluginCache.cs b/src/Microsoft.TestPlatform.Common/ExtensionFramework/TestPluginCache.cs index 22f0af4419..337bc7c60e 100644 --- a/src/Microsoft.TestPlatform.Common/ExtensionFramework/TestPluginCache.cs +++ b/src/Microsoft.TestPlatform.Common/ExtensionFramework/TestPluginCache.cs @@ -50,7 +50,7 @@ public class TestPluginCache /// /// Initializes a new instance of the class. /// - public TestPluginCache() + protected TestPluginCache() { _filterableExtensionPaths = new List(); _unfilterableExtensionPaths = new List(); diff --git a/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs b/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs index f5cb6b9203..850cfd541c 100644 --- a/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs +++ b/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs @@ -29,7 +29,7 @@ internal class InProcDataCollectionExtensionManager private readonly IDataCollectionSink _inProcDataCollectionSink; private readonly string? _defaultCodeBase; - internal readonly HashSet CodeBasePaths; + internal /* for testing purposes */ readonly HashSet CodeBasePaths; private readonly IFileHelper _fileHelper; internal IDictionary InProcDataCollectors; @@ -61,7 +61,8 @@ protected InProcDataCollectionExtensionManager(string? runSettings, ITestEventsP _inProcDataCollectionSink = new InProcDataCollectionSink(); _defaultCodeBase = defaultCodeBase; _fileHelper = fileHelper; - CodeBasePaths = new HashSet { _defaultCodeBase }; + CodeBasePaths = new HashSet(StringComparer.OrdinalIgnoreCase); + CodeBasePaths.Add(_defaultCodeBase); // Get Datacollector code base paths from test plugin cache var extensionPaths = testPluginCache.GetExtensionPaths(DataCollectorEndsWithPattern); diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index 266956d1d1..a00b90f85a 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -8,6 +8,7 @@ using System.Reflection; using System.Xml; +using Microsoft.TestPlatform.TestUtilities; using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; @@ -54,11 +55,11 @@ public InProcDataCollectionExtensionManagerTests() } [TestMethod] - public void CheckExtensionPathsDuplicates() + public void CodeBasePathsAreDeduplicated() { - var testPluginCache = new TestPluginCache(); + var testPluginCache = new TestableTestPluginCache(); // the boolean argument refers to adding the paths to which list(we have two lists)and the duplicate happened when we merged the two lists and they had the same path - testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll" }, false); + testPluginCache.UpdateExtensions(new List { @"c:\Test1\Collector.dll" }, false); testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll", @"c:\test2\Collector.dll" }, true); var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, testPluginCache, _mockFileHelper.Object); @@ -68,8 +69,6 @@ public void CheckExtensionPathsDuplicates() Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(_defaultCodebase)); Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test1\Collector.dll"))); Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test2\Collector.dll"))); - - } From 0cdabe3a04db520d942adf48e0ae161b302e2a94 Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Fri, 29 Jul 2022 12:20:46 +0200 Subject: [PATCH 05/11] use defaultCodeBase as null --- .../InProcDataCollectionExtensionManagerTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index a00b90f85a..dece84177f 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -62,11 +62,11 @@ public void CodeBasePathsAreDeduplicated() testPluginCache.UpdateExtensions(new List { @"c:\Test1\Collector.dll" }, false); testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll", @"c:\test2\Collector.dll" }, true); - var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, testPluginCache, _mockFileHelper.Object); + var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, null, testPluginCache, _mockFileHelper.Object); Assert.AreEqual(3, inProcDataCollectionExtensionManager.CodeBasePaths.Count); // "CodeBasePaths" contains the two extensions(after removing duplicates) and the "_defaultCodebase" - Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(_defaultCodebase)); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(null)); Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test1\Collector.dll"))); Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test2\Collector.dll"))); } From cf35f7d7cf5fefac0e03ec6de7e4f3411fe69368 Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Fri, 29 Jul 2022 12:23:26 +0200 Subject: [PATCH 06/11] initiate the hashset by _defaultCodeBase --- .../DataCollection/InProcDataCollectionExtensionManager.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs b/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs index 850cfd541c..461274011f 100644 --- a/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs +++ b/src/Microsoft.TestPlatform.CrossPlatEngine/DataCollection/InProcDataCollectionExtensionManager.cs @@ -61,8 +61,7 @@ protected InProcDataCollectionExtensionManager(string? runSettings, ITestEventsP _inProcDataCollectionSink = new InProcDataCollectionSink(); _defaultCodeBase = defaultCodeBase; _fileHelper = fileHelper; - CodeBasePaths = new HashSet(StringComparer.OrdinalIgnoreCase); - CodeBasePaths.Add(_defaultCodeBase); + CodeBasePaths = new HashSet(StringComparer.OrdinalIgnoreCase) { _defaultCodeBase }; // Get Datacollector code base paths from test plugin cache var extensionPaths = testPluginCache.GetExtensionPaths(DataCollectorEndsWithPattern); From fe1082de2cc05dcab4dff57c8d97650371e15e0d Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Fri, 29 Jul 2022 15:57:05 +0200 Subject: [PATCH 07/11] rename the test method --- .../InProcDataCollectionExtensionManagerTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index dece84177f..cff8ed1906 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -55,11 +55,11 @@ public InProcDataCollectionExtensionManagerTests() } [TestMethod] - public void CodeBasePathsAreDeduplicated() + public void CodeBasePathsAreDeduplicatedWithCaseIgnoring() { var testPluginCache = new TestableTestPluginCache(); // the boolean argument refers to adding the paths to which list(we have two lists)and the duplicate happened when we merged the two lists and they had the same path - testPluginCache.UpdateExtensions(new List { @"c:\Test1\Collector.dll" }, false); + testPluginCache.UpdateExtensions(new List { @"C:\TEST1\Collector.dll" }, false); testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll", @"c:\test2\Collector.dll" }, true); var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, null, testPluginCache, _mockFileHelper.Object); From fab90e83f3a4f821f47eb98d5f78d721e91a6500 Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Fri, 29 Jul 2022 17:11:02 +0200 Subject: [PATCH 08/11] remove null parameter --- .../InProcDataCollectionExtensionManagerTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index cff8ed1906..c4f5eb68e7 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -62,11 +62,11 @@ public void CodeBasePathsAreDeduplicatedWithCaseIgnoring() testPluginCache.UpdateExtensions(new List { @"C:\TEST1\Collector.dll" }, false); testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll", @"c:\test2\Collector.dll" }, true); - var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, null, testPluginCache, _mockFileHelper.Object); + var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, testPluginCache, _mockFileHelper.Object); Assert.AreEqual(3, inProcDataCollectionExtensionManager.CodeBasePaths.Count); // "CodeBasePaths" contains the two extensions(after removing duplicates) and the "_defaultCodebase" - Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(null)); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(_defaultCodebase)); Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test1\Collector.dll"))); Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test2\Collector.dll"))); } From ed20417f08108e540ea84ea2c4b06bb5f2234480 Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Fri, 29 Jul 2022 18:12:42 +0200 Subject: [PATCH 09/11] change paths --- .../InProcDataCollectionExtensionManagerTests.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index c4f5eb68e7..4d6b46b04c 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -59,16 +59,16 @@ public void CodeBasePathsAreDeduplicatedWithCaseIgnoring() { var testPluginCache = new TestableTestPluginCache(); // the boolean argument refers to adding the paths to which list(we have two lists)and the duplicate happened when we merged the two lists and they had the same path - testPluginCache.UpdateExtensions(new List { @"C:\TEST1\Collector.dll" }, false); - testPluginCache.UpdateExtensions(new List { @"c:\test1\Collector.dll", @"c:\test2\Collector.dll" }, true); + testPluginCache.UpdateExtensions(new List { @"C:\DEDUPLICATINGWITHCASEIGNORING1\Collector.dll" }, false); + testPluginCache.UpdateExtensions(new List { @"c:\DeduplicatingWithCaseIgnoring1\Collector.dll", @"c:\DeduplicatingWithCaseIgnoring2\Collector.dll" }, true); var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, testPluginCache, _mockFileHelper.Object); Assert.AreEqual(3, inProcDataCollectionExtensionManager.CodeBasePaths.Count); // "CodeBasePaths" contains the two extensions(after removing duplicates) and the "_defaultCodebase" Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(_defaultCodebase)); - Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test1\Collector.dll"))); - Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\test2\Collector.dll"))); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\DeduplicatingWithCaseIgnoring1\Collector.dll"))); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\DeduplicatingWithCaseIgnoring2\Collector.dll"))); } From 83fd45a9b55147fbc9ab39aac5851a9687842b85 Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Mon, 1 Aug 2022 10:57:35 +0200 Subject: [PATCH 10/11] use null in codebase --- .../InProcDataCollectionExtensionManagerTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index 4d6b46b04c..c67d6236ba 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -62,11 +62,11 @@ public void CodeBasePathsAreDeduplicatedWithCaseIgnoring() testPluginCache.UpdateExtensions(new List { @"C:\DEDUPLICATINGWITHCASEIGNORING1\Collector.dll" }, false); testPluginCache.UpdateExtensions(new List { @"c:\DeduplicatingWithCaseIgnoring1\Collector.dll", @"c:\DeduplicatingWithCaseIgnoring2\Collector.dll" }, true); - var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, testPluginCache, _mockFileHelper.Object); + var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, null, testPluginCache, _mockFileHelper.Object); Assert.AreEqual(3, inProcDataCollectionExtensionManager.CodeBasePaths.Count); // "CodeBasePaths" contains the two extensions(after removing duplicates) and the "_defaultCodebase" - Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(_defaultCodebase)); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(null)); Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\DeduplicatingWithCaseIgnoring1\Collector.dll"))); Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\DeduplicatingWithCaseIgnoring2\Collector.dll"))); } @@ -294,7 +294,7 @@ public void TriggerTestCaseEndShouldtBeCalledMultipleTimesInDataDrivenScenario() internal class TestableInProcDataCollectionExtensionManager : InProcDataCollectionExtensionManager { - public TestableInProcDataCollectionExtensionManager(string runSettings, ITestEventsPublisher mockTestEventsPublisher, string defaultCodebase, TestPluginCache testPluginCache, IFileHelper fileHelper) + public TestableInProcDataCollectionExtensionManager(string runSettings, ITestEventsPublisher mockTestEventsPublisher, string? defaultCodebase, TestPluginCache testPluginCache, IFileHelper fileHelper) : base(runSettings, mockTestEventsPublisher, defaultCodebase, testPluginCache, fileHelper) { } From 00b54322f71ebcc996b888c59e2dd1f49174b496 Mon Sep 17 00:00:00 2001 From: "REDMOND\\enjieid" Date: Mon, 1 Aug 2022 11:40:12 +0200 Subject: [PATCH 11/11] use path.combine --- .../InProcDataCollectionExtensionManagerTests.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index c67d6236ba..730d1a0a07 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -59,16 +59,18 @@ public void CodeBasePathsAreDeduplicatedWithCaseIgnoring() { var testPluginCache = new TestableTestPluginCache(); // the boolean argument refers to adding the paths to which list(we have two lists)and the duplicate happened when we merged the two lists and they had the same path - testPluginCache.UpdateExtensions(new List { @"C:\DEDUPLICATINGWITHCASEIGNORING1\Collector.dll" }, false); - testPluginCache.UpdateExtensions(new List { @"c:\DeduplicatingWithCaseIgnoring1\Collector.dll", @"c:\DeduplicatingWithCaseIgnoring2\Collector.dll" }, true); + testPluginCache.UpdateExtensions(new List { Path.Combine(Temp, "DEDUPLICATINGWITHCASEIGNORING1", "Collector.dll") }, false); + var directory1 = Path.Combine(Temp, "DeduplicatingWithCaseIgnoring1"); + var directory2 = Path.Combine(Temp, "DeduplicatingWithCaseIgnoring2"); + testPluginCache.UpdateExtensions(new List { Path.Combine(directory1, "Collector.dll"), Path.Combine(directory2, "Collector.dll") }, true); var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, null, testPluginCache, _mockFileHelper.Object); Assert.AreEqual(3, inProcDataCollectionExtensionManager.CodeBasePaths.Count); // "CodeBasePaths" contains the two extensions(after removing duplicates) and the "_defaultCodebase" Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(null)); - Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\DeduplicatingWithCaseIgnoring1\Collector.dll"))); - Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(Path.GetDirectoryName(@"c:\DeduplicatingWithCaseIgnoring2\Collector.dll"))); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(directory1)); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(directory2)); }