Conversation
Closes #4930. Inspired by @stianjensen's original PR; tinyexec was chosen first but caused Windows CI failures (windowsHide, PATH augmentation, and path.normalize() behaviors absent from execa). Production code now uses Node's built-in child_process.spawn() instead. - AppStartCommand.js: execa.command() → spawn(cmd, [], {shell:true}), no new prod deps - stop(): SIGTERM with 5s SIGKILL escalation (restored from original execa behavior) - Integration tests: execa.commandSync() → tinyexec.x() (async) - execa removed from prod dependencies; tinyexec added to devDependencies - New AppStartCommand.test.js: covers SIGKILL escalation via jest.useFakeTimers() Co-Authored-By: Stian Jensen <me@stianj.com> Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
Closes #4930. Inspired by @stianjensen's original PR — tinyexec was the first choice but caused Windows CI failures due to
windowsHide, PATH augmentation, andpath.normalize()behaviors that execa never had. Production code now uses Node's built-inchild_process.spawn()instead; tinyexec is kept for the integration test runner.Changes
AppStartCommand.jsexeca.command(cmd, {shell:true})withspawn(cmd, [], {shell:true})— equivalent behavior, zero new production dependencies.stop()now sends SIGTERM then escalates to SIGKILL after 5 seconds if the process hasn't exited (restores original behavior that was lost in earlier drafts).Integration tests (
detox/test/integration/)execa.commandSync()with asynctinyexec.x()inbail-test.test.jsandinitialization-test.test.js.Package changes
execaremoved from productiondependencies.tinyexecadded todevDependencies(only used in integration tests).New
AppStartCommand.test.jsjest.useFakeTimers(), covering lines that were missing from the coverage threshold.🤖 Generated with Claude Code