unknown_error_bypass

This commit is contained in:
pvincent
2026-08-19 11:09:43 +04:00
parent 4368dd0f4f
commit ac308f9dad
5 changed files with 50 additions and 7 deletions
+7 -3
View File
@@ -571,9 +571,13 @@ function on_exit {
if ! is_true $CHILD_PROCESS; then if ! is_true $CHILD_PROCESS; then
2>&3 >&3 dump_stderr 2>&3 >&3 dump_stderr
if [[ -v failure_type && $failure_code -gt 0 ]]; then if [[ -v failure_type && $failure_code -gt 0 ]]; then
2>&3 >&4 dump_failure if [[ $failure_type == 'UNKNOWN ERROR' && $failure_payload == "source \"\$SCRIPT\"" ]]; then
if [[ -v error_source ]]; then miaou_debug "<unknown_error bypass=true cause=source_script/>"
2>&3 >&4 dump_stacktrace else
2>&3 >&4 dump_failure
if [[ -v error_source ]]; then
2>&3 >&4 dump_stacktrace
fi
fi fi
fi fi
elif [[ -v failure_type ]]; then elif [[ -v failure_type ]]; then
+26 -1
View File
@@ -35,4 +35,29 @@ count=0
```bash ```bash
count=0 count=0
count=$((count+1)) count=$((count+1))
` ```
## properly grab $?
> prefer plain `command` rather than `! command`
> otherwise you will miss out the exit code
### wrong if
```bash
if ! command; then
local code=$?
>&2 echo $code # => 0
fi
```
### right if
```bash
if command; then
: # useful for preserving $?
else
local code=$?
>&2 echo $code
fi
```
+6 -3
View File
@@ -32,6 +32,9 @@ echo 'echo PIPE2' | miaou-bash
## TODO ## TODO
* [ ] prompt git shows version with `+` when there is more than one commit over current version. ie: v0.0.0 + 2 commits more should display v-1.0.0+ * [ ] prompt should show up version with `+` when there is more than one commit,
* [ ] semver_git_tag should append `RELEASE_NOTES.md` from this TODO markdown file, providing that NEW NOTE section below contains appropriate items to fulfill the current release note not yet versioned. ie: v0.0.0 + 2 commits more should display v0.0.0+
* [ ] git log <LATEST_TAG>..HEAD --oneline * [ ] semver_git_tag should append `RELEASE_NOTES.md` from this TODO markdown file,
providing that NEW NOTE section below contains appropriate items
to fulfill the current release note
* [ ] git log <LATEST_TAG>..HEAD --oneline
+2
View File
@@ -172,7 +172,9 @@ time {
fail_stderr_count unbound_variable 1 fail_stderr_count unbound_variable 1
fail_stderr_count child_error 4 fail_stderr_count child_error 4
fail_miaou_count command_error_multiline 7 fail_miaou_count command_error_multiline 7
fail_miaou_count unknown 1
fail_stderr_grep two_options 'ERROR: too many args 2, either single option or SCRIPT + args accepted!' fail_stderr_grep two_options 'ERROR: too many args 2, either single option or SCRIPT + args accepted!'
fail_stderr_grep script_not_found "ERROR: script 'doesnt_exist' not found!" fail_stderr_grep script_not_found "ERROR: script 'doesnt_exist' not found!"
+9
View File
@@ -12,6 +12,15 @@ function do_subshell_false {
result=$(false) result=$(false)
} }
function do_unknown {
source /dev/stdin <<EOF
echo START
>&2 echo weird
builtin exit 2
echo END
EOF
}
function do_heredoc { function do_heredoc {
# miaou-bash <<EOF # miaou-bash <<EOF
source /dev/stdin <<EOF source /dev/stdin <<EOF