-
Notifications
You must be signed in to change notification settings - Fork 21
Description
find_schema looks in package_root/sql to find sql source files. But when running unit tests the files are in package_root/inst/sql. This makes it impossible (as far as I can tell) for an etl extension package to include etl_init in unit tests if it includes sql files.
devtools and testthat quietly replace system.file with a modified version to keep it working in most unit tests. But those packages can only replace system.file in the package being tested. So if a package imports find_schema from etl, in a unit test when find_schema calls system.file it doesn't add the extra inst folder.
I don't know if the devtools people provide a way to fix this. Maybe find_schema could check to see if package_root/sql exists, and if not then try package_root/inst/sql?
You should be able to reproduce this issue with the following steps:
- Create a package that extends
etl. - Include a sql file.
- Use
testthatand try to testfind_schemawith something like the example below.
test_that("find_schema works", {
pkgname = etl("pkgname")
schema_path = etl::find_schema(pkgname)
expect_equal(is.null(schema_path), FALSE)
})