Pin that killing a diff tool actually kills it - #780
Merged
Conversation
LaunchAndKill and LaunchAndKillAsync asserted that the tool was no longer running after DiffRunner.Kill. That assertion cannot fail: FakeDiffTool sleeps for five seconds and then exits by itself, and WaitForRunning polls for ten, so "gone" is true whether the kill worked or did nothing whatsoever. Both tests pass with ProcessCleanup.Kill short circuited to a bare return - I checked. Assert on how the process ended rather than on whether it is still there. WindowsProcess.TryTerminateProcess passes -1 to TerminateProcess, and a FakeDiffTool that ran out its sleep returns 0, so the exit code separates the two with no timing in it at all. Reading it needs a handle opened before the process goes: Process.GetProcessById holds none of its own, so OpenLaunched touches Handle while the tool is still running. That is the same point ProcessEx makes on the tray side. Neutering Kill now fails both tests on the exit code.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
LaunchAndKill and LaunchAndKillAsync asserted that the tool was no longer running after DiffRunner.Kill. That assertion cannot fail: FakeDiffTool sleeps for five seconds and then exits by itself, and WaitForRunning polls for ten, so "gone" is true whether the kill worked or did nothing whatsoever. Both tests pass with ProcessCleanup.Kill short circuited to a bare return - I checked.
Assert on how the process ended rather than on whether it is still there. WindowsProcess.TryTerminateProcess passes -1 to TerminateProcess, and a FakeDiffTool that ran out its sleep returns 0, so the exit code separates the two with no timing in it at all.
Reading it needs a handle opened before the process goes: Process.GetProcessById holds none of its own, so OpenLaunched touches Handle while the tool is still running. That is the same point ProcessEx makes on the tray side.
Neutering Kill now fails both tests on the exit code.