Merge remote-tracking branch 'origin/issue527'

* origin/issue527:
  docs: update Changelog; closes #527.
  issue #527: catch new-style module tracebacks like vanilla.
pull/530/head^2
David Wilson 6 years ago
commit a6fd080b3a

@ -42,6 +42,7 @@ import shlex
import shutil import shutil
import sys import sys
import tempfile import tempfile
import traceback
import types import types
import mitogen.core import mitogen.core
@ -871,6 +872,11 @@ class NewStyleRunner(ScriptRunner):
except SystemExit: except SystemExit:
exc = sys.exc_info()[1] exc = sys.exc_info()[1]
rc = exc.args[0] rc = exc.args[0]
except Exception:
# This writes to stderr by default.
traceback.print_exc()
rc = 1
finally: finally:
self.atexit_wrapper.run_callbacks() self.atexit_wrapper.run_callbacks()

@ -266,6 +266,11 @@ Fixes
* `#499 <https://github.com/dw/mitogen/issues/499>`_: the ``allow_same_user`` * `#499 <https://github.com/dw/mitogen/issues/499>`_: the ``allow_same_user``
Ansible configuration setting is respected. Ansible configuration setting is respected.
* `#527 <https://github.com/dw/mitogen/issues/527>`_: crashes in modules are
trapped and reported in a manner that matches Ansible. In particular, a
module crash no longer leads to an exception that may crash the corresponding
action plug-in.
* `dc1d4251 <https://github.com/dw/mitogen/commit/dc1d4251>`_: the * `dc1d4251 <https://github.com/dw/mitogen/commit/dc1d4251>`_: the
``synchronize`` module could fail with the Docker transport due to a missing ``synchronize`` module could fail with the Docker transport due to a missing
attribute. attribute.

@ -1,5 +1,6 @@
- include: atexit.yml - include: atexit.yml
- include: builtin_command_module.yml - include: builtin_command_module.yml
- include: crashy_new_style_module.yml
- include: custom_bash_hashbang_argument.yml - include: custom_bash_hashbang_argument.yml
- include: custom_bash_old_style_module.yml - include: custom_bash_old_style_module.yml
- include: custom_bash_want_json_module.yml - include: custom_bash_want_json_module.yml

@ -0,0 +1,18 @@
# issue #527: catch exceptions from crashy modules.
- name: integration/runner/crashy_new_style_module.yml
hosts: test-targets
tasks:
- custom_python_run_script:
script: kaboom
register: out
ignore_errors: true
- assert:
that:
- not out.changed
- out.rc == 1
- out.msg == "MODULE FAILURE"
- out.module_stdout == ""
- "'Traceback (most recent call last)' in out.module_stderr"
- "\"NameError: name 'kaboom' is not defined\" in out.module_stderr"
Loading…
Cancel
Save