testthat::context("Test the 'testthat' module")
testthat::test_that("Test 'testthat' helper functions", {
testthat::expect_false(is_websocket("load_library(\"dom\")"))
testthat::expect_true(is_websocket("load_library(\"websocket\")"))
temp <- tempfile()
write("#! load_library('websocket')", temp)
testthat::expect_true(has_websocket(temp))
write("#! load_library('dom')", temp)
testthat::expect_false(has_websocket(temp))
temp <- tempfile()
write("#| load_library('websocket')", temp)
testthat::expect_true(has_websocket(temp))
write("#| load_library('dom')", temp)
testthat::expect_false(has_websocket(temp))
})
testthat::test_that("Test 'testthat' report", {
app_file <- system.file("test_files/test_testthat_app.R", package = "sketch")
test_file <- system.file("test_files/test_testthat_test.R", package = "sketch")
# Running without a browser only checks that the code runs
# successfully to the end, but it does not perform the tests
# in the `test_file`.
res <- test_sketch(app_file, test_file, launch_browser = NULL)
# Clean up without waiting
if (res$started) {
has_started <- TRUE
res$stopServer()
}
# Add one to the test counter
testthat::expect_true(has_started)
# The following test needs to run interactively in R, hence
# it is skipped on cran and ci.
testthat::skip_on_cran()
testthat::skip_on_ci()
# The following command will launch a browser.
res <- test_sketch(app_file, test_file, launch_browser = "browser")
# test_file_2 <- system.file("test_files/test_testthat_test_2.R", package = "sketch")
# res <- test_sketch(app_file, test_file_2)
})
# Note 1. At the websocket end, it takes some time for tasks to complete and the
# connection to close. This would interfere with "testthat/test_websocket.R" if the
# connection is not closed in time. As there is no way to block a thread while
# requiring it to be available (to listen) at the same time, the test (for the
# `in_handler` portion) needs to be run interactively.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.