From ba9e59025e3c0ac2fae019f694739e5bc560c831 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Fri, 6 May 2016 17:03:22 -0400 Subject: [PATCH 1/6] separate cacheDir and cache boolean logic --- R/lint.R | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/R/lint.R b/R/lint.R index b18b45dab..9b8d11555 100644 --- a/R/lint.R +++ b/R/lint.R @@ -42,17 +42,20 @@ lint <- function(filename, linters = NULL, cache = FALSE, ..., parse_settings = itr <- 0 if (isTRUE(cache)) { - cache <- settings$cache_directory + cacheDir <- settings$cache_directory } else if (is.logical(cache)) { - cache <- character(0) + cacheDir <- character(0) } if (length(cache)) { - lint_cache <- load_cache(filename, cache) + lint_cache <- load_cache(filename, cacheDir) lints <- retrieve_file(lint_cache, filename, linters) if (!is.null(lints)) { return(exclude(lints, ...)) } + cache = TRUE + } else { + cache = FALSE } for (expr in source_expressions$expressions) { From 71fb294bd157804e59032054cb16b4393f6e589b Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Fri, 6 May 2016 17:04:33 -0400 Subject: [PATCH 2/6] force the evaluation of exclusions and pass them into lint lazy evaluation causes these to be evaluated after reading the settings when cache is TRUE. By this time, settings$exclusions is back to the original non-normalized paths --- R/lint.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/R/lint.R b/R/lint.R index 9b8d11555..ebc32c1bc 100644 --- a/R/lint.R +++ b/R/lint.R @@ -122,6 +122,7 @@ lint_package <- function(path = ".", relative_path = TRUE, ...) { on.exit(clear_settings, add = TRUE) names(settings$exclusions) <- normalizePath(file.path(path, names(settings$exclusions))) + exclusions = force(settings$exclusions) files <- dir( path = file.path(path, @@ -141,7 +142,7 @@ lint_package <- function(path = ".", relative_path = TRUE, ...) { if (interactive()) { message(".", appendLF = FALSE) } - lint(file, ..., parse_settings = FALSE) + lint(file, ..., parse_settings = FALSE, exclusions = exclusions) })) if (interactive()) { From e8799fb7720bce7ed08499624d7f17e02e9de119 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Sat, 7 May 2016 01:54:01 -0400 Subject: [PATCH 3/6] missed variable change --- R/lint.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/lint.R b/R/lint.R index ebc32c1bc..a92e7ab8b 100644 --- a/R/lint.R +++ b/R/lint.R @@ -47,7 +47,7 @@ lint <- function(filename, linters = NULL, cache = FALSE, ..., parse_settings = cacheDir <- character(0) } - if (length(cache)) { + if (length(cacheDir)) { lint_cache <- load_cache(filename, cacheDir) lints <- retrieve_file(lint_cache, filename, linters) if (!is.null(lints)) { From b599a263ff718fd5173c11be35895340f1221f5e Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Sat, 7 May 2016 01:54:29 -0400 Subject: [PATCH 4/6] allows for cache to be a string when supplied or if not equal to true passes tests now --- R/lint.R | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/R/lint.R b/R/lint.R index a92e7ab8b..784e7e5ba 100644 --- a/R/lint.R +++ b/R/lint.R @@ -43,7 +43,9 @@ lint <- function(filename, linters = NULL, cache = FALSE, ..., parse_settings = if (isTRUE(cache)) { cacheDir <- settings$cache_directory - } else if (is.logical(cache)) { + } else if (is.character(cache)) { + cacheDir <- cache + } else { cacheDir <- character(0) } From 6d36c5cd87636e64c7ebec270a922487bef65229 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Wed, 18 May 2016 14:59:03 -0400 Subject: [PATCH 5/6] fix variable name style --- R/lint.R | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/R/lint.R b/R/lint.R index 784e7e5ba..349f722d8 100644 --- a/R/lint.R +++ b/R/lint.R @@ -42,15 +42,15 @@ lint <- function(filename, linters = NULL, cache = FALSE, ..., parse_settings = itr <- 0 if (isTRUE(cache)) { - cacheDir <- settings$cache_directory + cache_dir <- settings$cache_directory } else if (is.character(cache)) { - cacheDir <- cache + cache_dir <- cache } else { - cacheDir <- character(0) + cache_dir <- character(0) } - if (length(cacheDir)) { - lint_cache <- load_cache(filename, cacheDir) + if (length(cache_dir)) { + lint_cache <- load_cache(filename, cache_dir) lints <- retrieve_file(lint_cache, filename, linters) if (!is.null(lints)) { return(exclude(lints, ...)) From 88f6b9be17f1f6e06a5f95c86fc4645b9041d88b Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Wed, 18 May 2016 15:04:20 -0400 Subject: [PATCH 6/6] added news note for lint_package(cache = TRUE) PR#146 --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 8b78839dc..18b6f166f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,6 @@ # lintr 1.0.0.9000 # +* Fixed lint_package bug where cache was not caching (#146, @schloerke) * Commas linter handles missing arguments calls properly (#145) # lintr 1.0.0 #