Nothing
drake_context("rstudio")
test_with_dir("loading targets at cursor works under a real conditions", {
skip_on_cran()
skip_if_not_installed("rstudioapi")
## Template for context content. We're testing the addin on target names in
## every position occupied by the "%s" placeholder.
content_template <- c(
"foo <- function(a, %s, b) {",
" b$%s <- a",
" b$%s$a2b3 <- \"foo\"",
" %s <- \"foo\"",
" if(%s>1) \"foo\"",
" if(!%s|TRUE) \"bar\"",
" a <- 1; %s <- \"foo\"",
" b[%s] <- \"foo\"",
" print(%s[\"foo\"])",
"xyz <- %s"
)
placeholder_column_pos <- unlist(
gregexpr(
text = content_template,
pattern = "%s"
)
)
target_list <- list(
target1 = "value",
zarget_2_ = "value",
.target.3_ = "value",
TARGET = "value"
)
target_names <- names(target_list)
target_test_grid <- data.frame(
test_text = array(
outer(
content_template,
target_names,
sprintf
)
),
target_start_col = rep(
placeholder_column_pos,
length(target_names)
),
target_length = rep(
nchar(target_names),
rep(
length(content_template),
length(target_names)
)
)
)
test_loadd_start_end_middle <- function(
test_text,
column_pos,
target_length
) {
## helper to mock up rstudio contexts
make_context <- function(test_text, column_pos) {
structure(list(
id = "966E9371",
path = "",
contents = test_text,
selection = structure(
list(list(
range = structure(
list(
start = structure(
c(row = 1, column = column_pos),
class = "document_position"
),
end = structure(
c(row = 1, column = column_pos),
class = "document_position"
)
),
class = "document_range"
),
text = ""
)),
.Names = "",
class = "document_selection"
)),
class = "document_context"
)
}
mapply(
function(test_text, column_pos, target_length) {
loadd_start <- rs_addin_loadd(make_context(test_text, column_pos))
loadd_middle <- rs_addin_loadd(
make_context(
test_text,
column_pos + floor(target_length / 2)
)
)
loadd_end <- rs_addin_loadd(
make_context(
test_text,
column_pos + target_length - 1
)
)
all(c(loadd_start, loadd_middle, loadd_end) == "value")
},
test_text,
column_pos,
target_length,
USE.NAMES = FALSE
)
}
make(do.call(drake_plan, target_list), session_info = FALSE)
suppressMessages(
outcome <- test_loadd_start_end_middle(
target_test_grid$test_text,
target_test_grid$target_start_col,
target_test_grid$target_length)
)
expect_identical(outcome, rep(TRUE, nrow(target_test_grid)))
})
test_with_dir("do nothing if the cursor is in the console", {
skip_on_cran()
skip_if_not_installed("rstudioapi")
console_context <- structure(list(
id = "#console",
path = "",
contents = "NOTARGET",
selection = structure(
list(list(
range = structure(
list(
start = structure(
c(row = 1, column = 1),
class = "document_position"
),
end = structure(
c(row = 1, column = 1),
class = "document_position"
)
),
class = "document_range"
),
text = ""
)),
.Names = "",
class = "document_selection"
)
),
class = "document_context")
make(drake_plan(TARGET = "value"))
result <- rs_addin_loadd(console_context)
expect_null(result)
expect_error(
get(
"NOTARGET",
envir = globalenv()
),
regexp = "object 'NOTARGET' not found"
)
})
test_with_dir("graceful handling of no symbol at cursor.", {
skip_on_cran()
skip_if_not_installed("rstudioapi")
whitespace_context <- structure(
list(
id = "966E9371",
path = "",
contents = " ",
selection = structure(
list(list(
range = structure(list(
start = structure(
c(row = 1, column = 1),
class = "document_position"
),
end = structure(
c(row = 1, column = 1),
class = "document_position"
)
), class = "document_range"),
text = ""
)),
.Names = "",
class = "document_selection"
)
),
class = "document_context"
)
expect_message(
result <- rs_addin_loadd(whitespace_context),
"Could not find object name at cursor position"
)
expect_null(result)
after_symbol_context <- structure(
list(
id = "966E9371",
path = "",
contents = "NOTARGET",
selection = structure(
list(list(
range = structure(
list(
start = structure(
c(row = 1, column = 9),
class = "document_position"
),
end = structure(
c(row = 1, column = 9),
class = "document_position"
)
),
class = "document_range"
),
text = ""
)),
.Names = "",
class = "document_selection"
)
),
class = "document_context"
)
expect_message(
result <- rs_addin_loadd(after_symbol_context),
"Could not find object name at cursor position"
)
expect_null(result)
})
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.