Nothing
test_that("rixpress: helper functions get_need_r/py work", {
types_r_only <- c("rxp_r", "rxp_r_file")
types_py_only <- c("rxp_py", "rxp_py_file")
types_quarto <- c("rxp_qmd")
types_transfer <- c("rxp_py2r", "rxp_r2py")
types_mixed <- c("rxp_r", "rxp_py", "rxp_qmd", "rxp_py2r")
expect_true(get_need_r(types_r_only))
expect_false(get_need_py(types_r_only))
expect_false(get_need_r(types_py_only))
expect_true(get_need_py(types_py_only))
expect_true(get_need_r(types_quarto))
expect_false(get_need_py(types_quarto))
expect_true(get_need_r(types_transfer))
expect_false(get_need_py(types_transfer)) # Transfer functions are R-based
expect_true(get_need_r(types_mixed))
expect_true(get_need_py(types_mixed))
})
test_that("rixpress: gen_flat_pipeline", {
testthat::skip_on_cran()
d1 <- rxp_r(mtcars_am, dplyr::filter(mtcars, am == 1))
d2 <- rxp_r(mtcars_head, head(mtcars_am))
derivs <- list(d1, d2)
flat_pipeline <- gen_flat_pipeline(derivs)
snapshot_gen_flat_pipeline <- function(derivs, flat_pipeline) {
tfile <- tempfile(pattern = "flat_pipeline", fileext = ".nix")
writeLines(flat_pipeline, tfile)
tfile
}
testthat::expect_snapshot_file(
path = snapshot_gen_flat_pipeline(derivs, flat_pipeline),
name = "flat_pipeline.nix"
)
dag_out <- tempfile(pattern = "dag", fileext = ".json")
rxp_write_dag(derivs, output_file = dag_out)
snapshot_gen_pipeline <- function(dag_out, flat_pipeline) {
pipeline <- gen_pipeline(
dag_file = dag_out,
flat_pipeline = flat_pipeline
)
tfile <- tempfile(pattern = "pipeline", fileext = ".nix")
writeLines(pipeline, tfile)
tfile
}
testthat::expect_snapshot_file(
path = snapshot_gen_pipeline(dag_out, flat_pipeline),
name = "pipeline.nix"
)
})
test_that("rixpress: several environments", {
testthat::skip_on_cran()
testthat::skip_if_not_installed("rix")
path_tmpdir <- "tempdir"
dir.create(path_tmpdir)
on.exit(unlink(path_tmpdir, recursive = TRUE), add = TRUE, after = TRUE)
path_to_default.nix <- paste0(path_tmpdir, "/default.nix")
path_to_default2.nix <- paste0(path_tmpdir, "/default2.nix")
rix::rix(date = "2025-03-10", r_pkgs = "dplyr", project_path = path_tmpdir)
file.rename(
from = path_to_default.nix,
to = path_to_default2.nix
)
d1 <- rxp_r(mtcars_am, dplyr::filter(mtcars, am == 1))
d2 <- rxp_r(mtcars_head, head(mtcars_am), nix_env = path_to_default2.nix)
derivs <- list(d1, d2)
flat_pipeline <- gen_flat_pipeline(derivs)
snapshot_gen_flat_pipeline <- function(derivs, flat_pipeline) {
tfile <- tempfile(pattern = "flat_pipeline", fileext = ".nix")
writeLines(flat_pipeline, tfile)
tfile
}
testthat::expect_snapshot_file(
path = snapshot_gen_flat_pipeline(derivs, flat_pipeline),
name = "flat_pipeline_several_envs.nix"
)
dag_out <- tempfile(pattern = "dag", fileext = ".json")
rxp_write_dag(derivs, output_file = dag_out)
snapshot_gen_pipeline <- function(dag_out, flat_pipeline) {
pipeline <- gen_pipeline(
dag_file = dag_out,
flat_pipeline = flat_pipeline
)
tfile <- tempfile(pattern = "pipeline", fileext = ".nix")
writeLines(pipeline, tfile)
tfile
}
testthat::expect_snapshot_file(
path = snapshot_gen_pipeline(dag_out, flat_pipeline),
name = "pipeline_several_envs.nix"
)
})
test_that("parse_nix_envs handles different environments correctly", {
# Create temporary directory for test files
temp_dir <- tempfile()
dir.create(temp_dir)
on.exit(unlink(temp_dir, recursive = TRUE), add = TRUE)
# Create _rixpress directory
rixpress_dir <- file.path(temp_dir, "_rixpress")
dir.create(rixpress_dir)
# Create mock library files
writeLines("# R libraries", file.path(rixpress_dir, "default_r_libraries.R"))
writeLines(
"# Python libraries",
file.path(rixpress_dir, "py_env_py_libraries.py")
)
# Set working directory to temp_dir for the test
old_wd <- getwd()
setwd(temp_dir)
on.exit(setwd(old_wd), add = TRUE)
# Create test derivations with different environments
d1 <- list(
name = "test_r",
snippet = "test_r_snippet",
type = "rxp_r",
additional_files = "",
nix_env = "default.nix",
base_name = "default"
)
d2 <- list(
name = "test_py",
snippet = "test_py_snippet",
type = "rxp_py",
additional_files = "",
nix_env = "data-raw/py2r_example/py-env.nix",
base_name = "py_env"
)
# Test the function
result <- parse_nix_envs(list(d1, d2))
# Check that the result contains expected strings for both environments
expect_true(grepl("default = import ./default.nix;", result))
expect_true(grepl(
"py_env = import ./data-raw/py2r_example/py-env.nix;",
result
))
expect_true(grepl("defaultConfigurePhase", result))
expect_true(grepl("py_envConfigurePhase", result))
})
test_that("rixpress correctly handles dependencies", {
testthat::skip_on_cran()
testthat::skip_if_not_installed("rix")
# Create temporary directory
temp_dir <- tempfile()
dir.create(temp_dir)
on.exit(unlink(temp_dir, recursive = TRUE), add = TRUE)
setwd(temp_dir)
rix::rix(
date = "2025-04-11",
r_pkgs = "dplyr",
git_pkgs = list(
package_name = "rixpress",
repo_url = "https://github.com/ropensci/rixpress",
commit = "HEAD"
),
ide = "rstudio",
project_path = ".",
overwrite = TRUE
)
# Create actual derivations
d1 <- rxp_r(data_prep, mtcars)
d2 <- rxp_r(analysis, summary(data_prep), nix_env = "default.nix")
d3 <- rxp_py(
py_process,
"pd.DataFrame({'a': [1, 2, 3]})",
nix_env = "default.nix"
)
# Create derivations list
derivs <- list(d1, d2, d3)
rxp_populate(derivs, project_path = ".", build = FALSE)
result <- readLines("pipeline.nix")
# Create snapshot of the pipeline
snapshot_pipeline <- function(result) {
tfile <- tempfile(pattern = "pipeline_with_deps", fileext = ".nix")
writeLines(result, tfile)
tfile
}
testthat::expect_snapshot_file(
path = snapshot_pipeline(result),
name = "pipeline_with_dependencies.nix"
)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.