| import unittest |
| |
| from python.pip_install.extract_wheels.lib import requirements |
| |
| |
| class TestRequirementExtrasParsing(unittest.TestCase): |
| def test_parses_requirement_for_extra(self) -> None: |
| cases = [ |
| ("name[foo]", ("name", frozenset(["foo"]))), |
| ("name[ Foo123 ]", ("name", frozenset(["Foo123"]))), |
| (" name1[ foo ] ", ("name1", frozenset(["foo"]))), |
| ( |
| "name [fred,bar] @ http://foo.com ; python_version=='2.7'", |
| ("name", frozenset(["fred", "bar"])), |
| ), |
| ( |
| "name[quux, strange];python_version<'2.7' and platform_version=='2'", |
| ("name", frozenset(["quux", "strange"])), |
| ), |
| ("name; (os_name=='a' or os_name=='b') and os_name=='c'", (None, None),), |
| ("name@http://foo.com", (None, None),), |
| ] |
| |
| for case, expected in cases: |
| with self.subTest(): |
| self.assertTupleEqual( |
| requirements._parse_requirement_for_extra(case), expected |
| ) |
| |
| |
| if __name__ == "__main__": |
| unittest.main() |