1context("semicolon_terminator_linter") 2 3trail_msg <- "Trailing semicolons are not needed." 4comp_msg <- "Compound semicolons are not needed. Replace them by a newline." 5 6test_that("Lint all semicolons", { 7 linter <- semicolon_terminator_linter() 8 9 # No semicolon 10 expect_lint("", NULL, linter) 11 expect_lint("a <- 1", NULL, linter) 12 expect_lint("function() {a <- 1}", NULL, linter) 13 expect_lint("a <- \"foo;bar\"", NULL, linter) 14 expect_lint("function() {a <- \"foo;bar\"}", NULL, linter) 15 expect_lint("a <- FALSE # ok; cool!", NULL, linter) 16 expect_lint("function() {\na <- FALSE # ok; cool!\n}", NULL, linter) 17 18 # Trailing semicolons 19 expect_lint("a <- 1;", 20 list(message=trail_msg, line_number=1L, column_number=7L), 21 linter) 22 expect_lint("function(){a <- 1;}", 23 list(message=trail_msg, line_number=1L, column_number=18L), 24 linter) 25 expect_lint("a <- 1; \n", 26 list(message=trail_msg, line_number=1L, column_number=7L), 27 linter) 28 expect_lint("function(){a <- 1; \n}", 29 list(message=trail_msg, line_number=1L, column_number=18L), 30 linter) 31 32 # Compound semicolons 33 expect_lint("a <- 1;b <- 2", 34 list(message=comp_msg, line_number=1L, column_number=7L), 35 linter) 36 expect_lint("function() {a <- 1;b <- 2}\n", 37 list(message=comp_msg, line_number=1L, column_number=19L), 38 linter) 39 expect_lint("foo <-\n 1 ; foo <- 1.23", 40 list(message=comp_msg, line_number=2L, column_number=6L), 41 linter) 42 expect_lint("function(){\nfoo <-\n 1 ; foo <- 1.23\n}", 43 list(message=comp_msg, line_number=3L, column_number=6L), 44 linter) 45 46 # Multiple, mixed semicolons", { 47 expect_lint("a <- 1 ; b <- 2;\nc <- 3;", 48 list( 49 list(message=comp_msg, line_number=1L, column_number=8L), 50 list(message=trail_msg, line_number=1L, column_number=16L), 51 list(message=trail_msg, line_number=2L, column_number=7L) 52 ), 53 linter) 54 expect_lint("function() { a <- 1 ; b <- 2;\nc <- 3;}", 55 list( 56 list(message=comp_msg, line_number=1L, column_number=21L), 57 list(message=trail_msg, line_number=1L, column_number=29L), 58 list(message=trail_msg, line_number=2L, column_number=7L) 59 ), 60 linter) 61}) 62 63 64test_that("Compound semicolons only", { 65 linter <- semicolon_terminator_linter(semicolon = "compound") 66 expect_lint("a <- 1;", NULL, linter) 67 expect_lint("function(){a <- 1;}", NULL, linter) 68 expect_lint("a <- 1; \n", NULL, linter) 69 expect_lint("function(){a <- 1; \n}", NULL, linter) 70}) 71 72 73test_that("Trailing semicolons only", { 74 linter <- semicolon_terminator_linter(semicolon = "trailing") 75 expect_lint("a <- 1;b <- 2", NULL, linter) 76 expect_lint("function() {a <- 1;b <- 2}\n", NULL, linter) 77 expect_lint("f <-\n 1 ;f <- 1.23", NULL, linter) 78 expect_lint("function(){\nf <-\n 1 ;f <- 1.23\n}", NULL, linter) 79}) 80