test_that("we can transform binary URLs into source URLs", {
skip_on_cran()
skip_on_os("windows")
url <- "https://packagemanager.rstudio.com/cran/__linux__/centos7/latest"
actual <- renv_ppm_normalize(url)
expected <- "https://packagemanager.rstudio.com/cran/latest"
expect_identical(actual, expected)
})
test_that("repository URLs are properly transformed for different platforms", {
skip_on_cran()
skip_on_os("windows")
renv_scope_envvars(RENV_RSPM_OS = "__linux__", RENV_RSPM_PLATFORM = "bionic")
repos <- c(RSPM = "https://cluster.rstudiopm.com/cran/latest")
expected <- c(RSPM = "https://cluster.rstudiopm.com/cran/__linux__/bionic/latest")
actual <- renv_ppm_transform(repos)
expect_identical(expected, actual)
})
test_that("a binary-specific URL is transformed before writing a lockfile", {
skip_on_cran()
renv_tests_scope()
renv_scope_options(repos = c(RSPM = "https://cluster.rstudiopm.com/cran/__os__/platform/latest"))
lockfile <- snapshot(lockfile = NULL)
actual <- convert(lockfile$R$Repositories, "character")
expected <- c(RSPM = "https://cluster.rstudiopm.com/cran/latest")
expect_identical(actual, expected)
})
test_that("RSPM bits are preserved when writing lockfile", {
skip_on_cran()
renv_tests_scope()
renv_scope_options(repos = c(RSPM = "https://cluster.rstudiopm.com/curated/__linux__/bionic/12"))
lockfile <- snapshot(lockfile = NULL)
actual <- convert(lockfile$R$Repositories, "character")
expected <- c(RSPM = "https://cluster.rstudiopm.com/curated/12")
expect_identical(actual, expected)
})
test_that("RSPM is confirmed not supported on trusty", {
skip_on_cran()
renv_scope_envvars(RENV_RSPM_OS = "__linux__", RENV_RSPM_PLATFORM = "trusty")
before <- "https://cluster.rstudiopm.com/cran/latest"
after <- renv_ppm_transform(before)
expect_identical(unname(before), unname(after))
})
test_that("renv correctly detects RHEL < 9 as CentOS for RSPM", {
skip_on_cran()
skip_on_os("windows")
release <- heredoc('
NAME="Red Hat Enterprise Linux Server"
VERSION="7.9 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.9"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.9 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.9:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_equal(platform, "centos7")
})
test_that("renv correctly detects RHEL9 for PPM", {
skip_on_cran()
skip_on_os("windows")
release <- heredoc('
NAME="Red Hat Enterprise Linux"
VERSION="9.0 (Plow)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="9.0"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Red Hat Enterprise Linux 9.0 (Plow)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/9/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_BUGZILLA_PRODUCT_VERSION=9.0
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.0"
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_equal(platform, "rhel9")
})
test_that("renv correctly detects Rocky Linux 8 as centos8 for PPM", {
skip_on_cran()
skip_on_os("windows")
release <- heredoc('
NAME="Rocky Linux"
VERSION="8.8 (Green Obsidian)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Rocky Linux 8.8 (Green Obsidian)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:8:GA"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2029-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-8"
ROCKY_SUPPORT_PRODUCT_VERSION="8.8"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.8"
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_equal(platform, "centos8")
})
test_that("renv correctly detects Rocky Linux 9 as rhel9 for PPM", {
skip_on_cran()
skip_on_os("windows")
release <- heredoc('
NAME="Rocky Linux"
VERSION="9.2 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.2"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.2 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2032-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.2"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.2"
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_equal(platform, "rhel9")
})
test_that("renv correctly detects AlmaLinux 9 as rhel9 for PPM", {
skip_on_cran()
skip_on_os("windows")
release <- heredoc('
NAME="AlmaLinux"
VERSION="9.2 (Turquoise Kodkod)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.2"
PLATFORM_ID="platform:el9"
PRETTY_NAME="AlmaLinux 9.2 (Turquoise Kodkod)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:almalinux:almalinux:9::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"
ALMALINUX_MANTISBT_PROJECT="AlmaLinux-9"
ALMALINUX_MANTISBT_PROJECT_VERSION="9.2"
REDHAT_SUPPORT_PRODUCT="AlmaLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.2"
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_equal(platform, "rhel9")
})
test_that("renv correctly detects OpenSUSE for PPM", {
skip_on_cran()
skip_on_os("windows")
release <- heredoc('
NAME="openSUSE Leap"
VERSION="15.4"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.4"
PRETTY_NAME="openSUSE Leap 15.4"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.4"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Leap"
LOGO="distributor-logo-Leap"
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_equal(platform, "opensuse154")
})
test_that("renv correctly detects SLES as OpenSUSE for PPM", {
skip_on_cran()
skip_on_os("windows")
# `docker run -it registry.suse.com/suse/sle15:15.5`
release <- heredoc('
NAME="SLES"
VERSION="15-SP5"
VERSION_ID="15.5"
PRETTY_NAME="SUSE Linux Enterprise Server 15 SP5"
ID="sles"
ID_LIKE="suse"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:suse:sles:15:sp5"
DOCUMENTATION_URL="https://documentation.suse.com/"
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_equal(platform, "opensuse155")
})
test_that("renv correctly detects Debian for PPM", {
skip_on_cran()
skip_on_os("windows")
release <- heredoc('
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_equal(platform, "bullseye")
})
test_that("renv correctly detects Ubuntu for PPM", {
skip_on_cran()
skip_on_os("windows")
release <- heredoc('
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_equal(platform, "focal")
})
test_that("renv correctly detects Amazon Linux 2 as centos7 for PPM", {
skip_on_cran()
skip_on_os("windows")
release <- heredoc('
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
SUPPORT_END="2025-06-30"
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_equal(platform, "centos7")
})
test_that("renv detects no supported PPM platform for Amazon Linux 2023", {
skip_on_cran()
skip_on_os("windows")
release <- heredoc('
NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
SUPPORT_END="2028-03-01"
')
file <- renv_scope_tempfile()
writeLines(release, con = file)
platform <- renv_ppm_platform_impl(file = file)
expect_null(platform)
})
test_that("URLs like http://foo/bar aren't queried", {
skip_on_cran()
skip_on_os("windows")
# pretend to be Ubuntu
renv_scope_envvars(
RENV_PPM_OS = "__linux__",
RENV_PPM_PLATFORM = "ubuntu"
)
# emit a condition that we can catch on
renv_scope_trace(renv:::renv_ppm_status, quote(
renv_condition_signal("bail")
))
# should exit early
status <- expect_no_condition(renv_ppm_transform_impl("http://foo/bar"), class = "bail")
expect_equal(status, "http://foo/bar")
# should emit a condition now
expect_condition(renv_ppm_transform_impl("http://foo/bar/baz"), class = "bail")
})
test_that("renv_ppm_transform() uses source URLs when appropriate", {
skip_on_cran()
skip_on_os("windows")
# pretend to be Ubuntu
renv_scope_envvars(
RENV_PPM_OS = "__linux__",
RENV_PPM_PLATFORM = "jammy"
)
binurl <- "https://packagemanager.rstudio.com/cran/__linux__/jammy/latest"
srcurl <- "https://packagemanager.rstudio.com/cran/latest"
# prefer source URLs
renv_scope_binding(the, "install_pkg_type", "source")
expect_equal(unname(renv_ppm_transform(binurl)), srcurl)
expect_equal(unname(renv_ppm_transform(srcurl)), srcurl)
# prefer binary URLs
renv_scope_binding(the, "install_pkg_type", "binary")
expect_equal(unname(renv_ppm_transform(binurl)), binurl)
expect_equal(unname(renv_ppm_transform(srcurl)), binurl)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.