From b4bd2d95fd5f9e9d4fb247605dcdf26788a203d8 Mon Sep 17 00:00:00 2001 From: James Li Date: Tue, 21 Nov 2023 21:24:22 +0000 Subject: [PATCH 1/2] fixed a regex matching bug --- .../DependencyFixtureExtensions.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/VirtualClient/VirtualClient.TestExtensions/DependencyFixtureExtensions.cs b/src/VirtualClient/VirtualClient.TestExtensions/DependencyFixtureExtensions.cs index 947b68ef6b..400b4f61dc 100644 --- a/src/VirtualClient/VirtualClient.TestExtensions/DependencyFixtureExtensions.cs +++ b/src/VirtualClient/VirtualClient.TestExtensions/DependencyFixtureExtensions.cs @@ -91,7 +91,10 @@ public static bool CommandsExecuted(this InMemoryProcessManager processManager, // expression. If this does not resolve a match, we use the regular expression. This enables developers to // use either exact matches or regular expression matches as they see fit. IProcessProxy matchingProcess = processManager.Processes.FirstOrDefault( - proc => (proc.FullCommand() == command || Regex.IsMatch(proc.FullCommand(), command, RegexOptions.IgnoreCase)) + proc => (proc.FullCommand() == command)); + + matchingProcess ??= processManager.Processes.FirstOrDefault( + proc => Regex.IsMatch(proc.FullCommand(), command, RegexOptions.IgnoreCase) && !processesConfirmed.Any(otherProc => object.ReferenceEquals(proc, otherProc))); if (matchingProcess == null) @@ -119,8 +122,10 @@ public static bool CommandsExecutedInWorkingDirectory(this InMemoryProcessManage foreach (string command in commands) { IProcessProxy matchingProcess = processManager.Processes.FirstOrDefault( + proc => (proc.FullCommand() == command)); + + matchingProcess ??= processManager.Processes.FirstOrDefault( proc => Regex.IsMatch(proc.FullCommand(), command, RegexOptions.IgnoreCase) - && proc.StartInfo.WorkingDirectory == workingDir && !processesConfirmed.Any(otherProc => object.ReferenceEquals(proc, otherProc))); if (matchingProcess == null) From 4223d499ec225583f0c9b1e3a94209fbee689302 Mon Sep 17 00:00:00 2001 From: James Li Date: Tue, 21 Nov 2023 21:38:42 +0000 Subject: [PATCH 2/2] working dir --- .../DependencyFixtureExtensions.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/VirtualClient/VirtualClient.TestExtensions/DependencyFixtureExtensions.cs b/src/VirtualClient/VirtualClient.TestExtensions/DependencyFixtureExtensions.cs index 400b4f61dc..20eb507971 100644 --- a/src/VirtualClient/VirtualClient.TestExtensions/DependencyFixtureExtensions.cs +++ b/src/VirtualClient/VirtualClient.TestExtensions/DependencyFixtureExtensions.cs @@ -94,7 +94,7 @@ public static bool CommandsExecuted(this InMemoryProcessManager processManager, proc => (proc.FullCommand() == command)); matchingProcess ??= processManager.Processes.FirstOrDefault( - proc => Regex.IsMatch(proc.FullCommand(), command, RegexOptions.IgnoreCase) + proc => Regex.IsMatch(proc.FullCommand(), command, RegexOptions.IgnoreCase) && !processesConfirmed.Any(otherProc => object.ReferenceEquals(proc, otherProc))); if (matchingProcess == null) @@ -122,10 +122,12 @@ public static bool CommandsExecutedInWorkingDirectory(this InMemoryProcessManage foreach (string command in commands) { IProcessProxy matchingProcess = processManager.Processes.FirstOrDefault( - proc => (proc.FullCommand() == command)); + proc => (proc.FullCommand() == command + && proc.StartInfo.WorkingDirectory == workingDir)); matchingProcess ??= processManager.Processes.FirstOrDefault( proc => Regex.IsMatch(proc.FullCommand(), command, RegexOptions.IgnoreCase) + && proc.StartInfo.WorkingDirectory == workingDir && !processesConfirmed.Any(otherProc => object.ReferenceEquals(proc, otherProc))); if (matchingProcess == null)