summaryrefslogtreecommitdiff
path: root/tests/functional/u
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2021-07-29 23:24:29 +0200
committerGitHub <noreply@github.com>2021-07-29 23:24:29 +0200
commit23412dc98f895a0262119320e54ad78ec4e108bc (patch)
tree665cf02ae489a9181ede523e72cbf2f63f3285a2 /tests/functional/u
parentca3bc53fd8d628473fba25c7736d0abfac8e4a4a (diff)
downloadpylint-git-23412dc98f895a0262119320e54ad78ec4e108bc.tar.gz
Add new checkers ``use-list-literal`` and ``use-dict-literal`` (#4769)
* Add ``use-list-literal`` and ``use-dict-literal`` This adds two checks for when empty lists and dicts are created using a function call instead of their literals. This closes #4365 * Conform code to use-list-literal, use-dict-literal With addition of the use-list-literal and use-dict-literal checkers some code had to be updated. As there is a real performance difference, the literal is preferred when it is as clear as using the function call. * Conform test to use-list-literal, use-dict-literal With addition of the use-list-literal and use-dict-literal checkers some code had to be updated. As there is a real performance difference, the literal is preferred when it is as clear as using the function call. For some tests ignoring the checker seemed better for clarity of the test. Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com> Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
Diffstat (limited to 'tests/functional/u')
-rw-r--r--tests/functional/u/unnecessary/unnecessary_comprehension.py6
-rw-r--r--tests/functional/u/unnecessary/unnecessary_dict_index_lookup.py4
-rw-r--r--tests/functional/u/unnecessary/unnecessary_lambda.py2
-rw-r--r--tests/functional/u/use/use_literal_dict.py7
-rw-r--r--tests/functional/u/use/use_literal_dict.txt1
-rw-r--r--tests/functional/u/use/use_literal_list.py9
-rw-r--r--tests/functional/u/use/use_literal_list.txt1
-rw-r--r--tests/functional/u/use/using_constant_test.py2
8 files changed, 25 insertions, 7 deletions
diff --git a/tests/functional/u/unnecessary/unnecessary_comprehension.py b/tests/functional/u/unnecessary/unnecessary_comprehension.py
index d6a3d1e3b..3d76f6e66 100644
--- a/tests/functional/u/unnecessary/unnecessary_comprehension.py
+++ b/tests/functional/u/unnecessary/unnecessary_comprehension.py
@@ -13,7 +13,7 @@
[2 * x for x in iterable] # exclude useful comprehensions
[(x, y, 1) for x, y in iterable] # exclude useful comprehensions
# Test case for issue #4499
-a_dict = dict()
+a_dict = {}
[(k, v) for k, v in a_dict.items()] # [unnecessary-comprehension]
# Set comprehensions
@@ -39,8 +39,8 @@ a_dict = dict()
{2 * x: 3 + x for x in iterable} # exclude useful comprehensions
# Some additional tests on helptext -- when object is already a list/set/dict
-my_list = list()
-my_dict = dict()
+my_list = []
+my_dict = {}
my_set = set()
[elem for elem in my_list] # [unnecessary-comprehension]
diff --git a/tests/functional/u/unnecessary/unnecessary_dict_index_lookup.py b/tests/functional/u/unnecessary/unnecessary_dict_index_lookup.py
index f166e6c72..55dd5688c 100644
--- a/tests/functional/u/unnecessary/unnecessary_dict_index_lookup.py
+++ b/tests/functional/u/unnecessary/unnecessary_dict_index_lookup.py
@@ -1,7 +1,7 @@
# pylint: disable=missing-docstring, too-few-public-methods, expression-not-assigned, line-too-long
-a_dict = dict()
-b_dict = dict()
+a_dict = {}
+b_dict = {}
for k, v in a_dict.items():
print(a_dict[k]) # [unnecessary-dict-index-lookup]
diff --git a/tests/functional/u/unnecessary/unnecessary_lambda.py b/tests/functional/u/unnecessary/unnecessary_lambda.py
index f0bd775f3..91f6bf86d 100644
--- a/tests/functional/u/unnecessary/unnecessary_lambda.py
+++ b/tests/functional/u/unnecessary/unnecessary_lambda.py
@@ -1,4 +1,4 @@
-# pylint: disable=undefined-variable
+# pylint: disable=undefined-variable, use-list-literal
"""test suspicious lambda expressions
"""
diff --git a/tests/functional/u/use/use_literal_dict.py b/tests/functional/u/use/use_literal_dict.py
new file mode 100644
index 000000000..3377b4e63
--- /dev/null
+++ b/tests/functional/u/use/use_literal_dict.py
@@ -0,0 +1,7 @@
+# pylint: disable=missing-docstring, invalid-name
+
+x = dict() # [use-dict-literal]
+x = dict(a="1", b=None, c=3)
+x = dict(zip(["a", "b", "c"], [1, 2, 3]))
+x = {}
+x = {"a": 1, "b": 2, "c": 3}
diff --git a/tests/functional/u/use/use_literal_dict.txt b/tests/functional/u/use/use_literal_dict.txt
new file mode 100644
index 000000000..eede5530d
--- /dev/null
+++ b/tests/functional/u/use/use_literal_dict.txt
@@ -0,0 +1 @@
+use-dict-literal:3:4::"Consider using {} instead of dict()"
diff --git a/tests/functional/u/use/use_literal_list.py b/tests/functional/u/use/use_literal_list.py
new file mode 100644
index 000000000..78614a49d
--- /dev/null
+++ b/tests/functional/u/use/use_literal_list.py
@@ -0,0 +1,9 @@
+# pylint: disable=missing-docstring, invalid-name
+
+x = list() # [use-list-literal]
+x = list("string")
+x = list(range(3))
+x = []
+x = ["string"]
+x = [1, 2, 3]
+x = [range(3)]
diff --git a/tests/functional/u/use/use_literal_list.txt b/tests/functional/u/use/use_literal_list.txt
new file mode 100644
index 000000000..07987027d
--- /dev/null
+++ b/tests/functional/u/use/use_literal_list.txt
@@ -0,0 +1 @@
+use-list-literal:3:4::"Consider using [] instead of list()"
diff --git a/tests/functional/u/use/using_constant_test.py b/tests/functional/u/use/using_constant_test.py
index b3d06230a..74b8a9c1a 100644
--- a/tests/functional/u/use/using_constant_test.py
+++ b/tests/functional/u/use/using_constant_test.py
@@ -2,7 +2,7 @@
# pylint: disable=invalid-name, missing-docstring,too-few-public-methods
# pylint: disable=no-init,expression-not-assigned, useless-object-inheritance
# pylint: disable=missing-parentheses-for-call-in-test, unnecessary-comprehension, condition-evals-to-constant
-
+# pylint: disable=use-list-literal, use-dict-literal
import collections