Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 859e38c

Browse filesBrowse files
committed
Expand to test top-level deprecated names
1 parent 105f500 commit 859e38c
Copy full SHA for 859e38c

File tree

1 file changed

+88
-1
lines changed
Filter options

1 file changed

+88
-1
lines changed

‎test/deprecation/test_attributes.py

Copy file name to clipboardExpand all lines: test/deprecation/test_attributes.py
+88-1Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""Tests for dynamic and static attribute errors."""
22

3+
import importlib
4+
35
import pytest
46

57

@@ -12,4 +14,89 @@ def test_cannot_get_undefined() -> None:
1214

1315
def test_cannot_import_undefined() -> None:
1416
with pytest.raises(ImportError):
15-
from git import foo
17+
from git import foo # noqa: F401
18+
19+
20+
def test_util_alias_access_resolves() -> None:
21+
"""These resolve for now, though they're private we do not guarantee this."""
22+
import git
23+
24+
assert git.util is git.index.util
25+
26+
27+
def test_util_alias_import_resolves() -> None:
28+
from git import util
29+
import git
30+
31+
util is git.index.util
32+
33+
34+
def test_util_alias_access_warns() -> None:
35+
import git
36+
37+
with pytest.deprecated_call() as ctx:
38+
git.util
39+
40+
assert len(ctx) == 1
41+
message = ctx[0].message.args[0]
42+
assert "git.util" in message
43+
assert "git.index.util" in message
44+
assert "should not be relied on" in message
45+
46+
47+
def test_util_alias_import_warns() -> None:
48+
with pytest.deprecated_call() as ctx:
49+
from git import util # noqa: F401
50+
51+
message = ctx[0].message.args[0]
52+
assert "git.util" in message
53+
assert "git.index.util" in message
54+
assert "should not be relied on" in message
55+
56+
57+
_parametrize_by_private_alias = pytest.mark.parametrize(
58+
"name, fullname",
59+
[
60+
("head", "git.refs.head"),
61+
("log", "git.refs.log"),
62+
("reference", "git.refs.reference"),
63+
("symbolic", "git.refs.symbolic"),
64+
("tag", "git.refs.tag"),
65+
("base", "git.index.base"),
66+
("fun", "git.index.fun"),
67+
("typ", "git.index.typ"),
68+
],
69+
)
70+
71+
72+
@_parametrize_by_private_alias
73+
def test_private_module_alias_access_resolves(name: str, fullname: str) -> None:
74+
"""These resolve for now, though they're private we do not guarantee this."""
75+
import git
76+
77+
assert getattr(git, name) is importlib.import_module(fullname)
78+
79+
80+
@_parametrize_by_private_alias
81+
def test_private_module_alias_import_resolves(name: str, fullname: str) -> None:
82+
exec(f"from git import {name}")
83+
locals()[name] is importlib.import_module(fullname)
84+
85+
86+
@_parametrize_by_private_alias
87+
def test_private_module_alias_access_warns(name: str, fullname: str) -> None:
88+
import git
89+
90+
with pytest.deprecated_call() as ctx:
91+
getattr(git, name)
92+
93+
assert len(ctx) == 1
94+
assert ctx[0].message.args[0].endswith(f"Use {fullname} instead.")
95+
96+
97+
@_parametrize_by_private_alias
98+
def test_private_module_alias_import_warns(name: str, fullname: str) -> None:
99+
with pytest.deprecated_call() as ctx:
100+
exec(f"from git import {name}")
101+
102+
assert ctx[0].message.args[0].endswith(f"Use {fullname} instead.")

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.