test_that("use_package() won't facilitate dependency on tidyverse/tidymodels", { create_local_package() expect_usethis_error(use_package("tidyverse"), "rarely a good idea") expect_usethis_error(use_package("tidymodels"), "rarely a good idea") }) test_that("use_package() guides new packages but not pre-existing ones", { create_local_package() withr::local_options(usethis.quiet = FALSE) expect_snapshot({ use_package("withr") use_package("withr") use_package("withr", "Suggests") }) }) test_that("use_package() handles R versions with aplomb", { create_local_package() withr::local_options(usethis.quiet = FALSE) expect_snapshot(use_package("R"), error = TRUE) expect_snapshot(use_package("R", type = "Depends"), error = TRUE) expect_snapshot(use_package("R", type = "Depends", min_version = "3.6")) expect_equal(subset(proj_deps(), package == "R")$version, ">= 3.6") local_mocked_bindings(r_version = function() "4.1") expect_snapshot(use_package("R", type = "Depends", min_version = TRUE)) expect_equal(subset(proj_deps(), package == "R")$version, ">= 4.1") }) test_that("use_package(type = 'Suggests') guidance w/o and w/ rlang", { create_local_package() withr::local_options(usethis.quiet = FALSE) expect_snapshot(use_package("withr", "Suggests")) ui_silence(use_package("rlang")) expect_snapshot(use_package("purrr", "Suggests")) }) # use_dev_package() ----------------------------------------------------------- test_that("use_dev_package() writes a remote", { create_local_package() local_ui_yep() use_dev_package("usethis") expect_equal(proj_desc()$get_remotes(), "r-lib/usethis") }) test_that("use_dev_package() can override over default remote", { create_local_package() use_dev_package("usethis", remote = "github::r-lib/usethis") expect_equal(proj_desc()$get_remotes(), "github::r-lib/usethis") }) test_that("package_remote() works for an installed package with github URL", { d <- desc::desc(text = c( "Package: test", "URL: https://github.com/OWNER/test" )) local_ui_yep() expect_equal(package_remote(d), "OWNER/test") }) test_that("package_remote() works for package installed from github or gitlab", { d <- desc::desc(text = c( "Package: test", "RemoteUsername: OWNER", "RemoteRepo: test" )) d$set(RemoteType = "github") expect_equal(package_remote(d), "OWNER/test") d$set(RemoteType = "gitlab") expect_equal(package_remote(d), "gitlab::OWNER/test") }) test_that("package_remote() errors if no remote and no github URL", { d <- desc::desc(text = c("Package: test")) expect_usethis_error(package_remote(d), "Cannot determine remote") })