1context("rstudio_source_markers")
2test_that("it returns markers which match lints", {
3  with_mock(`rstudioapi::callFun` = function(...) return(list(...)),
4    lint1 <- structure(
5      list(
6        Lint(filename = "test_file",
7          line_number = 1,
8          column_number = 2,
9          type = "error",
10          line = "a line",
11          message = "hi")
12        ),
13      class = "lints"
14      ),
15    marker1 <- rstudio_source_markers(lint1),
16
17    expect_equal(marker1$name, "lintr"),
18    expect_equal(marker1$markers[[1]]$type, lint1[[1]]$type),
19    expect_equal(marker1$markers[[1]]$file, lint1[[1]]$filename),
20    expect_equal(marker1$markers[[1]]$line, lint1[[1]]$line_number),
21    expect_equal(marker1$markers[[1]]$column, lint1[[1]]$column_number),
22    expect_equal(marker1$markers[[1]]$message, lint1[[1]]$message),
23
24    lint2 <- structure(
25      list(
26        Lint(filename = "test_file",
27          line_number = 1,
28          column_number = 2,
29          type = "error",
30          line = "a line",
31          message = "hi"),
32        Lint(filename = "test_file2",
33          line_number = 10,
34          column_number = 5,
35          type = "warning",
36          message = "test a message")
37        ),
38      class = "lints"
39      ),
40
41    marker2 <- rstudio_source_markers(lint2),
42
43    expect_equal(marker2$name, "lintr"),
44    expect_equal(marker2$markers[[1]]$type, lint2[[1]]$type),
45    expect_equal(marker2$markers[[1]]$file, lint2[[1]]$filename),
46    expect_equal(marker2$markers[[1]]$line, lint2[[1]]$line_number),
47    expect_equal(marker2$markers[[1]]$column, lint2[[1]]$column_number),
48    expect_equal(marker2$markers[[1]]$message, lint2[[1]]$message),
49
50    expect_equal(marker2$name, "lintr"),
51    expect_equal(marker2$markers[[2]]$type, lint2[[2]]$type),
52    expect_equal(marker2$markers[[2]]$file, lint2[[2]]$filename),
53    expect_equal(marker2$markers[[2]]$line, lint2[[2]]$line_number),
54    expect_equal(marker2$markers[[2]]$column, lint2[[2]]$column_number),
55    expect_equal(marker2$markers[[2]]$message, lint2[[2]]$message)
56  )})
57
58test_that("it prepends the package path if it exists", {
59  with_mock(`rstudioapi::callFun` = function(...) return(list(...)),
60    lint3 <- structure(
61      list(
62        Lint(filename = "test_file",
63          line_number = 1,
64          column_number = 2,
65          type = "error",
66          line = "a line",
67          message = "hi")
68        ),
69      class = "lints",
70      path = "test"
71      ),
72    marker3 <- rstudio_source_markers(lint3),
73    expect_equal(marker3$name, "lintr"),
74    expect_equal(marker3$basePath, "test"), # nolint
75    expect_equal(marker3$markers[[1]]$type, lint3[[1]]$type),
76    expect_equal(marker3$markers[[1]]$file, file.path("test", lint3[[1]]$filename)),
77    expect_equal(marker3$markers[[1]]$line, lint3[[1]]$line_number),
78    expect_equal(marker3$markers[[1]]$column, lint3[[1]]$column_number),
79    expect_equal(marker3$markers[[1]]$message, lint3[[1]]$message)
80  )
81})
82test_that("it returns an empty list of markers if there are no lints", {
83  with_mock(`rstudioapi::callFun` = function(...) return(list(...)),
84    lint4 <- structure(
85      list(),
86      class = "lints"
87    ),
88    marker4 <- rstudio_source_markers(lint4),
89
90    expect_equal(marker4$name, "lintr"),
91    expect_equal(marker4$markers, list())
92  )
93})
94