summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2023-02-26 21:47:30 +0100
committerGitHub <noreply@github.com>2023-02-26 21:47:30 +0100
commite7ad3e64d36e450a9133c64e804c921d0fd0f204 (patch)
tree5db8215be4d052ccd7be2d2a5cbafe7ccdb89be5 /tests
parent52a2a04a59526ce8344d4d2b7f86bb978177e047 (diff)
downloadpylint-git-e7ad3e64d36e450a9133c64e804c921d0fd0f204.tar.gz
Add ``invalid-name`` check for ``TypeAlias`` names (#7116)
Diffstat (limited to 'tests')
-rw-r--r--tests/functional/ext/typing/typing_broken_callable.py2
-rw-r--r--tests/functional/ext/typing/typing_broken_callable_deprecated_alias.py2
-rw-r--r--tests/functional/ext/typing/typing_broken_callable_future_import.py2
-rw-r--r--tests/functional/ext/typing/typing_broken_noreturn.py6
-rw-r--r--tests/functional/ext/typing/typing_broken_noreturn.txt8
-rw-r--r--tests/functional/ext/typing/typing_broken_noreturn_future_import.py8
-rw-r--r--tests/functional/ext/typing/typing_broken_noreturn_future_import.txt2
-rw-r--r--tests/functional/ext/typing/typing_broken_noreturn_py372.py8
-rw-r--r--tests/functional/r/regression_02/regression_3979.py2
-rw-r--r--tests/functional/t/typealias_naming_style_default.py23
-rw-r--r--tests/functional/t/typealias_naming_style_default.rc2
-rw-r--r--tests/functional/t/typealias_naming_style_default.txt10
-rw-r--r--tests/functional/t/typealias_naming_style_rgx.py10
-rw-r--r--tests/functional/t/typealias_naming_style_rgx.rc5
-rw-r--r--tests/functional/t/typealias_naming_style_rgx.txt2
-rw-r--r--tests/lint/test_caching.py1
16 files changed, 79 insertions, 14 deletions
diff --git a/tests/functional/ext/typing/typing_broken_callable.py b/tests/functional/ext/typing/typing_broken_callable.py
index 0713e17c8..f251e0e80 100644
--- a/tests/functional/ext/typing/typing_broken_callable.py
+++ b/tests/functional/ext/typing/typing_broken_callable.py
@@ -4,7 +4,7 @@ https://bugs.python.org/issue42965
Use 'typing.Callable' instead.
"""
-# pylint: disable=missing-docstring,unsubscriptable-object
+# pylint: disable=missing-docstring,unsubscriptable-object,invalid-name
import collections.abc
from collections.abc import Callable
from typing import TYPE_CHECKING, Optional, Union
diff --git a/tests/functional/ext/typing/typing_broken_callable_deprecated_alias.py b/tests/functional/ext/typing/typing_broken_callable_deprecated_alias.py
index f01592a59..5aab5b468 100644
--- a/tests/functional/ext/typing/typing_broken_callable_deprecated_alias.py
+++ b/tests/functional/ext/typing/typing_broken_callable_deprecated_alias.py
@@ -7,7 +7,7 @@ Use 'typing.Callable' instead.
Don't emit 'deprecated-typing-alias' for 'Callable' if at least one replacement
would create broken instances.
"""
-# pylint: disable=missing-docstring,unsubscriptable-object
+# pylint: disable=missing-docstring,unsubscriptable-object,invalid-name
from typing import Callable, Optional, Union
Alias1 = Optional[Callable[[int], None]]
diff --git a/tests/functional/ext/typing/typing_broken_callable_future_import.py b/tests/functional/ext/typing/typing_broken_callable_future_import.py
index 947e060b9..8411168a5 100644
--- a/tests/functional/ext/typing/typing_broken_callable_future_import.py
+++ b/tests/functional/ext/typing/typing_broken_callable_future_import.py
@@ -4,7 +4,7 @@ https://bugs.python.org/issue42965
Use 'typing.Callable' instead.
"""
-# pylint: disable=missing-docstring,unsubscriptable-object
+# pylint: disable=missing-docstring,unsubscriptable-object,invalid-name
from __future__ import annotations
import collections.abc
diff --git a/tests/functional/ext/typing/typing_broken_noreturn.py b/tests/functional/ext/typing/typing_broken_noreturn.py
index e7b5643ae..595e34cfd 100644
--- a/tests/functional/ext/typing/typing_broken_noreturn.py
+++ b/tests/functional/ext/typing/typing_broken_noreturn.py
@@ -4,7 +4,7 @@ https://bugs.python.org/issue34921
If no runtime introspection is required, use string annotations instead.
"""
-# pylint: disable=missing-docstring, broad-exception-raised
+# pylint: disable=missing-docstring,broad-exception-raised,invalid-name
import typing
from typing import TYPE_CHECKING, Callable, NoReturn, Union
@@ -14,15 +14,19 @@ import typing_extensions
def func1() -> NoReturn:
raise Exception
+
def func2() -> Union[None, NoReturn]: # [broken-noreturn]
pass
+
def func3() -> Union[None, "NoReturn"]:
pass
+
def func4() -> Union[None, typing.NoReturn]: # [broken-noreturn]
pass
+
def func5() -> Union[None, typing_extensions.NoReturn]: # [broken-noreturn]
pass
diff --git a/tests/functional/ext/typing/typing_broken_noreturn.txt b/tests/functional/ext/typing/typing_broken_noreturn.txt
index ce4503341..4e08844b2 100644
--- a/tests/functional/ext/typing/typing_broken_noreturn.txt
+++ b/tests/functional/ext/typing/typing_broken_noreturn.txt
@@ -1,4 +1,4 @@
-broken-noreturn:17:27:17:35:func2:'NoReturn' inside compound types is broken in 3.7.0 / 3.7.1:INFERENCE
-broken-noreturn:23:27:23:42:func4:'NoReturn' inside compound types is broken in 3.7.0 / 3.7.1:INFERENCE
-broken-noreturn:26:27:26:53:func5:'NoReturn' inside compound types is broken in 3.7.0 / 3.7.1:INFERENCE
-broken-noreturn:31:23:31:31::'NoReturn' inside compound types is broken in 3.7.0 / 3.7.1:INFERENCE
+broken-noreturn:18:27:18:35:func2:'NoReturn' inside compound types is broken in 3.7.0 / 3.7.1:INFERENCE
+broken-noreturn:26:27:26:42:func4:'NoReturn' inside compound types is broken in 3.7.0 / 3.7.1:INFERENCE
+broken-noreturn:30:27:30:53:func5:'NoReturn' inside compound types is broken in 3.7.0 / 3.7.1:INFERENCE
+broken-noreturn:35:23:35:31::'NoReturn' inside compound types is broken in 3.7.0 / 3.7.1:INFERENCE
diff --git a/tests/functional/ext/typing/typing_broken_noreturn_future_import.py b/tests/functional/ext/typing/typing_broken_noreturn_future_import.py
index e0ea7761b..c58ed9c39 100644
--- a/tests/functional/ext/typing/typing_broken_noreturn_future_import.py
+++ b/tests/functional/ext/typing/typing_broken_noreturn_future_import.py
@@ -1,5 +1,5 @@
"""
-'typing.NoReturn' is broken inside compond types for Python 3.7.0
+'typing.NoReturn' is broken inside compound types for Python 3.7.0
https://bugs.python.org/issue34921
If no runtime introspection is required, use string annotations instead.
@@ -7,7 +7,7 @@ If no runtime introspection is required, use string annotations instead.
With 'from __future__ import annotations', only emit errors for nodes
not in a type annotation context.
"""
-# pylint: disable=missing-docstring, broad-exception-raised
+# pylint: disable=missing-docstring,broad-exception-raised,invalid-name
from __future__ import annotations
import typing
@@ -19,15 +19,19 @@ import typing_extensions
def func1() -> NoReturn:
raise Exception
+
def func2() -> Union[None, NoReturn]:
pass
+
def func3() -> Union[None, "NoReturn"]:
pass
+
def func4() -> Union[None, typing.NoReturn]:
pass
+
def func5() -> Union[None, typing_extensions.NoReturn]:
pass
diff --git a/tests/functional/ext/typing/typing_broken_noreturn_future_import.txt b/tests/functional/ext/typing/typing_broken_noreturn_future_import.txt
index 891a3a4d8..10a9eea8a 100644
--- a/tests/functional/ext/typing/typing_broken_noreturn_future_import.txt
+++ b/tests/functional/ext/typing/typing_broken_noreturn_future_import.txt
@@ -1 +1 @@
-broken-noreturn:36:23:36:31::'NoReturn' inside compound types is broken in 3.7.0 / 3.7.1:INFERENCE
+broken-noreturn:40:23:40:31::'NoReturn' inside compound types is broken in 3.7.0 / 3.7.1:INFERENCE
diff --git a/tests/functional/ext/typing/typing_broken_noreturn_py372.py b/tests/functional/ext/typing/typing_broken_noreturn_py372.py
index 6bd31f069..2d07edd7a 100644
--- a/tests/functional/ext/typing/typing_broken_noreturn_py372.py
+++ b/tests/functional/ext/typing/typing_broken_noreturn_py372.py
@@ -1,12 +1,12 @@
"""
-'typing.NoReturn' is broken inside compond types for Python 3.7.0
+'typing.NoReturn' is broken inside compound types for Python 3.7.0
https://bugs.python.org/issue34921
If no runtime introspection is required, use string annotations instead.
Don't emit errors if py-version set to >= 3.7.2.
"""
-# pylint: disable=missing-docstring, broad-exception-raised
+# pylint: disable=missing-docstring,broad-exception-raised,invalid-name
import typing
from typing import TYPE_CHECKING, Callable, NoReturn, Union
@@ -16,15 +16,19 @@ import typing_extensions
def func1() -> NoReturn:
raise Exception
+
def func2() -> Union[None, NoReturn]:
pass
+
def func3() -> Union[None, "NoReturn"]:
pass
+
def func4() -> Union[None, typing.NoReturn]:
pass
+
def func5() -> Union[None, typing_extensions.NoReturn]:
pass
diff --git a/tests/functional/r/regression_02/regression_3979.py b/tests/functional/r/regression_02/regression_3979.py
index 4fb0c5a05..7cc74a4f5 100644
--- a/tests/functional/r/regression_02/regression_3979.py
+++ b/tests/functional/r/regression_02/regression_3979.py
@@ -10,4 +10,4 @@ if TYPE_CHECKING:
else:
BasePathLike = os.PathLike
-foo: Union[str, BasePathLike] = "bar"
+Foo: Union[str, BasePathLike] = "bar"
diff --git a/tests/functional/t/typealias_naming_style_default.py b/tests/functional/t/typealias_naming_style_default.py
new file mode 100644
index 000000000..45f801521
--- /dev/null
+++ b/tests/functional/t/typealias_naming_style_default.py
@@ -0,0 +1,23 @@
+"""Test cases for invalid-name for TypeAlias and related classes with default settings."""
+from typing import TypeAlias, Union
+
+# PascalCase names
+GoodName: TypeAlias = int
+_GoodName: TypeAlias = int
+__GoodName: TypeAlias = int
+AnotherGoodName = Union[int, str]
+GOODName: TypeAlias = int
+GOODNAMEType: TypeAlias = int
+TodoType: TypeAlias = int
+
+# Non-PascalCase names
+BadNAME: TypeAlias = int # [invalid-name]
+badName: TypeAlias = int # [invalid-name]
+AlsoBADName: TypeAlias = int # [invalid-name]
+TBadName: TypeAlias = int # [invalid-name]
+TypeTodo: TypeAlias = int # [invalid-name]
+BadNameT: TypeAlias = int # [invalid-name]
+BAD_NAME = Union[int, str] # [invalid-name]
+_BAD_NAME = Union[int, str] # [invalid-name]
+__BAD_NAME = Union[int, str] # [invalid-name]
+ANOTHERBADNAME = Union[int, str] # [invalid-name]
diff --git a/tests/functional/t/typealias_naming_style_default.rc b/tests/functional/t/typealias_naming_style_default.rc
new file mode 100644
index 000000000..68a8c8ef1
--- /dev/null
+++ b/tests/functional/t/typealias_naming_style_default.rc
@@ -0,0 +1,2 @@
+[testoptions]
+min_pyver=3.10
diff --git a/tests/functional/t/typealias_naming_style_default.txt b/tests/functional/t/typealias_naming_style_default.txt
new file mode 100644
index 000000000..237dac076
--- /dev/null
+++ b/tests/functional/t/typealias_naming_style_default.txt
@@ -0,0 +1,10 @@
+invalid-name:14:0:14:7::"Type alias name ""BadNAME"" doesn't conform to predefined naming style":HIGH
+invalid-name:15:0:15:7::"Type alias name ""badName"" doesn't conform to predefined naming style":HIGH
+invalid-name:16:0:16:11::"Type alias name ""AlsoBADName"" doesn't conform to predefined naming style":HIGH
+invalid-name:17:0:17:8::"Type alias name ""TBadName"" doesn't conform to predefined naming style":HIGH
+invalid-name:18:0:18:8::"Type alias name ""TypeTodo"" doesn't conform to predefined naming style":HIGH
+invalid-name:19:0:19:8::"Type alias name ""BadNameT"" doesn't conform to predefined naming style":HIGH
+invalid-name:20:0:20:8::"Type alias name ""BAD_NAME"" doesn't conform to predefined naming style":HIGH
+invalid-name:21:0:21:9::"Type alias name ""_BAD_NAME"" doesn't conform to predefined naming style":HIGH
+invalid-name:22:0:22:10::"Type alias name ""__BAD_NAME"" doesn't conform to predefined naming style":HIGH
+invalid-name:23:0:23:14::"Type alias name ""ANOTHERBADNAME"" doesn't conform to predefined naming style":HIGH
diff --git a/tests/functional/t/typealias_naming_style_rgx.py b/tests/functional/t/typealias_naming_style_rgx.py
new file mode 100644
index 000000000..0910644da
--- /dev/null
+++ b/tests/functional/t/typealias_naming_style_rgx.py
@@ -0,0 +1,10 @@
+"""Test cases for invalid-name for TypeAlias and related classes with non-default settings."""
+from typing import TypeAlias, Union
+
+# Valid
+TypeAliasShouldBeLikeThis: TypeAlias = int
+_TypeAliasShouldBeLikeThis: Union[str, int]
+
+# Invalid
+TypeAliasShouldntBeLikeThis: TypeAlias = int # [invalid-name]
+_TypeAliasShouldntBeLikeThis: Union[str, int] # [invalid-name]
diff --git a/tests/functional/t/typealias_naming_style_rgx.rc b/tests/functional/t/typealias_naming_style_rgx.rc
new file mode 100644
index 000000000..2521a50b3
--- /dev/null
+++ b/tests/functional/t/typealias_naming_style_rgx.rc
@@ -0,0 +1,5 @@
+[BASIC]
+typealias-rgx=_{0,2}TypeAliasShouldBeLikeThis
+
+[testoptions]
+min_pyver=3.10
diff --git a/tests/functional/t/typealias_naming_style_rgx.txt b/tests/functional/t/typealias_naming_style_rgx.txt
new file mode 100644
index 000000000..0a1bc6c4a
--- /dev/null
+++ b/tests/functional/t/typealias_naming_style_rgx.txt
@@ -0,0 +1,2 @@
+invalid-name:9:0:9:27::"Type alias name ""TypeAliasShouldntBeLikeThis"" doesn't conform to '_{0,2}TypeAliasShouldBeLikeThis' pattern":HIGH
+invalid-name:10:0:10:28::"Type alias name ""_TypeAliasShouldntBeLikeThis"" doesn't conform to '_{0,2}TypeAliasShouldBeLikeThis' pattern":HIGH
diff --git a/tests/lint/test_caching.py b/tests/lint/test_caching.py
index fe6ccc234..55c2b54dd 100644
--- a/tests/lint/test_caching.py
+++ b/tests/lint/test_caching.py
@@ -98,6 +98,7 @@ def linter_stats() -> LinterStats:
module=10,
variable=11,
typevar=12,
+ typealias=13,
)
)