From 9c933318e20892fe4eb775a6b4b7dfdabdf9b354 Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Fri, 7 Feb 2025 08:53:38 -0500 Subject: [PATCH] add tests for canonicalizing extras names in evaluate_marker Add tests to verify that the names of extras are canonicalized properly when used by evaluate_marker(). --- tests/test_requirements_file.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/test_requirements_file.py b/tests/test_requirements_file.py index 4966ea2e..a490d82c 100644 --- a/tests/test_requirements_file.py +++ b/tests/test_requirements_file.py @@ -1,7 +1,16 @@ import pathlib import textwrap +from itertools import product -from fromager.requirements_file import RequirementType, parse_requirements_file +import pytest +from packaging.markers import Marker +from packaging.requirements import Requirement + +from fromager.requirements_file import ( + RequirementType, + evaluate_marker, + parse_requirements_file, +) def test_get_requirements_requirements_file(tmp_path: pathlib.Path): @@ -50,3 +59,15 @@ def test_compare_req_type(): # make sure they equal themselves for r in RequirementType: assert r == r + + +@pytest.mark.parametrize( + "parent_e,marker_e,extras_e", list(product(["b-c", "b_c", "B_C"], repeat=3)) +) +def test_evaluate_marker_canonical_names(parent_e, marker_e, extras_e): + parent_req = Requirement(f"a[{parent_e}]") + req = Requirement("d") + marker = Marker(f"extra == '{marker_e}'") + req.marker = marker + extras = set([extras_e]) + assert evaluate_marker(parent_req=parent_req, req=req, extras=extras)