Skip to content

Commit

Permalink
added test_user_script_crash test (Epistimio#709)
Browse files Browse the repository at this point in the history
Detects if a by-design crashing black-box script Traceback is visible in the stderr output of orion.
  • Loading branch information
nurbal committed Feb 2, 2022
1 parent bc85f07 commit 7df7cd3
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
31 changes: 31 additions & 0 deletions tests/functional/commands/black_box_fail.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""User script that exits with code given in argument."""
import argparse
import sys
from xmlrpc.client import boolean


def execute():
"""Execute a simple pipeline as an example."""
# 1. Get the wanted exit code
parser = argparse.ArgumentParser()
parser.add_argument(
"--exitcode", "-e", type=int, default=0, help="wanted exit code"
)
parser.add_argument(
"--crash", "-c", action="store_true", help="make a crash happen"
)
parser.add_argument("-x", type=float, required=True)
inputs = parser.parse_args()

# 2. if needed, crash !
if inputs.crash:
print("%b" % False) # black_box_fail.py : this line should crash

# 3. exit with the wanted code
sys.exit(inputs.exitcode)


if __name__ == "__main__":
execute()
23 changes: 23 additions & 0 deletions tests/functional/commands/test_hunt_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,26 @@ def test_no_name(capsys):
captured = capsys.readouterr().err

assert captured == "Error: No name provided for the experiment.\n"


def test_user_script_crash(capfd):
"""Checks that the Traceback of a crashing user script is output to stderr"""

orion.core.cli.main(
[
"--debug",
"hunt",
"-n",
"test",
"--exp-max-trials",
"1",
"./black_box_fail.py",
"-c",
"-x~uniform(-5,5)",
]
)

out, err = capfd.readouterr()

assert "Traceback" in err
assert "# black_box_fail.py : this line should crash" in err

0 comments on commit 7df7cd3

Please sign in to comment.