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

import pytest

import atf


# Setup
@pytest.fixture(scope="module", autouse=True)
def setup():
    atf.require_config_parameter("SelectType", "select/linear")
    atf.require_config_parameter("SelectTypeParameters", "CR_Memory")
    atf.require_slurm_running()


def test_ntasks_per_node():
    """Test of --ntasks-per-node option."""

    task_num = 2
    output = atf.run_job_output(f"-N1 --ntasks-per-node={task_num} -O -l id")
    match = re.findall(r"\d+: uid=", output)
    assert (
        len(match) == task_num
    ), f"Failed to get output from all tasks. Got {len(match)} expected {task_num}"
