test_that("pkg_dep_types_*", { expect_snapshot(pkg_dep_types_hard()) expect_snapshot(pkg_dep_types_soft()) expect_snapshot(pkg_dep_types()) }) test_that("make_null_deps", { expect_snapshot( make_null_deps(), variant = paste0("pillar-", packageVersion("pillar")) ) }) test_that("parse_deps", { # edge cases expect_snapshot(parse_deps(character(), character())) expect_snapshot(parse_deps("foo", "Imports")) # vectorized expect_snapshot(parse_deps(c("foo", "foo"), c("Imports", "LinkingTo"))) # requirement expect_snapshot(parse_deps("foo (>= 1.0.0)", "Imports")) # multiple packages expect_snapshot(parse_deps("foo (>= 1.0.0), bar", "Imports")) # newlines are fine expect_snapshot(parse_deps("foo (>= 1.0.0)\n bar", "Imports")) expect_snapshot(parse_deps("foo (>= \n 1.0.0)\n bar", "Imports")) # various relations expect_snapshot(parse_deps("R (== 4.2.1)", "Depends")) expect_snapshot(parse_deps("R (< 4.2.1)", "Depends")) expect_snapshot(parse_deps("R (> 4.2.1)", "Depends")) expect_snapshot(parse_deps("R (<= 4.2.1)", "Depends")) # base packages are not included expect_snapshot(parse_deps("foo, stats", "Imports")) expect_snapshot( parse_deps("grid, stats", "Imports"), variant = paste0("pillar-", packageVersion("pillar")) ) }) test_that("parse_all_deps", { # edge cases expect_snapshot( parse_all_deps(c(Imports = NA_character_)), variant = paste0("pillar-", packageVersion("pillar")) ) expect_snapshot( parse_all_deps(c(Imports = "grid")), variant = paste0("pillar-", packageVersion("pillar")) ) expect_snapshot( parse_all_deps(c( Imports = "foo (>= 1.0.0), bar", Suggests = "baz, foobaz (>= 2.0.0)" )), variant = paste0("pillar-", packageVersion("pillar")) ) }) test_that("resolve_ref_deps", { dsc <- desc::desc(text = c( "Suggests: covr, jsonlite, testthat (>= 3.1.0)", "Imports: assertthat, curl, R6, rlang (>= 1.0.0)", "Remotes: r-lib/covr", "Config/Needs/website: pkgdown, r-lib/downlit" )) expect_snapshot(resolve_ref_deps(dsc$get_deps(), NA_character_, NULL)) expect_snapshot(resolve_ref_deps( dsc$get_deps(), dsc$get("Remotes"), dsc$get(extra_config_fields(dsc$fields())) )) }) test_that("resolve_ref_deps, package name from remote", { dsc <- desc::desc(text = c( "Imports: foo", "Remotes: foo=r-lib/bar", "Config/Needs/website: foobar=r-lib/baz" )) expect_snapshot(resolve_ref_deps( dsc$get_deps(), dsc$get("Remotes"), dsc$get(extra_config_fields(dsc$fields())) )) dsc <- desc::desc(text = c( "Imports: foo", "Remotes: url::http://example.com" )) expect_snapshot( error = TRUE, resolve_ref_deps( dsc$get_deps(), dsc$get("Remotes"), NULL ) ) }) test_that("as_pkg_dependencies", { expect_snapshot(as_pkg_dependencies(TRUE)) expect_snapshot(as_pkg_dependencies("all")) expect_snapshot(as_pkg_dependencies("hard")) expect_snapshot(as_pkg_dependencies(FALSE)) expect_snapshot(as_pkg_dependencies(NA)) expect_snapshot(as_pkg_dependencies( list(direct = "Imports", indirect = c("Imports", "Suggests")) )) expect_snapshot(as_pkg_dependencies(c("Depends", "Imports", "LinkingTo"))) expect_snapshot(as_pkg_dependencies( list(direct = "all", indirect = "hard") )) expect_snapshot(as_pkg_dependencies( list(direct = "all", indirect = "all") )) expect_snapshot(as_pkg_dependencies( list(direct = "all", indirect = c("hard", "soft")) )) })