From 55fb05ce3b95198d3cd5ef7a35462a7482278e86 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sun, 21 Jan 2024 22:43:20 -0800 Subject: [PATCH 1/4] remove basename() --- R/settings_utils.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/settings_utils.R b/R/settings_utils.R index a04ef5b55..9489ea24e 100644 --- a/R/settings_utils.R +++ b/R/settings_utils.R @@ -75,7 +75,7 @@ find_config <- function(filename) { # may exist in subsequent directories are ignored file_locations <- c( # Local (incl. parent) directories - find_local_config(path, basename(linter_file)), + find_local_config(path, linter_file), # User directory # cf: rstudio@bc9b6a5 SessionRSConnect.R#L32 file.path(Sys.getenv("HOME", unset = "~"), linter_file), From 045da3d233582c21adb10dbea6389bed2d47f7ff Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sun, 21 Jan 2024 22:44:12 -0800 Subject: [PATCH 2/4] Add a test --- tests/testthat/test-settings.R | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/testthat/test-settings.R b/tests/testthat/test-settings.R index f9350c6a0..ffd166b25 100644 --- a/tests/testthat/test-settings.R +++ b/tests/testthat/test-settings.R @@ -282,3 +282,19 @@ test_that("perl-only regular expressions are accepted in config", { writeLines("a <- 1", "aaa.R") expect_silent(lint("aaa.R")) }) + +test_that("settings can be put in a sub-directory", { + withr::local_dir(withr::local_tempdir()) + + dir.create(".settings") + .lintr <- ".settings/.lintr.R" + writeLines("linters <- list(line_length_linter(10))", .lintr) + + dir.create("R") + writeLines("abcdefghijklmnopqrstuvwxyz=1", "R/a.R") + + writeLines(c("Package: foo", "Version: 0.1"), "DESCRIPTION") + + withr::local_options(lintr.linter_file = .lintr) + expect_length(lint_package(), 1L) +}) From 261a9a7303d41e8565a5fc122fefbab9e6ce9185 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sun, 21 Jan 2024 22:45:34 -0800 Subject: [PATCH 3/4] NEWS --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 55d7d5e80..d4f3726ac 100644 --- a/NEWS.md +++ b/NEWS.md @@ -19,6 +19,7 @@ * `object_name_linter()` no longer errors when user-supplied `regexes=` have capture groups (#2188, @MichaelChirico). * `.lintr` config validation correctly accepts regular expressions which only compile under `perl = TRUE` (#2375, @MichaelChirico). These have always been valid (since `rex::re_matches()`, which powers the lint exclusion logic, also uses this setting), but the new up-front validation in v3.1.1 incorrectly used `perl = FALSE`. +* `.lintr` configs set by option `lintr.linter_file` or environment variable `R_LINTR_LINTER_FILE` can point to specific package directories (#2512, @MichaelChirico). ## Changes to default linters From fe456a8256f77d024542d9f8078c8de1eb8060a3 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 28 Feb 2024 23:21:18 -0800 Subject: [PATCH 4/4] review feedback --- NEWS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index d4f3726ac..7ab4a3092 100644 --- a/NEWS.md +++ b/NEWS.md @@ -19,7 +19,7 @@ * `object_name_linter()` no longer errors when user-supplied `regexes=` have capture groups (#2188, @MichaelChirico). * `.lintr` config validation correctly accepts regular expressions which only compile under `perl = TRUE` (#2375, @MichaelChirico). These have always been valid (since `rex::re_matches()`, which powers the lint exclusion logic, also uses this setting), but the new up-front validation in v3.1.1 incorrectly used `perl = FALSE`. -* `.lintr` configs set by option `lintr.linter_file` or environment variable `R_LINTR_LINTER_FILE` can point to specific package directories (#2512, @MichaelChirico). +* `.lintr` configs set by option `lintr.linter_file` or environment variable `R_LINTR_LINTER_FILE` can point to subdirectories (#2512, @MichaelChirico). ## Changes to default linters