Skip to content

Commit 0f0b17c

Browse files
Customize lint message (#2415)
1 parent 51913f1 commit 0f0b17c

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

Diff for: R/equals_na_linter.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,12 @@ equals_na_linter <- function() {
5050
xml <- source_expression$xml_parsed_content
5151

5252
bad_expr <- xml_find_all(xml, xpath)
53+
op <- xml_find_first(bad_expr, "EQ | NE | SPECIAL")
5354

5455
xml_nodes_to_lints(
5556
bad_expr,
5657
source_expression,
57-
lint_message = "Use is.na for comparisons to NA (not == or != or %in%)",
58+
lint_message = sprintf("Use is.na() instead of x %s NA", xml_text(op)),
5859
type = "warning"
5960
)
6061
})

Diff for: tests/testthat/test-equals_na_linter.R

+22-6
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ patrick::with_parameters_test_that(
2727
"equals_na_linter blocks disallowed usages for all combinations of operators and types of NAs",
2828
expect_lint(
2929
paste("x", operation, type_na),
30-
rex::rex("Use is.na for comparisons to NA (not == or != or %in%)"),
30+
rex::rex("Use is.na() instead of x ", operation, " NA"),
3131
equals_na_linter()
3232
),
3333
.cases = tibble::tribble(
@@ -52,15 +52,31 @@ patrick::with_parameters_test_that(
5252

5353
test_that("equals_na_linter blocks disallowed usages in edge cases", {
5454
linter <- equals_na_linter()
55-
lint_msg <- rex::rex("Use is.na for comparisons to NA (not == or != or %in%)")
55+
lint_msg_part <- "Use is.na() instead of x "
5656

5757
# missing spaces around operators
58-
expect_lint("x==NA", list(message = lint_msg, line_number = 1L, column_number = 1L), linter)
59-
expect_lint("x!=NA", list(message = lint_msg, line_number = 1L, column_number = 1L), linter)
58+
expect_lint(
59+
"x==NA",
60+
list(message = rex::rex(lint_msg_part, "== NA"), line_number = 1L, column_number = 1L),
61+
linter
62+
)
63+
expect_lint(
64+
"x!=NA",
65+
list(message = rex::rex(lint_msg_part, "!= NA"), line_number = 1L, column_number = 1L),
66+
linter
67+
)
6068

6169
# order doesn't matter
62-
expect_lint("NA == x", list(message = lint_msg, line_number = 1L, column_number = 1L), linter)
70+
expect_lint(
71+
"NA == x",
72+
list(message = rex::rex(lint_msg_part, "== NA"), line_number = 1L, column_number = 1L),
73+
linter
74+
)
6375

6476
# correct line number for multiline code
65-
expect_lint("x ==\nNA", list(line_number = 1L, column_number = 1L, ranges = list(c(1L, 4L))), linter)
77+
expect_lint(
78+
"x ==\nNA",
79+
list(line_number = 1L, column_number = 1L, ranges = list(c(1L, 4L))),
80+
linter
81+
)
6682
})

0 commit comments

Comments
 (0)