Repository navigation
fix: close the quote that broke every native release build - #45
Merged
Merged
Conversation
The compile-cache report I added in #21 opened a string for a command substitution and never closed it. Bash reads a whole script before it runs a line, so the unterminated quote was a parse error on every platform, not only on the Windows branch it sat in. bash says it plainly: unexpected EOF while looking for matching quote. The consequence was worse than a noisy log. The step runs with if: always(), so its failure failed the job after the bundle had been built, and "Upload unsigned bundle" was skipped. The v0.2.0 build spent twenty minutes producing a macOS bundle that was then thrown away, and no draft release could be created because publish had no artifacts. A test now parses every run: block of every JSON-shaped workflow with bash -n. It fails against the broken file with the same message bash gave, which was checked rather than assumed. ci.yml is real YAML and this project has no YAML parser, so it is skipped; release.yml, which holds the long scripts, is covered. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Merged
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.
Summary
The compile-cache report added in #21 opened a string for a command substitution and never closed it:
ccache_bin="$(find "$nuitka_cache" -type f -iname 'ccache.exe' -print -quit 2>/dev/null || true)Bash reads a whole script before it runs a line, so the unterminated quote is a parse error on every platform, not only on the Windows branch it sits in:
The consequence was worse than a noisy log. The step runs with
if: always(), so its failure failed the job after the bundle had been built, andUpload unsigned bundlewas skipped. The v0.2.0 build spent twenty minutes producing a macOS bundle that was then discarded, andpublishhad no artifacts to attach, so no draft release could exist.One character. The rest of the change is the guard.
The guard
A test parses every
run:block of every JSON-shaped workflow withbash -n. Checked rather than assumed: against the broken file it fails with exactly the message bash gave above, and passes against the fixed one.ci.ymlis real YAML and this project has no YAML parser, so it is skipped and the test asserts that at least one workflow was actually checked.release.yml, which holds the long scripts and where this class of bug lives, is covered.Test plan
uv run ruff check . && uv run mypy src && QT_QPA_PLATFORM=offscreen uv run pytest -q: 1782 passed, 4 skipped.mainafter this lands, to confirm both platforms produce and upload a bundle, before any tag is cut.🤖 Generated with Claude Code