Skip to content

Commit

Permalink
Automatically add needed cpp11 namespace directive (#1921)
Browse files Browse the repository at this point in the history
Co-authored-by: Hadley Wickham <[email protected]>
  • Loading branch information
pachadotdev and hadley authored Nov 14, 2023
1 parent 2fcc92c commit 9ac020d
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 1 deletion.
1 change: 1 addition & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,4 @@
^internal$
^revdep-cloud$
^CRAN-SUBMISSION$
^\.vscode$
2 changes: 2 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# usethis (development version)

* `use_cpp11()` now automatically updates the `NAMESPACE` (@pachadotdev, #1921).

# usethis 2.2.2

* Implicit usage of `numeric_version()` via comparison now always provides
Expand Down
6 changes: 6 additions & 0 deletions R/cpp11.R
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ use_cpp11 <- function() {
check_installed("cpp11")
check_is_package("use_cpp11()")
check_uses_roxygen("use_cpp11()")
check_has_package_doc("use_cpp11()")
use_src()

use_dependency("cpp11", "LinkingTo")
Expand All @@ -24,6 +25,11 @@ use_cpp11 <- function() {

check_cpp_register_deps()

roxygen_ns_append(
sprintf("@useDynLib %s, .registration = TRUE", project_name())
)
roxygen_update_ns()

invisible()
}

Expand Down
9 changes: 8 additions & 1 deletion tests/testthat/test-cpp11.R
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,14 @@ test_that("use_cpp11() requires a package", {
test_that("use_cpp11() creates files/dirs, edits DESCRIPTION and .gitignore", {
create_local_package()
use_roxygen_md()
use_package_doc()

local_interactive(FALSE)
local_check_installed()
local_mocked_bindings(check_cpp_register_deps = function() invisible())
local_mocked_bindings(
check_cpp_register_deps = function() invisible()
# project_name = function() "testpkg"
)

use_cpp11()

Expand All @@ -21,6 +25,9 @@ test_that("use_cpp11() creates files/dirs, edits DESCRIPTION and .gitignore", {

ignores <- read_utf8(proj_path("src", ".gitignore"))
expect_true(all(c("*.o", "*.so", "*.dll") %in% ignores))

namespace <- read_utf8(proj_path("NAMESPACE"))
expect_true(any(grepl("useDynLib", namespace)))
})

test_that("check_cpp_register_deps is silent if all installed, emits todo if not", {
Expand Down

0 comments on commit 9ac020d

Please sign in to comment.