https://bugzilla.wikimedia.org/show_bug.cgi?id=50347

       Web browser: ---
            Bug ID: 50347
           Summary: mw-update-l10n failure does not abort scap
           Product: Wikimedia
           Version: wmf-deployment
          Hardware: All
                OS: All
            Status: NEW
          Severity: major
          Priority: Unprioritized
         Component: General/Unknown
          Assignee: wikibugs-l@lists.wikimedia.org
          Reporter: o...@wikimedia.org
    Classification: Unclassified
   Mobile Platform: ---

mw-update-l10n wraps the l10n cache update in parentheses, causing it to run in
a sub-shell.

The first problem is that 'set -e' doesn't work predictably in sub-shells. Its
precise behavior is documented here:
<http://fvue.nl/wiki/Bash:_Error_handling#Caveat_1:_.60Exit_on_error.27_ignoring_subshell_exit_status>.

The second problem is that the exit status of the sub-shell is ||'d with a call
to 'echo' to emit an error message. Because echo typically returns success, the
exit status of mw-update-l10n is always success, and so l10n failures do not
reach scap.

A good solution is for the parent shell to explicitly check the exit status of
any important command it invokes.

This pattern works well:

some_command || {
  st="$?"
  echo "some_command failed"
  exit $st
}

It can be neatly encapsulated in a bash function, as shown in
<http://mywiki.wooledge.org/BashFAQ/101>.

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.
_______________________________________________
Wikibugs-l mailing list
Wikibugs-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l

Reply via email to