|
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