aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/skylark/javatests/com/google/devtools/skylark
diff options
context:
space:
mode:
authorGravatar fzaiser <fzaiser@google.com>2017-10-12 18:56:35 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-10-13 13:52:20 +0200
commitea140923af949fa0f55f2a980cbd2518fbd0bbec (patch)
tree16e6b56c178333530012975eef2dea9378bb2a4f /src/tools/skylark/javatests/com/google/devtools/skylark
parent600ab49a98bcb6d96231174b44bd4ae335de4dbf (diff)
Skylint: add categories for issues.
Having a short canonical name for each kind of finding (the category) makes it easier to document all the lints and for users to find the documentation for each lint. RELNOTES: none PiperOrigin-RevId: 171972645
Diffstat (limited to 'src/tools/skylark/javatests/com/google/devtools/skylark')
-rw-r--r--src/tools/skylark/javatests/com/google/devtools/skylark/skylint/BadOperationCheckerTest.java32
-rw-r--r--src/tools/skylark/javatests/com/google/devtools/skylark/skylint/ControlFlowCheckerTest.java49
-rw-r--r--src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DeprecationCheckerTest.java10
-rw-r--r--src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DocstringCheckerTests.java38
-rw-r--r--src/tools/skylark/javatests/com/google/devtools/skylark/skylint/LinterTest.java2
-rw-r--r--src/tools/skylark/javatests/com/google/devtools/skylark/skylint/LoadStatementCheckerTest.java6
-rw-r--r--src/tools/skylark/javatests/com/google/devtools/skylark/skylint/NamingConventionsCheckerTest.java26
-rw-r--r--src/tools/skylark/javatests/com/google/devtools/skylark/skylint/StatementWithoutEffectCheckerTest.java14
-rw-r--r--src/tools/skylark/javatests/com/google/devtools/skylark/skylint/UsageCheckerTest.java50
9 files changed, 148 insertions, 79 deletions
diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/BadOperationCheckerTest.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/BadOperationCheckerTest.java
index 00138b6b6c..ce121ffb59 100644
--- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/BadOperationCheckerTest.java
+++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/BadOperationCheckerTest.java
@@ -37,29 +37,45 @@ public class BadOperationCheckerTest {
@Test
public void dictionaryLiteralPlusOperator() {
Truth.assertThat(findIssues("{} + foo").toString())
- .contains("1:1-1:8: '+' operator is deprecated and should not be used on dictionaries");
+ .contains(
+ "1:1-1:8: '+' operator is deprecated and should not be used on dictionaries"
+ + " [deprecated-plus-dict]");
Truth.assertThat(findIssues("foo + {}").toString())
- .contains("1:1-1:8: '+' operator is deprecated and should not be used on dictionaries");
+ .contains(
+ "1:1-1:8: '+' operator is deprecated and should not be used on dictionaries"
+ + " [deprecated-plus-dict]");
Truth.assertThat(findIssues("foo += {}").toString())
- .contains("1:1-1:9: '+' operator is deprecated and should not be used on dictionaries");
+ .contains(
+ "1:1-1:9: '+' operator is deprecated and should not be used on dictionaries"
+ + " [deprecated-plus-dict]");
}
@Test
public void dictionaryComprehensionPlusOperator() {
Truth.assertThat(findIssues("{k:v for k,v in []} + foo").toString())
- .contains("1:1-1:25: '+' operator is deprecated and should not be used on dictionaries");
+ .contains(
+ "1:1-1:25: '+' operator is deprecated and should not be used on dictionaries"
+ + " [deprecated-plus-dict]");
Truth.assertThat(findIssues("foo + {k:v for k,v in []}").toString())
- .contains("1:1-1:25: '+' operator is deprecated and should not be used on dictionaries");
+ .contains(
+ "1:1-1:25: '+' operator is deprecated and should not be used on dictionaries"
+ + " [deprecated-plus-dict]");
Truth.assertThat(findIssues("foo += {k:v for k,v in []}").toString())
- .contains("1:1-1:26: '+' operator is deprecated and should not be used on dictionaries");
+ .contains(
+ "1:1-1:26: '+' operator is deprecated and should not be used on dictionaries"
+ + " [deprecated-plus-dict]");
}
@Test
public void dictionaryPlusOperatorNested() {
Truth.assertThat(findIssues("foo + ({} + bar)").toString())
- .contains("1:7-1:16: '+' operator is deprecated and should not be used on dictionaries");
+ .contains(
+ "1:7-1:16: '+' operator is deprecated and should not be used on dictionaries"
+ + " [deprecated-plus-dict]");
Truth.assertThat(findIssues("foo + (bar + {})").toString())
- .contains("1:7-1:16: '+' operator is deprecated and should not be used on dictionaries");
+ .contains(
+ "1:7-1:16: '+' operator is deprecated and should not be used on dictionaries"
+ + " [deprecated-plus-dict]");
}
@Test
diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/ControlFlowCheckerTest.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/ControlFlowCheckerTest.java
index f10aba0391..c522dcbee4 100644
--- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/ControlFlowCheckerTest.java
+++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/ControlFlowCheckerTest.java
@@ -51,7 +51,9 @@ public class ControlFlowCheckerTest {
" else:",
" return x")
.toString())
- .contains("1:1-5:12: some but not all execution paths of 'some_function' return a value");
+ .contains(
+ "1:1-5:12: some but not all execution paths of 'some_function' return a value"
+ + " [missing-return-value]");
}
@Test
@@ -65,8 +67,13 @@ public class ControlFlowCheckerTest {
" return # missing value")
.toString();
Truth.assertThat(messages)
- .contains("1:1-5:26: some but not all execution paths of 'some_function' return a value");
- Truth.assertThat(messages).contains("5:5-5:10: return value missing");
+ .contains(
+ "1:1-5:26: some but not all execution paths of 'some_function' return a value"
+ + " [missing-return-value]");
+ Truth.assertThat(messages)
+ .contains(
+ "5:5-5:10: return value missing (you can `return None` if this is desired)"
+ + " [missing-return-value]");
}
@Test
@@ -81,7 +88,9 @@ public class ControlFlowCheckerTest {
" else:",
" return not x")
.toString())
- .contains("1:1-7:16: some but not all execution paths of 'f' return a value");
+ .contains(
+ "1:1-7:16: some but not all execution paths of 'f' return a value"
+ + " [missing-return-value]");
}
@Test
@@ -97,7 +106,9 @@ public class ControlFlowCheckerTest {
" else:",
" return x")
.toString())
- .contains("1:1-8:12: some but not all execution paths of 'f' return a value");
+ .contains(
+ "1:1-8:12: some but not all execution paths of 'f' return a value"
+ + " [missing-return-value]");
}
@Test
@@ -110,7 +121,9 @@ public class ControlFlowCheckerTest {
" elif not x:",
" return not x")
.toString())
- .contains("1:1-5:16: some but not all execution paths of 'some_function' return a value");
+ .contains(
+ "1:1-5:16: some but not all execution paths of 'some_function' return a value"
+ + " [missing-return-value]");
}
@Test
@@ -123,7 +136,9 @@ public class ControlFlowCheckerTest {
" print('foo')",
" # return missing here")
.toString())
- .contains("1:1-5:23: some but not all execution paths of 'some_function' return a value");
+ .contains(
+ "1:1-5:23: some but not all execution paths of 'some_function' return a value"
+ + " [missing-return-value]");
}
@Test
@@ -136,7 +151,9 @@ public class ControlFlowCheckerTest {
" print('foo')",
" # return missing here")
.toString())
- .contains("1:1-5:23: some but not all execution paths of 'some_function' return a value");
+ .contains(
+ "1:1-5:23: some but not all execution paths of 'some_function' return a value"
+ + " [missing-return-value]");
}
@Test
@@ -149,8 +166,13 @@ public class ControlFlowCheckerTest {
" return x")
.toString();
Truth.assertThat(messages)
- .contains("1:1-4:10: some but not all execution paths of 'some_function' return a value");
- Truth.assertThat(messages).contains("3:5-3:10: return value missing");
+ .contains(
+ "1:1-4:10: some but not all execution paths of 'some_function' return a value"
+ + " [missing-return-value]");
+ Truth.assertThat(messages)
+ .contains(
+ "3:5-3:10: return value missing (you can `return None` if this is desired)"
+ + " [missing-return-value]");
}
@Test
@@ -164,7 +186,7 @@ public class ControlFlowCheckerTest {
" fail('fail')",
" print('This line is unreachable')")
.toString();
- Truth.assertThat(messages).contains("6:3-6:35: unreachable statement");
+ Truth.assertThat(messages).contains("6:3-6:35: unreachable statement [unreachable-statement]");
}
@Test
@@ -190,7 +212,7 @@ public class ControlFlowCheckerTest {
" continue",
" print('unreachable')")
.toString();
- Truth.assertThat(messages).contains("7:5-7:24: unreachable statement");
+ Truth.assertThat(messages).contains("7:5-7:24: unreachable statement [unreachable-statement]");
}
@Test
@@ -280,7 +302,8 @@ public class ControlFlowCheckerTest {
" return x",
" # no else branch but doesn't matter since it's unreachable");
Truth.assertThat(issues).hasSize(1);
- Truth.assertThat(issues.toString()).contains("7:3-7:14: unreachable statement");
+ Truth.assertThat(issues.toString())
+ .contains("7:3-7:14: unreachable statement [unreachable-statement]");
}
@Test
diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DeprecationCheckerTest.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DeprecationCheckerTest.java
index 5d55eb7a57..cd12f4a7c8 100644
--- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DeprecationCheckerTest.java
+++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DeprecationCheckerTest.java
@@ -54,9 +54,12 @@ public class DeprecationCheckerTest {
" The deprecation should really be documented in a 'Deprecated:' section",
" but the linter should recognize this kind of deprecation as well'''")
.toString();
- Truth.assertThat(errorMessages).contains("2:3: usage of 'g' is deprecated: reason");
Truth.assertThat(errorMessages)
- .contains("3:3: usage of 'h' is deprecated: This function is DEPRECATED for some reason.");
+ .contains("2:3: usage of 'g' is deprecated: reason [deprecated-symbol]");
+ Truth.assertThat(errorMessages)
+ .contains(
+ "3:3: usage of 'h' is deprecated: This function is DEPRECATED for some reason."
+ + " [deprecated-symbol]");
}
@Test
@@ -72,7 +75,8 @@ public class DeprecationCheckerTest {
" Deprecated:",
" reason'''")
.toString();
- Truth.assertThat(errorMessages).contains("2:7: usage of 'g' is deprecated: reason");
+ Truth.assertThat(errorMessages)
+ .contains("2:7: usage of 'g' is deprecated: reason [deprecated-symbol]");
}
@Test
diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DocstringCheckerTests.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DocstringCheckerTests.java
index 8b399ccd34..377f0eed7c 100644
--- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DocstringCheckerTests.java
+++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DocstringCheckerTests.java
@@ -40,8 +40,10 @@ public class DocstringCheckerTests {
String errorMessage =
findIssues("# no module docstring", "def function():", " pass # no function docstring")
.toString();
- Truth.assertThat(errorMessage).contains("1:1-2:1: file has no module docstring");
- Truth.assertThat(errorMessage).contains("2:1-3:30: function 'function' has no docstring");
+ Truth.assertThat(errorMessage)
+ .contains("1:1-2:1: file has no module docstring [missing-docstring]");
+ Truth.assertThat(errorMessage)
+ .contains("2:1-3:30: function 'function' has no docstring [missing-docstring]");
}
@Test
@@ -57,7 +59,9 @@ public class DocstringCheckerTests {
" pass");
Truth.assertThat(errors).hasSize(1);
Truth.assertThat(errors.toString())
- .contains("3:3-6:3: incomplete docstring: the function parameters are not documented");
+ .contains(
+ "3:3-6:3: incomplete docstring: the function parameters are not documented"
+ + " [inconsistent-docstring]");
}
@Test
@@ -73,9 +77,13 @@ public class DocstringCheckerTests {
" pass")
.toString();
Truth.assertThat(errorMessage)
- .contains("2:3-6:5: incomplete docstring: parameter 'foo' not documented");
+ .contains(
+ "2:3-6:5: incomplete docstring: parameter 'foo' not documented"
+ + " [inconsistent-docstring]");
Truth.assertThat(errorMessage)
- .contains("2:3-6:5: incomplete docstring: parameter 'baz' not documented");
+ .contains(
+ "2:3-6:5: incomplete docstring: parameter 'baz' not documented"
+ + " [inconsistent-docstring]");
}
@Test
@@ -95,11 +103,11 @@ public class DocstringCheckerTests {
Truth.assertThat(errorMessage)
.contains(
"2:3-8:5: inconsistent docstring: parameter 'foo' appears in docstring"
- + " but not in function signature");
+ + " but not in function signature [inconsistent-docstring]");
Truth.assertThat(errorMessage)
.contains(
"2:3-8:5: inconsistent docstring: parameter 'baz' appears in docstring"
- + " but not in function signature");
+ + " but not in function signature [inconsistent-docstring]");
}
@Test
@@ -120,7 +128,8 @@ public class DocstringCheckerTests {
"2:3-7:5:"
+ " inconsistent docstring: order of parameters differs from function signature\n"
+ "Declaration order: p1, p2\n"
- + "Documentation order: p2, p1");
+ + "Documentation order: p2, p1\n"
+ + " [inconsistent-docstring]");
}
@Test
@@ -128,8 +137,8 @@ public class DocstringCheckerTests {
String errorMessage = findIssues("\"\"\"summary", "missing blank line\"\"\"").toString();
Truth.assertThat(errorMessage)
.contains(
- "2:1-2:18: invalid docstring format: "
- + "the one-line summary should be followed by a blank line");
+ "2:1-2:18: bad docstring format: "
+ + "the one-line summary should be followed by a blank line [bad-docstring-format]");
errorMessage =
findIssues(
@@ -142,8 +151,9 @@ public class DocstringCheckerTests {
.toString();
Truth.assertThat(errorMessage)
.contains(
- "5:1-5:29: invalid docstring format: "
- + "line indented too little (here: 1 spaces; expected: 2 spaces)");
+ "5:1-5:29: bad docstring format: "
+ + "line indented too little (here: 1 spaces; expected: 2 spaces)"
+ + " [bad-docstring-format]");
}
@Test
@@ -159,7 +169,9 @@ public class DocstringCheckerTests {
" return True");
Truth.assertThat(errors).hasSize(1);
Truth.assertThat(errors.toString())
- .contains("3:3-6:5: incomplete docstring: the return value is not documented");
+ .contains(
+ "3:3-6:5: incomplete docstring: the return value is not documented"
+ + " [inconsistent-docstring]");
}
@Test
diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/LinterTest.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/LinterTest.java
index 148aa4845e..96ff5d47f5 100644
--- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/LinterTest.java
+++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/LinterTest.java
@@ -53,6 +53,6 @@ public class LinterTest {
.contains("should be lower_snake_case"); // naming conventions checker
Truth.assertThat(errorMessages)
.contains("expression result not used"); // checker statements without effect
- Truth.assertThat(errorMessages).contains("unused definition of"); // usage checker
+ Truth.assertThat(errorMessages).contains("unused binding of"); // usage checker
}
}
diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/LoadStatementCheckerTest.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/LoadStatementCheckerTest.java
index c6cb41b543..35857e3722 100644
--- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/LoadStatementCheckerTest.java
+++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/LoadStatementCheckerTest.java
@@ -59,7 +59,8 @@ public class LoadStatementCheckerTest {
.toString();
Truth.assertThat(errorMessage)
.contains(
- "3:1-3:23: load statement should be at the top of the file (after the docstring)");
+ "3:1-3:23: load statement should be at the top of the file (after the docstring)"
+ + " [load-at-top]");
errorMessage =
findIssues(
"'''Docstring'''",
@@ -69,6 +70,7 @@ public class LoadStatementCheckerTest {
.toString();
Truth.assertThat(errorMessage)
.contains(
- "4:1-4:23: load statement should be at the top of the file (after the docstring)");
+ "4:1-4:23: load statement should be at the top of the file (after the docstring)"
+ + " [load-at-top]");
}
}
diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/NamingConventionsCheckerTest.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/NamingConventionsCheckerTest.java
index 0dc837c432..6361705c29 100644
--- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/NamingConventionsCheckerTest.java
+++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/NamingConventionsCheckerTest.java
@@ -46,13 +46,15 @@ public class NamingConventionsCheckerTest {
Truth.assertThat(errorMessage)
.contains(
"'badGlobalVariableName' should be lower_snake_case (for variables)"
- + " or UPPER_SNAKE_CASE (for constants)");
- Truth.assertThat(errorMessage).contains("'BAD_FUNCTION_NAME' should be lower_snake_case");
- Truth.assertThat(errorMessage).contains("'BadParameterName' should be lower_snake_case");
+ + " or UPPER_SNAKE_CASE (for constants) [name-with-wrong-case]");
+ Truth.assertThat(errorMessage)
+ .contains("'BAD_FUNCTION_NAME' should be lower_snake_case [name-with-wrong-case]");
+ Truth.assertThat(errorMessage)
+ .contains("'BadParameterName' should be lower_snake_case [name-with-wrong-case]");
Truth.assertThat(errorMessage)
.contains(
"'badLocalVariableName' should be lower_snake_case (for variables)"
- + " or UPPER_SNAKE_CASE (for constants)");
+ + " or UPPER_SNAKE_CASE (for constants) [name-with-wrong-case]");
}
@Test
@@ -61,11 +63,13 @@ public class NamingConventionsCheckerTest {
Truth.assertThat(errorMessage)
.contains(
"never use 'l', 'I', or 'O' as names"
- + " (they're too easily confused with 'I', 'l', or '0')");
+ + " (they're too easily confused with 'I', 'l', or '0') [confusing-name]");
Truth.assertThat(errorMessage)
- .contains("identifier 'fail' shadows a builtin; please pick a different name");
+ .contains(
+ "identifier 'fail' shadows a builtin; please pick a different name [confusing-name]");
Truth.assertThat(errorMessage)
- .contains("identifier 'True' shadows a builtin; please pick a different name");
+ .contains(
+ "identifier 'True' shadows a builtin; please pick a different name [confusing-name]");
}
@Test
@@ -74,11 +78,13 @@ public class NamingConventionsCheckerTest {
Truth.assertThat(findIssues("_ = 1", "print(_)").toString())
.contains(
"2:7-2:7:"
- + " don't use '_' as an identifier, only to ignore the result in an assignment");
+ + " don't use '_' as an identifier, only to ignore the result in an assignment"
+ + " [confusing-name]");
Truth.assertThat(findIssues("__ = 1").toString())
.contains(
"1:1-1:2:"
- + " identifier '__' consists only of underscores; please pick a different name");
+ + " identifier '__' consists only of underscores; please pick a different name"
+ + " [confusing-name]");
}
@Test
@@ -102,7 +108,7 @@ public class NamingConventionsCheckerTest {
public void testProviderNameMustBeCamelCase() throws Exception {
Truth.assertThat(findIssues("FooBar = provider()")).isEmpty();
Truth.assertThat(findIssues("foo_bar = provider()").toString())
- .contains("provider name 'foo_bar' should be UpperCamelCase");
+ .contains("provider name 'foo_bar' should be UpperCamelCase [name-with-wrong-case]");
}
@Test
diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/StatementWithoutEffectCheckerTest.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/StatementWithoutEffectCheckerTest.java
index d160d2357e..beac94c3c7 100644
--- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/StatementWithoutEffectCheckerTest.java
+++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/StatementWithoutEffectCheckerTest.java
@@ -38,12 +38,12 @@ public class StatementWithoutEffectCheckerTest {
public void reportUselessExpressionStatements() throws Exception {
String messages =
findIssues("1", "len", "'string'", "'a'.len", "1 + 1", "[1, 2, 3]").toString();
- Truth.assertThat(messages).contains("1:1-1:1: expression result not used");
- Truth.assertThat(messages).contains("2:1-2:3: expression result not used");
- Truth.assertThat(messages).contains("3:1-3:8: expression result not used");
- Truth.assertThat(messages).contains("4:1-4:7: expression result not used");
- Truth.assertThat(messages).contains("5:1-5:5: expression result not used");
- Truth.assertThat(messages).contains("6:1-6:9: expression result not used");
+ Truth.assertThat(messages).contains("1:1-1:1: expression result not used [no-effect]");
+ Truth.assertThat(messages).contains("2:1-2:3: expression result not used [no-effect]");
+ Truth.assertThat(messages).contains("3:1-3:8: expression result not used [no-effect]");
+ Truth.assertThat(messages).contains("4:1-4:7: expression result not used [no-effect]");
+ Truth.assertThat(messages).contains("5:1-5:5: expression result not used [no-effect]");
+ Truth.assertThat(messages).contains("6:1-6:9: expression result not used [no-effect]");
}
@Test
@@ -58,7 +58,7 @@ public class StatementWithoutEffectCheckerTest {
findIssues(
"def f():", " [print(x) for x in range(5)] # should be replaced by for-loop")
.toString())
- .contains("2:3-2:30: expression result not used");
+ .contains("2:3-2:30: expression result not used [no-effect]");
}
@Test
diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/UsageCheckerTest.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/UsageCheckerTest.java
index de61011a0e..b477cce1a8 100644
--- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/UsageCheckerTest.java
+++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/UsageCheckerTest.java
@@ -38,37 +38,41 @@ public class UsageCheckerTest {
@Test
public void reportUnusedImports() throws Exception {
String message = findIssues("load('foo', 'x', 'y', _z = 'Z')").toString();
- Truth.assertThat(message).contains("1:13-1:15: unused definition of 'x'");
- Truth.assertThat(message).contains("1:18-1:20: unused definition of 'y'");
- Truth.assertThat(message).contains("1:23-1:24: unused definition of '_z'");
+ Truth.assertThat(message).contains("1:13-1:15: unused binding of 'x' [unused-binding]");
+ Truth.assertThat(message).contains("1:18-1:20: unused binding of 'y' [unused-binding]");
+ Truth.assertThat(message).contains("1:23-1:24: unused binding of '_z' [unused-binding]");
}
@Test
public void reportUnusedGlobals() throws Exception {
String message = findIssues("_UNUSED = len([])", "def _unused(): pass").toString();
- Truth.assertThat(message).contains("1:1-1:7: unused definition of '_UNUSED'");
- Truth.assertThat(message).contains("2:5-2:11: unused definition of '_unused'");
+ Truth.assertThat(message).contains("1:1-1:7: unused binding of '_UNUSED' [unused-binding]");
+ Truth.assertThat(message).contains("2:5-2:11: unused binding of '_unused' [unused-binding]");
}
@Test
public void reportUnusedLocals() throws Exception {
String message = findIssues("def some_function(param):", " local, local2 = 1, 3").toString();
- Truth.assertThat(message).contains("1:19-1:23: unused definition of 'param'");
+ Truth.assertThat(message).contains("1:19-1:23: unused binding of 'param'");
Truth.assertThat(message)
- .contains("you can add `_ignore = [<param1>, <param2>, ...]` to the function body.");
- Truth.assertThat(message).contains("2:3-2:7: unused definition of 'local'");
- Truth.assertThat(message).contains("you can use '_' or rename it to '_local'");
- Truth.assertThat(message).contains("2:10-2:15: unused definition of 'local2'");
- Truth.assertThat(message).contains("you can use '_' or rename it to '_local2'");
+ .contains(
+ "you can add `_ignore = [<param1>, <param2>, ...]` to the function body."
+ + " [unused-binding]");
+ Truth.assertThat(message).contains("2:3-2:7: unused binding of 'local'");
+ Truth.assertThat(message)
+ .contains("you can use '_' or rename it to '_local'. [unused-binding]");
+ Truth.assertThat(message).contains("2:10-2:15: unused binding of 'local2'");
+ Truth.assertThat(message)
+ .contains("you can use '_' or rename it to '_local2'. [unused-binding]");
}
@Test
public void reportUnusedComprehensionVariable() throws Exception {
String message = findIssues("[[2 for y in []] for x in []]").toString();
- Truth.assertThat(message).contains("1:9-1:9: unused definition of 'y'");
- Truth.assertThat(message).contains("you can use '_' or rename it to '_y'");
- Truth.assertThat(message).contains("1:22-1:22: unused definition of 'x'");
- Truth.assertThat(message).contains("you can use '_' or rename it to '_x'");
+ Truth.assertThat(message).contains("1:9-1:9: unused binding of 'y'");
+ Truth.assertThat(message).contains("you can use '_' or rename it to '_y'. [unused-binding]");
+ Truth.assertThat(message).contains("1:22-1:22: unused binding of 'x'");
+ Truth.assertThat(message).contains("you can use '_' or rename it to '_x'. [unused-binding]");
}
@Test
@@ -79,19 +83,19 @@ public class UsageCheckerTest {
" x = [[] for x in []]",
" print(x)")
.toString())
- .contains("2:15-2:15: unused definition of 'x'");
+ .contains("2:15-2:15: unused binding of 'x'");
}
@Test
public void reportShadowedVariable() throws Exception {
Truth.assertThat(findIssues("def some_function():", " x = [x for x in []]").toString())
- .contains("2:3-2:3: unused definition of 'x'");
+ .contains("2:3-2:3: unused binding of 'x'");
}
@Test
public void reportReassignedUnusedVariable() throws Exception {
Truth.assertThat(findIssues("def some_function():", " x = 1", " x += 2").toString())
- .contains("3:3-3:3: unused definition of 'x'");
+ .contains("3:3-3:3: unused binding of 'x'");
}
@Test
@@ -106,7 +110,7 @@ public class UsageCheckerTest {
" x = 4",
" print(x)")
.toString())
- .contains("2:3-2:3: unused definition of 'x'");
+ .contains("2:3-2:3: unused binding of 'x'");
}
@Test
@@ -118,7 +122,7 @@ public class UsageCheckerTest {
" print(x)",
" x = 2")
.toString();
- Truth.assertThat(messages).contains("4:5-4:5: unused definition of 'x'");
+ Truth.assertThat(messages).contains("4:5-4:5: unused binding of 'x'");
}
@Test
@@ -135,14 +139,16 @@ public class UsageCheckerTest {
" y += 2",
" print(y)")
.toString();
- Truth.assertThat(message).contains("8:3-8:3: identifier 'y' may not have been initialized");
+ Truth.assertThat(message)
+ .contains("8:3-8:3: variable 'y' may not have been initialized [uninitialized-variable]");
}
@Test
public void reportUninitializedAfterForLoop() throws Exception {
String message =
findIssues("def some_function():", " for _ in []:", " y = 1", " print(y)").toString();
- Truth.assertThat(message).contains("4:9-4:9: identifier 'y' may not have been initialized");
+ Truth.assertThat(message)
+ .contains("4:9-4:9: variable 'y' may not have been initialized [uninitialized-variable]");
}
@Test