From 20d37fa943e9627beba8fc24f2e216eca9e8c956 Mon Sep 17 00:00:00 2001
From: Michael Chirico <michaelchirico4@gmail.com>
Date: Sun, 6 Dec 2020 04:34:48 -0500
Subject: [PATCH] Enable tests (#669)

* remove line in .lintr

* lint files in tests/

* remove duplication
---
 .lintr                                              | 2 +-
 tests/testthat/test-T_and_F_symbol_linter.R         | 1 -
 tests/testthat/test-absolute_path_linter.R          | 2 +-
 tests/testthat/test-closed_curly_linter.R           | 8 ++++----
 tests/testthat/test-defaults.R                      | 2 +-
 tests/testthat/test-extraction_operator_linter.R    | 2 --
 tests/testthat/test-get_source_expressions.R        | 8 +++-----
 tests/testthat/test-lint_file.R                     | 4 ++--
 tests/testthat/test-lint_package.R                  | 8 +++-----
 tests/testthat/test-open_curly_linter.R             | 2 +-
 tests/testthat/test-seq_linter.R                    | 2 +-
 tests/testthat/test-spaces_inside_linter.R          | 4 +---
 tests/testthat/test-unneeded_concatenation_linter.R | 3 ---
 13 files changed, 18 insertions(+), 30 deletions(-)

diff --git a/.lintr b/.lintr
index a111d08d6..858b126e2 100644
--- a/.lintr
+++ b/.lintr
@@ -8,7 +8,7 @@ linters: with_defaults( # The following TODOs are part of an effort to have {lin
 exclusions: list(
   "inst/doc/creating_linters.R" = 1,
   "inst/example/bad.R",
-  "tests", # TODO remove this
+  "tests/testthat/default_linter_testcode.R",
   "tests/testthat/dummy_packages",
   "tests/testthat/exclusions-test",
   "tests/testthat/knitr_formats",
diff --git a/tests/testthat/test-T_and_F_symbol_linter.R b/tests/testthat/test-T_and_F_symbol_linter.R
index c31cfef6f..c462ce0d7 100644
--- a/tests/testthat/test-T_and_F_symbol_linter.R
+++ b/tests/testthat/test-T_and_F_symbol_linter.R
@@ -16,4 +16,3 @@ test_that("returns the correct linting", {
               ),
               linter)
 })
-
diff --git a/tests/testthat/test-absolute_path_linter.R b/tests/testthat/test-absolute_path_linter.R
index 39715659b..e0706510f 100644
--- a/tests/testthat/test-absolute_path_linter.R
+++ b/tests/testthat/test-absolute_path_linter.R
@@ -166,7 +166,7 @@ test_that("returns the correct linting", {
     "./blah",
     encodeString("blah\\file.txt")
   )
-  for(path in non_absolute_path_strings) {
+  for (path in non_absolute_path_strings) {
     expect_lint(single_quote(path), NULL, linter)
     expect_lint(double_quote(path), NULL, linter)
   }
diff --git a/tests/testthat/test-closed_curly_linter.R b/tests/testthat/test-closed_curly_linter.R
index c3ead0a0d..fbc5321ff 100644
--- a/tests/testthat/test-closed_curly_linter.R
+++ b/tests/testthat/test-closed_curly_linter.R
@@ -35,18 +35,18 @@ test_that("returns the correct linting", {
       rex("Closing curly-braces should always be on their own line, unless it's followed by an else.")
       ),
     closed_curly_linter())
-  
+
   expect_lint("eval(bquote({...}))",
               NULL,
               closed_curly_linter())
-  
+
   expect_lint("fun({\n  statements\n}, param)",
               NULL,
               closed_curly_linter())
-  
+
   expect_lint("out <- lapply(stuff, function(i) {\n  do_something(i)\n}) %>% unlist",
               NULL,
               closed_curly_linter())
 
-  expect_lint('{{x}}', NULL, closed_curly_linter())
+  expect_lint("{{x}}", NULL, closed_curly_linter())
 })
diff --git a/tests/testthat/test-defaults.R b/tests/testthat/test-defaults.R
index 609c7cc45..6dbb5b27c 100644
--- a/tests/testthat/test-defaults.R
+++ b/tests/testthat/test-defaults.R
@@ -18,7 +18,7 @@ test_that("undesirable functions and operators", {
     expect_is(x, "list")
     expect_gt(length(x), 0L)
     expect_true(all(names(x) != ""))
-    expect_true(all(vapply(x, function(x) {is.na(x) || is.character(x)}, logical(1L))))
+    expect_true(all(vapply(x, function(x) is.na(x) || is.character(x), logical(1L))))
     expect_true(all(vapply(x, length, integer(1L)) == 1L))
   }
 })
diff --git a/tests/testthat/test-extraction_operator_linter.R b/tests/testthat/test-extraction_operator_linter.R
index c32c7a3d2..327d19f9f 100644
--- a/tests/testthat/test-extraction_operator_linter.R
+++ b/tests/testthat/test-extraction_operator_linter.R
@@ -21,5 +21,3 @@ test_that("linter returns the correct linting", {
               ),
               linter)
 })
-
-
diff --git a/tests/testthat/test-get_source_expressions.R b/tests/testthat/test-get_source_expressions.R
index e43473bfd..038437318 100644
--- a/tests/testthat/test-get_source_expressions.R
+++ b/tests/testthat/test-get_source_expressions.R
@@ -1,12 +1,10 @@
-context("get_source_expression")
-
-
 with_content_to_parse <- function(content, code) {
   f <- tempfile()
   on.exit(unlink(f))
   writeLines(content, f)
-  pc <- lapply(get_source_expressions(f)[["expressions"]], `[[`, "parsed_content")
-  eval(substitute(code))
+  content_env <- new.env()
+  content_env$pc <- lapply(get_source_expressions(f)[["expressions"]], `[[`, "parsed_content")
+  eval(substitute(code), envir = content_env)
 }
 
 
diff --git a/tests/testthat/test-lint_file.R b/tests/testthat/test-lint_file.R
index 8596b2b8e..6379a8e0c 100644
--- a/tests/testthat/test-lint_file.R
+++ b/tests/testthat/test-lint_file.R
@@ -88,7 +88,7 @@ test_that("lint() results do not depend on the position of the .lintr", {
     )
   )
 
-  lints_with_config_in_source_dir <- withr::with_dir(
+  lints_with_config_in_r_dir <- withr::with_dir(
     pkg_path,
     lint_with_config(
       config_path = "R/.lintr",
@@ -102,7 +102,7 @@ test_that("lint() results do not depend on the position of the .lintr", {
   )
   expect_equal(
     as.data.frame(lints_with_config_at_pkg_root),
-    as.data.frame(lints_with_config_in_source_dir),
+    as.data.frame(lints_with_config_in_r_dir),
     info = paste(
       "lints for a source file should be independent of whether the .lintr",
       "file is in the project-root or the source-file-directory"
diff --git a/tests/testthat/test-lint_package.R b/tests/testthat/test-lint_package.R
index 9b08d89ac..f572419b6 100644
--- a/tests/testthat/test-lint_package.R
+++ b/tests/testthat/test-lint_package.R
@@ -1,13 +1,11 @@
-context("Integration tests for `lint_package`")
-
 # When called from inside a package:
-# lint_package(".")
+# lint_package(".") # nolint
 # .. should give the same results as when called from outside the package
 # with:
-# lint_package(path_to_package)
+# lint_package(path_to_package) # nolint
 
 # Template packages for use in testing are stored in
-# `tests/testthat/dummy_packages/<pkgName>`
+# tests/testthat/dummy_packages/<pkgName>
 # These packages should not have a .lintr file:  Hardcoding a .lintr in a
 # dummy package throws problems during `R CMD check` (they are flagged as
 # hidden files, but can't be added to RBuildIgnore since they should be
diff --git a/tests/testthat/test-open_curly_linter.R b/tests/testthat/test-open_curly_linter.R
index dca514a77..6a66d473b 100644
--- a/tests/testthat/test-open_curly_linter.R
+++ b/tests/testthat/test-open_curly_linter.R
@@ -47,5 +47,5 @@ test_that("returns the correct linting", {
     open_curly_linter()
   )
 
-  expect_lint('{{x}}', NULL, open_curly_linter())
+  expect_lint("{{x}}", NULL, open_curly_linter())
 })
diff --git a/tests/testthat/test-seq_linter.R b/tests/testthat/test-seq_linter.R
index 02a559177..9f18bc1e8 100644
--- a/tests/testthat/test-seq_linter.R
+++ b/tests/testthat/test-seq_linter.R
@@ -30,7 +30,7 @@ test_that("finds 1:length(...) expressions", {
   expect_lint("function(x) { 1:dim(x)[1L] }",
     rex("dim(...)", anything, "use seq_len"),
     seq_linter)
-  
+
   expect_lint("function(x) { 1L:dim(x)[[1]] }",
     rex("dim(...)", anything, "use seq_len"),
     seq_linter)
diff --git a/tests/testthat/test-spaces_inside_linter.R b/tests/testthat/test-spaces_inside_linter.R
index 3932d2335..4ab573316 100644
--- a/tests/testthat/test-spaces_inside_linter.R
+++ b/tests/testthat/test-spaces_inside_linter.R
@@ -1,5 +1,3 @@
-context("spaces_inside_linter")
-
 test_that("returns the correct linting", {
   msg <- rex::rex("Do not place spaces around code in parentheses or square brackets.")
 
@@ -55,7 +53,7 @@ test_that("returns the correct linting", {
 
   # trailing comments are OK (#636)
   expect_lint("or( #code\n  x, y\n)", NULL, spaces_inside_linter)
-  
+
   expect_lint(trim_some("
     fun(      # this is another comment
       a = 42, # because 42 is always the answer
diff --git a/tests/testthat/test-unneeded_concatenation_linter.R b/tests/testthat/test-unneeded_concatenation_linter.R
index 0c163e8bb..6c0699dd7 100644
--- a/tests/testthat/test-unneeded_concatenation_linter.R
+++ b/tests/testthat/test-unneeded_concatenation_linter.R
@@ -1,5 +1,3 @@
-context("unneeded_concatenation_linter")
-
 test_that("returns the correct linting", {
   linter <- unneeded_concatenation_linter
   msg_c <- rex::escape("Unneeded concatenation of a constant. Remove the \"c\" call.")
@@ -23,4 +21,3 @@ test_that("returns the correct linting", {
               ),
               linter)
 })
-