Nothing
test_that("can cleanup explicit things quite well", {
path <- test_prepare_orderly_example("explicit")
envir <- new.env()
path_src <- file.path(path, "src", "explicit")
withr::with_dir(path_src,
sys.source("explicit.R", envir))
status <- withr::with_dir(path_src, orderly_cleanup_status())
expect_s3_class(status, "orderly_cleanup_status")
expect_setequal(
names(status),
c("name", "root", "path", "role", "status", "delete", "unknown"))
expect_equal(status$name, "explicit")
expect_equal(normalise_path(status$root),
normalise_path(root_open(path, require_orderly = FALSE)$path))
expect_equal(normalise_path(status$path),
normalise_path(file.path(status$root, "src", status$name)))
paths <- c("data.csv", "explicit.R", "mygraph.png")
expect_equal(status$role,
cbind(orderly = set_names(c(FALSE, TRUE, FALSE), paths),
resource = c(TRUE, FALSE, FALSE),
shared_resource = FALSE,
dependency = FALSE,
artefact = c(FALSE, FALSE, TRUE)))
expect_equal(status$status,
cbind(source = set_names(c(TRUE, TRUE, FALSE), paths),
derived = c(FALSE, FALSE, TRUE),
ignored = NA))
expect_equal(status$delete, "mygraph.png")
expect_equal(status$unknown, character())
res <- testthat::evaluate_promise(print(status))
expect_equal(res$result, status)
expect_length(res$messages, 3)
expect_match(res$messages[[1]], "explicit is not clean")
expect_match(res$messages[[2]], "1 file can be deleted by running")
expect_match(res$messages[[3]], "mygraph.png")
res <- testthat::evaluate_promise(
withr::with_dir(path_src, orderly_cleanup(dry_run = TRUE)))
expect_match(res$messages, "I would delete 1 file from 'explicit':",
all = FALSE)
expect_setequal(dir(path_src), c("data.csv", "explicit.R", "mygraph.png"))
expect_equal(res$result, status)
res <- testthat::evaluate_promise(
withr::with_dir(path_src, orderly_cleanup()))
expect_match(res$messages, "Deleting 1 file from 'explicit':", all = FALSE)
expect_setequal(dir(path_src), c("data.csv", "explicit.R"))
expect_equal(res$result, status)
})
test_that("inform when running implicitly", {
path <- test_prepare_orderly_example("implicit")
helper_add_git(path)
envir <- new.env()
path_src <- file.path(path, "src", "implicit")
withr::with_dir(path_src,
sys.source("implicit.R", envir))
status <- withr::with_dir(path_src, orderly_cleanup_status())
expect_equal(status$delete, character())
expect_setequal(status$unknown, c("data.csv", "mygraph.png"))
res <- testthat::evaluate_promise(print(status))
expect_equal(res$result, status)
expect_length(res$messages, 6)
expect_match(res$messages[[1]], "implicit is not clean")
expect_match(res$messages[[2]], "2 files have unknown status")
expect_match(res$messages[[5]], "Mark these as resources")
expect_match(res$messages[[6]], "Mark these as artefacts, dependencies")
writeLines("mygraph.png", file.path(path_src, ".gitignore"))
status <- withr::with_dir(path_src, orderly_cleanup_status())
expect_equal(status$delete, "mygraph.png")
expect_setequal(status$unknown, "data.csv")
res <- testthat::evaluate_promise(print(status))
expect_equal(res$result, status)
expect_length(res$messages, 7)
expect_match(res$messages[[1]], "implicit is not clean")
expect_match(res$messages[[2]], "1 file can be deleted by running")
expect_match(res$messages[[3]], "mygraph.png")
expect_match(res$messages[[4]], "1 file has unknown status")
expect_match(res$messages[[5]], "data.csv")
expect_match(res$messages[[6]], "Mark these as resources")
expect_match(res$messages[[7]], "Mark these as artefacts, dependencies")
})
test_that("can clean up unknown files if gitignored", {
path <- test_prepare_orderly_example("explicit")
envir <- new.env()
path_src <- file.path(path, "src", "explicit")
helper_add_git(path)
fs::dir_create(file.path(path_src, c("a", "b/c", "b/d")))
files <- c("a/x", "b/c/x", "b/c/y")
file.create(file.path(path_src, files))
status <- orderly_cleanup_status("explicit", root = path)
expect_equal(
status$status[c("a/x", "b/c/x", "b/c/y"), ],
cbind(source = set_names(rep(FALSE, 3), files),
derived = FALSE,
ignored = FALSE))
expect_equal(status$delete, character())
writeLines(c("b/"), file.path(path_src, ".gitignore"))
status <- orderly_cleanup_status("explicit", root = path)
expect_equal(
status$status[c("a/x", "b/c/x", "b/c/y"), ],
cbind(source = set_names(rep(FALSE, 3), files),
derived = FALSE,
ignored = c(FALSE, TRUE, TRUE)))
expect_equal(status$delete, c("b/c/x", "b/c/y"))
res <- testthat::evaluate_promise(
orderly_cleanup("explicit", root = path))
expect_match(res$messages,
"Deleting 2 files from 'explicit'", all = FALSE)
expect_match(res$messages,
"Also deleted 1 empty directory", all = FALSE)
expect_equal(res$result, status)
expect_setequal(
dir(path_src, recursive = TRUE, include.dirs = TRUE),
c("a", "a/x", "data.csv", "explicit.R"))
})
test_that("can clean up shared resources", {
path <- test_prepare_orderly_example("shared")
path_src <- file.path(path, "src", "shared")
file.create(file.path(path_src, "shared_data.csv"))
status <- orderly_cleanup_status("shared", root = path)
files <- c("shared.R", "shared_data.csv")
expect_setequal(rownames(status$role), files)
expect_equal(
status$role,
cbind(orderly = set_names(c(TRUE, FALSE), files),
resource = FALSE,
shared_resource = c(FALSE, TRUE),
dependency = FALSE,
artefact = FALSE))
expect_equal(
status$status,
cbind(source = set_names(c(TRUE, FALSE), files),
derived = c(FALSE, TRUE),
ignored = NA))
expect_equal(status$delete, "shared_data.csv")
})
test_that("can clean up shared resources with shorthand syntax", {
path <- test_prepare_orderly_example("shared-shorthand")
path_src <- file.path(path, "src", "shared-shorthand")
file.create(file.path(path_src, "data.csv"))
status <- orderly_cleanup_status("shared-shorthand", root = path)
files <- c("data.csv", "shared-shorthand.R")
expect_setequal(rownames(status$role), files)
expect_equal(
status$role,
cbind(orderly = set_names(c(FALSE, TRUE), files),
resource = FALSE,
shared_resource = c(TRUE, FALSE),
dependency = FALSE,
artefact = FALSE))
expect_equal(
status$status,
cbind(source = set_names(c(FALSE, TRUE), files),
derived = c(TRUE, FALSE),
ignored = NA))
expect_equal(status$delete, "data.csv")
})
test_that("can clean up dependencies", {
path <- test_prepare_orderly_example(c("data", "depends"))
path_src <- file.path(path, "src", "depends")
file.create(file.path(path_src, c("input.rds", "other.rds")))
status <- orderly_cleanup_status("depends", root = path)
files <- c("depends.R", "input.rds", "other.rds")
expect_setequal(rownames(status$role), files)
expect_equal(
status$role,
cbind(orderly = set_names(c(TRUE, FALSE, FALSE), files),
resource = FALSE,
shared_resource = FALSE,
dependency = c(FALSE, TRUE, FALSE),
artefact = FALSE))
expect_equal(
status$status,
cbind(source = set_names(c(TRUE, FALSE, FALSE), files),
derived = c(FALSE, TRUE, FALSE),
ignored = NA))
expect_equal(status$delete, "input.rds")
})
test_that("can clean up directories", {
path <- test_prepare_orderly_example("directories")
envir <- new.env()
path_src <- file.path(path, "src", "directories")
withr::with_dir(path_src,
sys.source("directories.R", envir))
status <- orderly_cleanup_status("directories", root = path)
files <- c("data/a.csv", "data/b.csv", "directories.R",
"output/a.rds", "output/b.rds")
expect_equal(rownames(status$role), files)
expect_equal(
status$role,
cbind(orderly = set_names(files == "directories.R", files),
resource = c(TRUE, TRUE, FALSE, FALSE, FALSE),
shared_resource = FALSE,
dependency = FALSE,
artefact = c(FALSE, FALSE, FALSE, TRUE, TRUE)))
expect_equal(
status$status,
cbind(source = set_names(c(TRUE, TRUE, TRUE, FALSE, FALSE), files),
derived = c(FALSE, FALSE, FALSE, TRUE, TRUE),
ignored = NA))
expect_equal(status$delete, c("output/a.rds", "output/b.rds"))
res <- testthat::evaluate_promise(orderly_cleanup("directories", root = path))
expect_equal(res$result, status)
expect_setequal(
dir(path_src, recursive = TRUE, include.dirs = TRUE),
c("data", "data/a.csv", "data/b.csv", "directories.R"))
})
test_that("Don't call cleanup on an active packet", {
path <- test_prepare_orderly_example("data")
path_src <- file.path(path, "src", "data")
append_lines(file.path(path_src, "data.R"),
"orderly_cleanup_status()")
expect_error(
orderly_run_quietly("data", root = path, envir = new.env()),
"Don't call 'orderly_cleanup_status()' from a running packet",
fixed = TRUE)
})
test_that("Don't be weird about not passing name", {
path <- test_prepare_orderly_example("data")
path_src <- file.path(path, "src", "data")
expect_error(
withr::with_dir(path_src, orderly_cleanup_status(root = path)),
"If 'root' is given explicitly, 'name' is required")
})
test_that("Cope with cleaning up when there's nothing to do", {
path <- test_prepare_orderly_example("data")
path_src <- file.path(path, "src", "data")
status <- withr::with_dir(path_src, orderly_cleanup_status())
expect_equal(status$delete, character())
res <- testthat::evaluate_promise(
withr::with_dir(path_src, orderly_cleanup()))
expect_match(res$messages, "Nothing to clean")
expect_equal(res$result, status)
res <- testthat::evaluate_promise(print(status))
expect_length(res$messages, 1)
expect_match(res$messages,
"data is clean, nothing to delete, nothing unknown")
expect_equal(res$result, status)
})
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.