|
1 | 1 | from pathlib import Path
|
2 |
| -import sys |
| 2 | +from unittest.mock import patch |
3 | 3 |
|
4 | 4 | import pytest
|
5 | 5 |
|
@@ -45,28 +45,27 @@ def test_url_escaping(unescaped, escaped):
|
45 | 45 | assert path == unescaped
|
46 | 46 |
|
47 | 47 |
|
48 |
| -@pytest.fixture |
49 |
| -def namespace_package_test(monkeypatch): |
50 |
| - """Adds a blank namespace package into the PYTHONPATH for testing. |
51 |
| -
|
52 |
| - Yields the name of the importable namespace. |
53 |
| - """ |
54 |
| - monkeypatch.setattr( |
55 |
| - sys, |
56 |
| - 'path', |
57 |
| - [ |
58 |
| - str(Path(__file__).parent / 'namespace-package-test'), |
59 |
| - *sys.path |
60 |
| - ] |
61 |
| - ) |
62 |
| - yield 'test_namespace' |
| 48 | +@pytest.mark.parametrize( |
| 49 | + 'name, expected', |
| 50 | + [ |
| 51 | + # returns True if it is a namespace package |
| 52 | + ('test_namespace', True), |
| 53 | + # returns False if it isn't a namespace package |
| 54 | + ('sys', False), |
| 55 | + ('jupyter_server', False), |
| 56 | + # returns None if it isn't importable |
| 57 | + ('not_a_python_namespace', None) |
| 58 | + ] |
| 59 | +) |
| 60 | +def test_is_namespace_package(monkeypatch, name, expected): |
| 61 | + monkeypatch.syspath_prepend(Path(__file__).parent / 'namespace-package-test') |
| 62 | + |
| 63 | + assert is_namespace_package(name) is expected |
| 64 | + |
63 | 65 |
|
| 66 | +def test_is_namespace_package_no_spec(): |
| 67 | + with patch("importlib.util.find_spec") as mocked_spec: |
| 68 | + mocked_spec.side_effect = ValueError() |
64 | 69 |
|
65 |
| -def test_is_namespace_package(namespace_package_test): |
66 |
| - # returns True if it is a namespace package |
67 |
| - assert is_namespace_package(namespace_package_test) |
68 |
| - # returns False if it isn't a namespace package |
69 |
| - assert not is_namespace_package('sys') |
70 |
| - assert not is_namespace_package('jupyter_server') |
71 |
| - # returns None if it isn't importable |
72 |
| - assert is_namespace_package('not_a_python_namespace') is None |
| 70 | + assert is_namespace_package('dummy') is None |
| 71 | + mocked_spec.assert_called_once_with('dummy') |
0 commit comments