# for coverage, we run in this session
# If the package namespace is locked (e.g. during R CMD check) .onLoad errors
# when trying to make the class, so test that that is the error (as evidence
# that the code is being executed)
# During devtools::test() the package is not locked, so we must check for that.
if (environmentIsLocked(asNamespace("dittodb"))) {
# the environment is locked, this should error
expect_error(
.onLoad(),
paste0(
"class .*DBIMockSQLiteConnection.* has a locked definition in package ",
".*dittodb.*"
)
)
} else {
expect_silent(.onLoad())
}
test_that("set_driver_class is no-op for a non-existent package", {
set_driver_class(
pkg = "notApackage",
mock_conn = "superFakeClass",
real_conn = "superRealClass"
)
expect_error(getClass("superFakeClass"), "is not a defined class")
})
# Test with callr, in a separate function to ensure that the behavior of .onLoad
# is what we expect.
# standard, all packages installed
callr::r(function() {
library(testthat)
custom_connections <- c("DBIMockSQLiteConnection")
test_that(".onLoad add custom classes for all drivers that are available.", {
# ensure they have all been removed
for (class_name in custom_connections) {
expect_error(getClass(class_name), "is not a defined class")
}
# load the package
library(dittodb)
# now we have them all back
for (class_name in custom_connections) {
expect_s4_class(getClass(class_name), "classRepresentation")
}
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.