(module, loader, skip)
| 82 | |
| 83 | |
| 84 | def _require_loader(module, loader, skip): |
| 85 | if isinstance(module, str): |
| 86 | module = __import__(module) |
| 87 | |
| 88 | MODULE_KINDS = { |
| 89 | BuiltinImporter: 'built-in', |
| 90 | ExtensionFileLoader: 'extension', |
| 91 | AppleFrameworkLoader: 'framework extension', |
| 92 | FrozenImporter: 'frozen', |
| 93 | SourceFileLoader: 'pure Python', |
| 94 | } |
| 95 | |
| 96 | expected = loader |
| 97 | assert isinstance(expected, type), expected |
| 98 | expected = MODULE_KINDS[expected] |
| 99 | |
| 100 | actual = module.__spec__.loader |
| 101 | if not isinstance(actual, type): |
| 102 | actual = type(actual) |
| 103 | actual = MODULE_KINDS[actual] |
| 104 | |
| 105 | if actual != expected: |
| 106 | err = f'expected module to be {expected}, got {module.__spec__}' |
| 107 | if skip: |
| 108 | raise unittest.SkipTest(err) |
| 109 | raise Exception(err) |
| 110 | return module |
| 111 | |
| 112 | def require_builtin(module, *, skip=False): |
| 113 | module = _require_loader(module, BuiltinImporter, skip) |
no test coverage detected
searching dependent graphs…