File: test-error.R

package info (click to toggle)
r-cran-lintr 3.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,396 kB
  • sloc: sh: 13; xml: 10; makefile: 2
file content (51 lines) | stat: -rw-r--r-- 1,853 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
test_that("returns the correct linting", {
  msg_escape_char <- rex::rex("is an unrecognized escape in character string")
  expect_lint('"\\R"', msg_escape_char)
  expect_lint('"\\A"', msg_escape_char)
  expect_lint('"\\z"', msg_escape_char)
  placeholder_linter <- function(...) NULL
  class(placeholder_linter) <- "linter"
  attr(placeholder_linter, "name") <- "null"
  expect_lint(
    "a <- 1
    function() {
    b",
    rex::rex("unexpected end of input"),
    placeholder_linter
  )

  linter <- equals_na_linter()
  expect_lint("x=", rex::rex("unexpected end of input"), linter)
  expect_lint("x += 1", rex::rex("unexpected '='"), linter)
  expect_lint("{x = }", rex::rex("unexpected '}'"), linter)
  expect_lint("x = ;", rex::rex("unexpected ';'"), linter)

  # no parsing error is expected for the equals-assignment in this code
  expect_lint("purrr::partial(list, 1, ... = , 2)", NULL, linter)

  # trigger error with base only, and extract it to match against
  #   what comes out from expect_lint.
  get_base_message <- function(e) {
    rex::re_substitutes(
      data = conditionMessage(e),
      pattern = rex::rex(
        list(start, "<text>:", any_digits, ":", any_digits, ": ") %or%
          list(newline, anything, newline, anything, end)
      ),
      replacement = "",
      global = TRUE
    )
  }

  expected_message <- tryCatch(parse(text = "\\"), error = get_base_message)
  expect_lint("\\", rex::rex(expected_message))

  msg_zero_length_var <- rex::rex("attempt to use zero-length variable name")
  expect_lint("``", msg_zero_length_var)
  expect_lint("``()", msg_zero_length_var)
  expect_lint("''()", msg_zero_length_var)
  expect_lint('""()', msg_zero_length_var)
  expect_lint("fun(''=42)", msg_zero_length_var)
  expect_lint('fun(""=42)', msg_zero_length_var)
  expect_lint('fun(a=1,""=42)', msg_zero_length_var)
})