Skip to content

Pin that killing a diff tool actually kills it - #780

Merged
SimonCropp merged 2 commits into
mainfrom
pin-diff-tool-kill
Aug 21, 2026
Merged

Pin that killing a diff tool actually kills it#780
SimonCropp merged 2 commits into
mainfrom
pin-diff-tool-kill

Conversation

@SimonCropp

Copy link
Copy Markdown
Member

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.

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.
@SimonCropp
SimonCropp merged commit 584c9ab into main Aug 21, 2026
8 checks passed
@SimonCropp
SimonCropp deleted the pin-diff-tool-kill branch August 21, 2026 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant