unknown_error_bypass
This commit is contained in:
+7
-3
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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!"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user