diff --git a/pytest_plugins/fixture_markers.py b/pytest_plugins/fixture_markers.py index 33d8732fdb1..f36b215115a 100644 --- a/pytest_plugins/fixture_markers.py +++ b/pytest_plugins/fixture_markers.py @@ -35,14 +35,27 @@ def pytest_generate_tests(metafunc): # process eventual rhel_version_match markers matchers = [i.args for i in function_marks if i.name == 'rhel_ver_match'] match_params = [] - for matcher in matchers: - match_params.extend( - [ - setting_rhel_ver - for setting_rhel_ver in settings.supportability.content_hosts.rhel.versions - if re.fullmatch(str(matcher[0]), str(setting_rhel_ver)) - ] - ) + # check if param matches format 'N-x' + if matchers and len(matchers[0][0]) == 3 and matchers[0][0].startswith('N-'): + # num of desired prior versions + num_versions = int(matchers[0][0].split('-')[1]) + # grab major versions, excluding fips, from tail of supportability list + filtered_versions = [ + setting_rhel_ver + for setting_rhel_ver in settings.supportability.content_hosts.rhel.versions + if 'fips' not in str(setting_rhel_ver) + ][-(num_versions + 1) :] # inclusive (+1) to collect N as well + match_params.extend(filtered_versions) + # match versions with existing markers + else: + for matcher in matchers: + match_params.extend( + [ + setting_rhel_ver + for setting_rhel_ver in settings.supportability.content_hosts.rhel.versions + if re.fullmatch(str(matcher[0]), str(setting_rhel_ver)) + ] + ) network_params = ['ipv6' if settings.server.is_ipv6 else 'ipv4'] rhel_params = [] ids = [] diff --git a/tests/foreman/api/test_errata.py b/tests/foreman/api/test_errata.py index aa3d92164b8..1b82c4ee195 100644 --- a/tests/foreman/api/test_errata.py +++ b/tests/foreman/api/test_errata.py @@ -509,7 +509,7 @@ def _publish_and_wait(sat, org, cv, search_rate=1, max_tries=10): @pytest.mark.upgrade @pytest.mark.tier3 -@pytest.mark.rhel_ver_match('[^7]|10') +@pytest.mark.rhel_ver_match('N-2') # latest 3 major ver supported, exclude fips @pytest.mark.no_containers @pytest.mark.e2e def test_positive_install_in_hc( @@ -656,7 +656,7 @@ def test_positive_install_in_hc( @pytest.mark.tier3 -@pytest.mark.rhel_ver_match(r'^(?!.*(7|fips)).*$') # exclude any fips or major ver 7 +@pytest.mark.rhel_ver_match(r'^(?!.*(7|fips)).*$') # exclude any fips or major ver 7 @pytest.mark.no_containers @pytest.mark.e2e @pytest.mark.pit_client