1234567891011121314151617181920212223242526272829303132333435 |
- from importlib import import_module
- from pkgutil import walk_packages
- import matplotlib
- import pytest
- # Get the names of all matplotlib submodules,
- # except for the unit tests and private modules.
- module_names = [
- m.name
- for m in walk_packages(
- path=matplotlib.__path__, prefix=f'{matplotlib.__name__}.'
- )
- if not m.name.startswith(__package__)
- and not any(x.startswith('_') for x in m.name.split('.'))
- ]
- @pytest.mark.parametrize('module_name', module_names)
- @pytest.mark.filterwarnings('ignore::DeprecationWarning')
- @pytest.mark.filterwarnings('ignore::ImportWarning')
- def test_getattr(module_name):
- """
- Test that __getattr__ methods raise AttributeError for unknown keys.
- See #20822, #20855.
- """
- try:
- module = import_module(module_name)
- except (ImportError, RuntimeError) as e:
- # Skip modules that cannot be imported due to missing dependencies
- pytest.skip(f'Cannot import {module_name} due to {e}')
- key = 'THIS_SYMBOL_SHOULD_NOT_EXIST'
- if hasattr(module, key):
- delattr(module, key)
|