Skip to content

Commit 487688b

Browse files
authored
Never lower an R version requirement in use_data() (#2083)
* Introduce failing test * Use NA when there's no minimum version stated for R * Never lower minimum R version via use_data() * Don't attempt to pass NA to numeric_version() Apparently this works only in R >= 4.2
1 parent 50dcb10 commit 487688b

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

Diff for: R/data.R

+6-4
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,13 @@ use_data <- function(...,
4444

4545
objs <- get_objs_from_dots(dots(...))
4646

47-
if (version < 3) {
48-
use_dependency("R", "depends", "2.10")
49-
} else {
50-
use_dependency("R", "depends", "3.5")
47+
original_minimum_r_version <- pkg_minimum_r_version()
48+
serialization_minimum_r_version <- if (version < 3) "2.10" else "3.5"
49+
if (is.na(original_minimum_r_version) ||
50+
original_minimum_r_version < serialization_minimum_r_version) {
51+
use_dependency("R", "depends", serialization_minimum_r_version)
5152
}
53+
5254
if (internal) {
5355
use_directory("R")
5456
paths <- path("R", "sysdata.rda")

Diff for: R/release.R

+4-3
Original file line numberDiff line numberDiff line change
@@ -534,10 +534,11 @@ author_has_rstudio_email <- function() {
534534
pkg_minimum_r_version <- function() {
535535
deps <- proj_desc()$get_deps()
536536
r_dep <- deps[deps$package == "R" & deps$type == "Depends", "version"]
537-
if (length(r_dep) == 0) {
538-
return(numeric_version("0"))
537+
if (length(r_dep) > 0) {
538+
numeric_version(gsub("[^0-9.]", "", r_dep))
539+
} else {
540+
NA_character_
539541
}
540-
numeric_version(gsub("[^0-9.]", "", r_dep))
541542
}
542543

543544
# Borrowed from pak, but modified also retain user's non-cran repos:

Diff for: R/upkeep.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -243,14 +243,15 @@ tidy_upkeep_checklist <- function(last_upkeep = last_upkeep_year(),
243243
)
244244
}
245245

246+
minimum_r_version <- pkg_minimum_r_version()
246247
bullets <- c(
247248
bullets,
248249
"### To finish",
249250
"",
250251
todo("`usethis::use_mit_license()`", grepl("MIT", desc$get_field("License"))),
251252
todo(
252253
'`usethis::use_package("R", "Depends", "{tidy_minimum_r_version()}")`',
253-
tidy_minimum_r_version() > pkg_minimum_r_version()
254+
is.na(minimum_r_version) || tidy_minimum_r_version() > minimum_r_version
254255
),
255256
todo("`usethis::use_tidy_description()`"),
256257
todo("`usethis::use_tidy_github_actions()`"),

Diff for: tests/testthat/test-data.R

+11
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,14 @@ test_that("use_data_raw() does setup", {
9595

9696
expect_true(is_build_ignored("^data-raw$"))
9797
})
98+
99+
test_that("use_data() does not decrease minimum version of R itself", {
100+
create_local_package()
101+
102+
use_package("R", "depends", "4.1")
103+
original_minimum_r_version <- pkg_minimum_r_version()
104+
105+
use_data(letters)
106+
107+
expect_true(pkg_minimum_r_version() >= original_minimum_r_version)
108+
})

0 commit comments

Comments
 (0)