blob: 22d6e705e7bec143ee750dbee100af763cb85f2b [file]
############################################################################
# Copyright (C) SchedMD LLC.
############################################################################
import pytest
import atf
# Setup
@pytest.fixture(scope="module", autouse=True)
def setup():
atf.require_slurm_running()
def test_exit_code_reporting():
"""Test of srun exit code reporting"""
exit_code = 66
task_count = "2"
exit_string = "srun_exit_code_"
exit_script = atf.module_tmp_path / "exit_script"
atf.make_bash_script(
exit_script,
f"""sleep 2
exit {exit_code}""",
)
test_script = atf.module_tmp_path / "test_script"
atf.make_bash_script(
test_script,
rf"""srun -n{task_count} -O {exit_script}
echo srun_exit_code_$?""",
)
# Spawn program and check for exit code messages from srun
result_exit_code = atf.run_command_exit(
f"srun -n{task_count} -O {exit_script}", xfail=True
)
assert (
exit_code == result_exit_code
), f"Srun failed to report exit code: {exit_code}, reported: {result_exit_code}"
# Spawn program to check the exit code of srun itself
result_exit_string = atf.run_command_output(f"{test_script}").strip()
assert (
f"{exit_string}{exit_code}" == result_exit_string
), f"Sruns exit code is bad {exit_string}{exit_code} != {result_exit_string}"