test(project): fail when a return-slot helper is called inside $( ) - #1174
Merged
Conversation
The return-slot pattern only works when the helper runs in the caller's shell. Wrapped in $( ) the assignment happens in a subshell that exits immediately, so the caller reads the previous value -- silently, with no error anywhere. That boundary produced #1145 and #1147, and cost another cycle while fixing the coverage gate in #1171. An audit of src/ finds no current instance, so this guards against reintroduction rather than fixing anything. Two details the scan has to get right, both of which I got wrong first: indentation is what separates an assignment inside a body from the file-scope declaration of the slot itself, and a check over a tree that is expected to be clean cannot fail -- so the scan is verified against a fixture that is an instance and one that only calls the helper directly. Closes #1173
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.
🤔 Background
Related #1173
The return-slot pattern only works when the helper runs in the caller's
shell. Wrapped in
$( )the assignment happens in a subshell that exitsimmediately, so the caller reads the previous value — silently, with no error
anywhere. That boundary produced #1145 and #1147, and cost another cycle while
fixing the coverage gate in #1171.
An audit of
src/finds no current instance, so this guards againstreintroduction rather than fixing anything.
💡 Changes
_BASHUNIT_*_OUTslot in their body, failing if any call site wraps one in a command substitution