emit <- function(x) cat(x, sep = "\n")
test_that("dir_copy copies directories", {
# Work in temporary directory
owd <- getwd()
on.exit(setwd(owd))
setwd(tempdir())
# Create a directory and try to copy it
dir.create("foo")
file.create("foo/foo1.R")
file.create("foo/foo2.R")
file.create("foo/foo3.R")
file.create("foo/.dotFile")
dir_copy("foo", "bar", overwrite = TRUE)
expect_identical(
list.files("foo"),
list.files("bar")
)
expect_error(dir_copy("foo", "bar"))
})
test_that("defer evaluates in appropriate environment", {
foo <- function() {
emit("+ foo")
defer(emit("> foo"), environment())
defer(emit("> foo.parent"), parent.frame(1))
defer(emit("> foo.parent.parent"), parent.frame(2))
emit("- foo")
}
bar <- function() {
emit("+ bar")
foo()
emit("- bar")
}
baz <- function() {
emit("+ baz")
bar()
emit("- baz")
}
output <- capture.output(baz())
expected <- c(
"+ baz",
"+ bar",
"+ foo",
"- foo",
"> foo",
"- bar",
"> foo.parent",
"- baz",
"> foo.parent.parent"
)
expect_identical(output, expected)
})
test_that("defer captures arguments properly", {
foo <- function(x) {
defer(emit(x), envir = parent.frame())
}
bar <- function(y) {
emit("+ bar")
foo(y)
emit("- bar")
}
output <- capture.output(bar("> foo"))
expected <- c("+ bar", "- bar", "> foo")
expect_identical(output, expected)
})
test_that("defer works with arbitrary expressions", {
foo <- function(x) {
defer({
x + 1
emit("> foo")
}, envir = parent.frame())
}
bar <- function() {
emit("+ bar")
foo(1)
emit("- bar")
}
output <- capture.output(bar())
expected <- c("+ bar", "- bar", "> foo")
expect_identical(output, expected)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.