blob: 82a22933d58b2fb301750c13153c65b28cae8ba1 [file] [log] [blame]
############################################################################
# Copyright (C) SchedMD LLC.
############################################################################
import atf
import pytest
import re
# Setup
@pytest.fixture(scope="module", autouse=True)
def setup():
atf.require_slurm_running()
def test_input_output_error(tmp_path):
"""Verify srun -input,--output, and --error options work"""
CONTENT = "sleep aaa\nexit 0"
sleep_err_message = r"sleep: invalid time interval ‘aaa’"
echo_output = "test --output"
file_in = tmp_path / "file_in.input"
file_out = tmp_path / "file_out.output"
file_err = tmp_path / "file_err.error"
file_in.write_text(CONTENT)
# Test --input with a file that would fail and --error catching the error
atf.run_command(f"srun --input={str(file_in)} --error={str(file_err)} -t1 bash")
assert re.search(sleep_err_message, file_err.read_text()) is not None
# Test --output's file gets the echoed message
atf.run_command(f"srun --output={str(file_out)} -t1 echo {echo_output}")
assert file_out.read_text().strip("\n") == echo_output
# Test the none parameter
stderr = atf.run_command_error("srun --error=none -t1 sleep aaa", xfail=True)
assert re.search(sleep_err_message, stderr) is None
stdout = atf.run_command_output("srun --output=none -t1 id")
assert re.search(r"uid=", stdout) is None