| # SPDX-License-Identifier: MIT | |
| from importlib import metadata | |
| import pytest | |
| import attr | |
| import attrs | |
| @pytest.fixture(name="mod", params=(attr, attrs)) | |
| def _mod(request): | |
| return request.param | |
| class TestLegacyMetadataHack: | |
| def test_version(self, mod, recwarn): | |
| """ | |
| __version__ returns the correct version and doesn't warn. | |
| """ | |
| assert metadata.version("attrs") == mod.__version__ | |
| assert [] == recwarn.list | |
| def test_does_not_exist(self, mod): | |
| """ | |
| Asking for unsupported dunders raises an AttributeError. | |
| """ | |
| with pytest.raises( | |
| AttributeError, | |
| match=f"module {mod.__name__} has no attribute __yolo__", | |
| ): | |
| mod.__yolo__ | |
| def test_version_info(self, recwarn, mod): | |
| """ | |
| ___version_info__ is not deprecated, therefore doesn't raise a warning | |
| and parses correctly. | |
| """ | |
| assert isinstance(mod.__version_info__, attr.VersionInfo) | |
| assert [] == recwarn.list |