############################################################################
# Copyright (C) SchedMD LLC.
############################################################################
import atf
import pytest
import re


# Setup
@pytest.fixture(scope="module", autouse=True)
def setup():
    atf.require_config_parameter_excludes("LaunchParameters", "test_exec")
    atf.require_slurm_running()


def test_running_non_existent_job():
    """Test of running non-existent job, confirm timely termination."""

    # Submit a slurm job that will execute bogus job name
    output_error = atf.run_command_error(
        "srun -t1 /bad/bad/bad", timeout=120, xfail=True
    )
    no_file = re.findall(r"No such file", output_error)
    unable_to_run = re.findall(r"Unable to run executable", output_error)
    time_limit = re.findall(r"time limit exceeded", output_error)
    terminated = re.findall(r"Terminated", output_error)

    assert len(time_limit) <= 0, "srun time limit exceeded"
    assert len(terminated) <= 0, "srun did not terminate properly"
    assert (
        len(no_file) > 0 or len(unable_to_run) > 0
    ), "Unexpected output from bad job name"
