Skip to content

Commit

Permalink
tests: Update snapshots for use_cran_defaults() and use_extendr()
Browse files Browse the repository at this point in the history
  • Loading branch information
albersonmiranda committed Sep 4, 2024
1 parent 57381b3 commit 78e836d
Show file tree
Hide file tree
Showing 2 changed files with 142 additions and 57 deletions.
173 changes: 133 additions & 40 deletions tests/testthat/_snaps/use_cran_defaults.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@
use_extendr()
Message
i First time using rextendr. Upgrading automatically...
i Setting `Config/rextendr/version` to "0.3.1.9000" in the 'DESCRIPTION' file.
i Setting `Config/rextendr/version` to "0.3.1.9001" in the 'DESCRIPTION' file.
i Setting `SystemRequirements` to "Cargo (Rust's package manager), rustc" in the 'DESCRIPTION' file.
v Creating 'src/rust/src'.
v Writing 'src/entrypoint.c'
v Writing 'src/Makevars'
v Writing 'src/Makevars.win'
v Writing 'src/Makevars.ucrt'
v Writing 'src/.gitignore'
v Writing 'src/entrypoint.c'.
v Writing 'src/Makevars'.
v Writing 'src/Makevars.win'.
v Writing 'src/Makevars.ucrt'.
v Writing 'src/.gitignore'.
v Adding "^src/\\.cargo$" to '.Rbuildignore'.
v Writing 'src/rust/Cargo.toml'
v Writing 'src/rust/src/lib.rs'
v Writing 'src/testpkg-win.def'
v Writing 'src/rust/Cargo.toml'.
v Writing 'src/rust/src/lib.rs'.
v Writing 'src/testpkg-win.def'.
v Writing 'R/extendr-wrappers.R'
v Finished configuring extendr for package testpkg.
* Please run `rextendr::document()` for changes to take effect.
Expand All @@ -25,6 +25,7 @@
Code
use_cran_defaults()
Message
v Writing 'tools/msrv.R'
v Writing 'configure'
v Writing 'configure.win'
> File 'src/Makevars' already exists. Skip writing the file.
Expand Down Expand Up @@ -120,46 +121,138 @@
cat_file("configure")
Output
#!/usr/bin/env sh
# https://github.com/eitsupi/prqlr/blob/main/configure
export PATH="$PATH:$HOME/.cargo/bin"
if [ ! "$(command -v cargo)" ]; then
echo "----------------------- [RUST NOT FOUND]---------------------------"
echo "The 'cargo' command was not found on the PATH. Please install rustc"
echo "from: https://www.rust-lang.org/tools/install"
echo ""
echo "Alternatively, you may install cargo from your OS package manager:"
echo " - Debian/Ubuntu: apt-get install cargo"
echo " - Fedora/CentOS: dnf install cargo"
echo " - macOS: brew install rustc"
echo "-------------------------------------------------------------------"
echo ""
exit 1
fi
exit 0
: "${R_HOME=`R RHOME`}"
"${R_HOME}/bin/Rscript" tools/msrv.R

---

Code
cat_file("configure.win")
Output
#!/bin/sh
#!/usr/bin/env sh
"${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe" tools/msrv.R

---

Code
cat_file("tools", "msrv.R")
Output
# read the DESCRIPTION file
desc <- read.dcf("DESCRIPTION")
if (!"SystemRequirements" %in% colnames(desc)) {
fmt <- c(
"`SystemRequirements` not found in `DESCRIPTION`.",
"Please specify `SystemRequirements: Cargo (Rust's package manager), rustc`"
)
stop(paste(fmt, collapse = "\n"))
}
# extract system requirements
sysreqs <- desc[, "SystemRequirements"]
# check that cargo and rustc is found
if (!grepl("cargo", sysreqs, ignore.case = TRUE)) {
stop("You must specify `Cargo (Rust's package manager)` in your `SystemRequirements`")
}
if (!grepl("rustc", sysreqs, ignore.case = TRUE)) {
stop("You must specify `Cargo (Rust's package manager), rustc` in your `SystemRequirements`")
}
# split into parts
parts <- strsplit(sysreqs, ", ")[[1]]
# identify which is the rustc
rustc_ver <- parts[grepl("rustc", parts)]
# perform checks for the presence of rustc and cargo on the OS
no_cargo_msg <- c(
"----------------------- [CARGO NOT FOUND]--------------------------",
"The 'cargo' command was not found on the PATH. Please install Cargo",
"from: https://www.rust-lang.org/tools/install",
"",
"Alternatively, you may install Cargo from your OS package manager:",
" - Debian/Ubuntu: apt-get install cargo",
" - Fedora/CentOS: dnf install cargo",
" - macOS: brew install rustc",
"-------------------------------------------------------------------"
)
no_rustc_msg <- c(
"----------------------- [RUST NOT FOUND]---------------------------",
"The 'rustc' compiler was not found on the PATH. Please install",
paste(rustc_ver, "or higher from:"),
"https://www.rust-lang.org/tools/install",
"",
"Alternatively, you may install Rust from your OS package manager:",
" - Debian/Ubuntu: apt-get install rustc",
" - Fedora/CentOS: dnf install rustc",
" - macOS: brew install rustc",
"-------------------------------------------------------------------"
)
# Add {user}/.cargo/bin to path before checking
new_path <- paste0(
Sys.getenv("PATH"),
":",
paste0(Sys.getenv("HOME"), "/.cargo/bin")
)
# set the path with the new path
Sys.setenv("PATH" = new_path)
# check for rustc installation
rustc_version <- tryCatch(
system("rustc --version", intern = TRUE),
error = function(e) {
stop(paste(no_rustc_msg, collapse = "\n"))
}
)
# check for cargo installation
cargo_version <- tryCatch(
system("cargo --version", intern = TRUE),
error = function(e) {
stop(paste(no_cargo_msg, collapse = "\n"))
}
)
# helper function to extract versions
extract_semver <- function(ver) {
if (grepl("\\d+\\.\\d+(\\.\\d+)?", ver)) {
sub(".*?(\\d+\\.\\d+(\\.\\d+)?).*", "\\1", ver)
} else {
NA
}
}
# get the MSRV
msrv <- extract_semver(rustc_ver)
# https://github.com/eitsupi/prqlr/blob/main/configure.win
export PATH="$PATH:$HOME/.cargo/bin"
# extract current version
current_rust_version <- extract_semver(rustc_version)
if [ ! "$(command -v cargo)" ]; then
echo "----------------------- [RUST NOT FOUND]---------------------------"
echo "The 'cargo' command was not found on the PATH. Please install rustc"
echo "from: https://www.rust-lang.org/tools/install"
echo "-------------------------------------------------------------------"
echo ""
exit 1
fi
# perform check
if (!is.na(msrv)) {
# -1 when current version is later
# 0 when they are the same
# 1 when MSRV is newer than current
is_msrv <- utils::compareVersion(msrv, current_rust_version)
if (is_msrv == 1) {
fmt <- paste0(
"\n------------------ [UNSUPPORTED RUST VERSION]------------------\n",
"- Minimum supported Rust version is %s.\n",
"- Installed Rust version is %s.\n",
"---------------------------------------------------------------"
)
stop(sprintf(fmt, msrv, current_rust_version))
}
}
exit 0
# print the versions
versions_fmt <- "Using %s\nUsing %s"
message(sprintf(versions_fmt, cargo_version, rustc_version))

# use_cran_defaults() quiet if quiet=TRUE

Expand Down
26 changes: 9 additions & 17 deletions tests/testthat/_snaps/use_extendr.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@
use_extendr()
Message
i First time using rextendr. Upgrading automatically...
i Setting `Config/rextendr/version` to "0.3.1.9000" in the 'DESCRIPTION' file.
i Setting `Config/rextendr/version` to "0.3.1.9001" in the 'DESCRIPTION' file.
i Setting `SystemRequirements` to "Cargo (Rust's package manager), rustc" in the 'DESCRIPTION' file.
v Creating 'src/rust/src'.
v Writing 'src/entrypoint.c'
v Writing 'src/Makevars'
v Writing 'src/Makevars.win'
v Writing 'src/Makevars.ucrt'
v Writing 'src/.gitignore'
v Writing 'src/entrypoint.c'.
v Writing 'src/Makevars'.
v Writing 'src/Makevars.win'.
v Writing 'src/Makevars.ucrt'.
v Writing 'src/.gitignore'.
v Adding "^src/\\.cargo$" to '.Rbuildignore'.
v Writing 'src/rust/Cargo.toml'
v Writing 'src/rust/src/lib.rs'
v Writing 'src/testpkg-win.def'
v Writing 'src/rust/Cargo.toml'.
v Writing 'src/rust/src/lib.rs'.
v Writing 'src/testpkg-win.def'.
v Writing 'R/extendr-wrappers.R'
v Finished configuring extendr for package testpkg.
* Please run `rextendr::document()` for changes to take effect.
Expand Down Expand Up @@ -203,14 +203,6 @@
Code
use_extendr()
Message
> File 'src/entrypoint.c' already exists. Skip writing the file.
> File 'src/Makevars' already exists. Skip writing the file.
> File 'src/Makevars.win' already exists. Skip writing the file.
> File 'src/Makevars.ucrt' already exists. Skip writing the file.
> File 'src/.gitignore' already exists. Skip writing the file.
> File 'src/rust/Cargo.toml' already exists. Skip writing the file.
> File 'src/rust/src/lib.rs' already exists. Skip writing the file.
> File 'src/testpkg.wrap-win.def' already exists. Skip writing the file.
> File 'R/extendr-wrappers.R' already exists. Skip writing the file.
v Finished configuring extendr for package testpkg.wrap.
* Please run `rextendr::document()` for changes to take effect.
Expand Down

0 comments on commit 78e836d

Please sign in to comment.