1#!/usr/bin/env python3
2# Copyright (c) 2024 Intel Corporation
3#
4# SPDX-License-Identifier: Apache-2.0
5"""
6Blackbox tests for twister's command line functions related to test filtering.
7"""
8
9from unittest import mock
10import os
11import pytest
12import sys
13import re
14
15# pylint: disable=no-name-in-module
16from conftest import TEST_DATA, suite_filename_mock
17from twisterlib.testplan import TestPlan
18from twisterlib.twister_main import main as twister_main
19
20
21class TestDevice:
22
23    @pytest.mark.parametrize(
24        'seed',
25        [1234, 4321, 1324],
26    )
27    @mock.patch.object(TestPlan, 'TESTSUITE_FILENAME', suite_filename_mock)
28    def test_seed(self, capfd, out_path, seed):
29        test_platforms = ['native_sim']
30        path = os.path.join(TEST_DATA, 'tests', 'seed_native_sim')
31
32        args = [
33            '--no-detailed-test-id', '--outdir', out_path, '-i', '-T', path, '-vv',
34            '--seed', f'{seed}',
35            *[val for pair in zip(['-p'] * len(test_platforms), test_platforms) for val in pair]
36        ]
37
38        return_value = twister_main(args)
39
40        out, err = capfd.readouterr()
41        sys.stdout.write(out)
42        sys.stderr.write(err)
43
44        assert return_value == 1
45
46        expected_line = r'seed_native_sim.dummy\s+FAILED rc=1 \(native (\d+\.\d+)s/seed: {} <host>\)'.format(seed)
47        assert re.search(expected_line, err), f'Regex not found: r"{expected_line}"'
48