From ea9ae603216d14c454872e668caf665c3d35cc95 Mon Sep 17 00:00:00 2001 From: VisruthSK <67435125+VisruthSK@users.noreply.github.com> Date: Sat, 21 Feb 2026 14:37:56 -0800 Subject: [PATCH 1/6] Support R6 methods --- R/funscanr.R | 32 ++++++++++++++++ tests/testthat/test-funscanr.R | 68 ++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) diff --git a/R/funscanr.R b/R/funscanr.R index b63f002..bd0385b 100644 --- a/R/funscanr.R +++ b/R/funscanr.R @@ -358,6 +358,15 @@ scan_usage <- function( head <- x[[1L]] head_name <- if (is.symbol(head)) as.character(head) else NULL + member_fun <- .ast_member_fun(head) + + if ( + !is.null(member_fun) && + is.na(fastmatch::fmatch(member_fun, ignore_unqualified_functions)) + ) { + acc$unqual_funs <- c(acc$unqual_funs, member_fun) + acc$unqual_visit_idx <- c(acc$unqual_visit_idx, acc$visit_idx) + } if (!is.null(head_name)) { if (!is.na(fastmatch::fmatch(head_name, ns_ops)) && length(x) >= 3L) { @@ -497,6 +506,29 @@ scan_usage <- function( NULL } +.ast_member_fun <- function(head) { + if (!is.call(head) || !length(head)) { + return(NULL) + } + + op <- head[[1L]] + if (!is.symbol(op)) { + return(NULL) + } + + op_name <- as.character(op) + + if (op_name %in% c("$", "@") && length(head) >= 3L) { + return(.ast_lit_name(head[[3L]])) + } + + if (op_name == "(" && length(head) >= 2L) { + return(.ast_member_fun(head[[2L]])) + } + + NULL +} + .ast_get_lib_pkg <- function(call) { args <- as.list(call)[-1L] if (!length(args)) { diff --git a/tests/testthat/test-funscanr.R b/tests/testthat/test-funscanr.R index e56cd95..f57916c 100644 --- a/tests/testthat/test-funscanr.R +++ b/tests/testthat/test-funscanr.R @@ -220,6 +220,74 @@ test_that(".scan_tokens ignores language keywords and operators", { expect_equal(hits$ambiguous, character()) }) +test_that(".scan_tokens detects cmdstanr R6 methods from the vignette", { + export_index <- list( + cmdstan_model = "cmdstanr", + sample = "cmdstanr", + draws = "cmdstanr", + sampler_diagnostics = "cmdstanr", + diagnostic_summary = "cmdstanr", + optimize = "cmdstanr", + laplace = "cmdstanr", + variational = "cmdstanr", + pathfinder = "cmdstanr", + save_object = "cmdstanr" + ) + origin_map <- c( + "cmdstanr::cmdstan_model" = "cmdstanr", + "cmdstanr::sample" = "cmdstanr", + "cmdstanr::draws" = "cmdstanr", + "cmdstanr::sampler_diagnostics" = "cmdstanr", + "cmdstanr::diagnostic_summary" = "cmdstanr", + "cmdstanr::optimize" = "cmdstanr", + "cmdstanr::laplace" = "cmdstanr", + "cmdstanr::variational" = "cmdstanr", + "cmdstanr::pathfinder" = "cmdstanr", + "cmdstanr::save_object" = "cmdstanr" + ) + + code <- c( + "library(cmdstanr)", + "mod <- cmdstan_model('model.stan')", + "fit <- mod$sample(data = list(N = 10, y = rnorm(10)))", + "fit$draws()", + "fit$sampler_diagnostics(format = 'df')", + "fit$diagnostic_summary()", + "fit$save_object(file = 'fit.RDS')", + "mod$optimize(data = list(N = 10, y = rnorm(10)))", + "mod$laplace(mode = fit, draws = 100)", + "mod$variational(data = list(N = 10, y = rnorm(10)), draws = 100)", + "mod$pathfinder(data = list(N = 10, y = rnorm(10)), draws = 100)", + "fit$output_files", + "fit@metadata" + ) + + hits <- .scan_tokens( + paste(code, collapse = "\n"), + setdiff(stdlib_funs(), c("sample", "optimize")), + allowed_packages = "cmdstanr", + export_index = export_index, + origin_map = origin_map + ) + + expect_true("cmdstanr" %in% hits$pkgs) + expect_equal( + hits$keys, + c( + "cmdstanr::cmdstan_model", + "cmdstanr::sample", + "cmdstanr::draws", + "cmdstanr::sampler_diagnostics", + "cmdstanr::diagnostic_summary", + "cmdstanr::save_object", + "cmdstanr::optimize", + "cmdstanr::laplace", + "cmdstanr::variational", + "cmdstanr::pathfinder" + ) + ) + expect_identical(hits$ambiguous, character()) +}) test_that(".scan_tokens collapses reexports by origin", { export_index <- list(foo = c("pkgA", "pkgB")) From 1cd5c15d1e99188e8aa28e846a7af575281fca5c Mon Sep 17 00:00:00 2001 From: VisruthSK <67435125+VisruthSK@users.noreply.github.com> Date: Sat, 21 Feb 2026 17:32:35 -0800 Subject: [PATCH 2/6] R6 citation --- R/funscanr.R | 7 +- R/sysdata.rda | Bin 35676 -> 36516 bytes data-raw/sysdata.R | 47 +++++++++++-- tests/testthat/faux_proj/R/prediction.R | 8 +++ tests/testthat/test-funscanr.R | 84 +++++++++++++++++++++++- 5 files changed, 136 insertions(+), 10 deletions(-) diff --git a/R/funscanr.R b/R/funscanr.R index bd0385b..1c59e49 100644 --- a/R/funscanr.R +++ b/R/funscanr.R @@ -360,10 +360,9 @@ scan_usage <- function( head_name <- if (is.symbol(head)) as.character(head) else NULL member_fun <- .ast_member_fun(head) - if ( - !is.null(member_fun) && - is.na(fastmatch::fmatch(member_fun, ignore_unqualified_functions)) - ) { + # Member calls (e.g., obj$sample()) are package API methods, not + # language-level calls; don't suppress them via stdlib ignore lists. + if (!is.null(member_fun)) { acc$unqual_funs <- c(acc$unqual_funs, member_fun) acc$unqual_visit_idx <- c(acc$unqual_visit_idx, acc$visit_idx) } diff --git a/R/sysdata.rda b/R/sysdata.rda index 1ccc9a2a231c9f5a3f22a4c02787f4c35e38ea76..18bb788697f8bb78b76b47b17a084e7109e170c2 100644 GIT binary patch delta 34039 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 delta 33193 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

8q6`BWHofI-vU+2iGKs5e3e}4B7+cu>+Bz- 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 diff --git a/data-raw/sysdata.R b/data-raw/sysdata.R index 96f2385..cb2ad39 100644 --- a/data-raw/sysdata.R +++ b/data-raw/sysdata.R @@ -155,9 +155,42 @@ get_origin <- function(pkg, name) { sub("^namespace:", "", origin) } -# Extraction: Get exported functions for each package -.stan_exports <- lapply(.stan_pkgs, function(pkg) { - getNamespaceExports(pkg) |> +is_r6_generator <- function(x) { + inherits(x, "R6ClassGenerator") +} + +get_r6_generator <- function(pkg, class_name) { + asNamespace(pkg) |> + (\(ns) { + if (!exists(class_name, envir = ns, inherits = FALSE)) { + return(NULL) + } + get(class_name, envir = ns, inherits = FALSE) + })() |> + (\(obj) if (is_r6_generator(obj)) obj else NULL)() +} + +collect_r6_methods <- function(pkg, export_names) { + export_names |> + Filter( + \(name) { + obj <- tryCatch(getExportedValue(pkg, name), error = function(e) NULL) + is_r6_generator(obj) + }, + x = _ + ) |> + lapply(\(class_name) get_r6_generator(pkg, class_name)) |> + Filter(\(gen) !is.null(gen), x = _) |> + lapply(\(gen) names(gen$public_methods)) |> + unlist(use.names = FALSE) |> + (\(methods) methods[!is.na(methods) & nzchar(methods)])() |> + unique() +} + +collect_pkg_funs <- function(pkg) { + export_names <- getNamespaceExports(pkg) + + exported_funs <- export_names |> Filter( \(x) { is.function(tryCatch(getExportedValue(pkg, x), error = function(e) { @@ -166,7 +199,13 @@ get_origin <- function(pkg, name) { }, x = _ ) -}) |> + + r6_methods <- collect_r6_methods(pkg, export_names) + unique(c(exported_funs, r6_methods)) +} + +# Extraction: Get exported functions for each package +.stan_exports <- lapply(.stan_pkgs, collect_pkg_funs) |> setNames(.stan_pkgs) # Indexing: Create inverted index (function -> packages) diff --git a/tests/testthat/faux_proj/R/prediction.R b/tests/testthat/faux_proj/R/prediction.R index 1f6f303..a2efcf6 100644 --- a/tests/testthat/faux_proj/R/prediction.R +++ b/tests/testthat/faux_proj/R/prediction.R @@ -2,6 +2,14 @@ library(cmdstanr) model <- cmdstan_model("model.stan") fit <- model$sample(data = list(N = 10, y = rnorm(10))) +model$print() +model$exe_file() + +fit$draws(format = "df") +fit$diagnostic_summary() +fit$summary() + +model$pathfinder(data = list(N = 10, y = rnorm(10)), draws = 100) cmdstanr::cmdstan_model("model2.stan") cmdstanr::write_stan_json(list(N = 5, y = rnorm(5)), "data.json") diff --git a/tests/testthat/test-funscanr.R b/tests/testthat/test-funscanr.R index f57916c..5328d9c 100644 --- a/tests/testthat/test-funscanr.R +++ b/tests/testthat/test-funscanr.R @@ -41,6 +41,69 @@ resolve_origin_key <- function(pkg, fun) { paste0(origin, "::", fun) } +test_that(".stan_origin_map has complete keys and valid origins", { + all_funs <- unlist(.stan_exports, use.names = FALSE) + providers <- rep(names(.stan_exports), lengths(.stan_exports)) + keys <- paste0(providers, "::", all_funs) + + expect_true(length(keys) > 0) + expect_true(all(keys %in% names(.stan_origin_map))) + + mapped <- unname(.stan_origin_map[keys]) + expect_false(anyNA(mapped)) + expect_true(all(nzchar(mapped))) +}) + +test_that("default index resolves an indexed cmdstanr member call", { + candidates <- c( + "sample", + "draws", + "sampler_diagnostics", + "diagnostic_summary", + "save_object", + "optimize", + "laplace", + "variational", + "pathfinder" + ) + + providers <- .stan_export_index[candidates] + has_cmdstanr <- vapply( + providers, + \(x) !is.null(x) && "cmdstanr" %in% x, + logical(1) + ) + candidates <- candidates[has_cmdstanr] + + if (!length(candidates)) { + skip( + "No cmdstanr member methods found in .stan_export_index; regenerate sysdata." + ) + } + + fun <- candidates[[1L]] + code <- c( + "library(cmdstanr)", + paste0("fit$", fun, "()") + ) + + hits <- .scan_tokens( + paste(code, collapse = "\n"), + stdlib_funs(), + allowed_packages = .stan_pkgs, + export_index = .stan_export_index, + origin_map = .stan_origin_map + ) + + expected_key <- resolve_origin_key("cmdstanr", fun) + if (is.na(expected_key)) { + expected_key <- paste0("cmdstanr::", fun) + } + + expect_true(expected_key %in% hits$keys) + expect_true("cmdstanr" %in% hits$pkgs) +}) + test_that(".scan_tokens handles empty or no-code files", { expect_equal( .scan_tokens("", stdlib_funs()), @@ -264,7 +327,7 @@ test_that(".scan_tokens detects cmdstanr R6 methods from the vignette", { hits <- .scan_tokens( paste(code, collapse = "\n"), - setdiff(stdlib_funs(), c("sample", "optimize")), + stdlib_funs(), allowed_packages = "cmdstanr", export_index = export_index, origin_map = origin_map @@ -311,7 +374,6 @@ test_that(".scan_tokens collapses reexports by origin", { expect_equal(hits$ambiguous, character()) }) - test_that(".scan_tokens records ambiguous origins", { fun <- "ess_bulk" @@ -843,6 +905,12 @@ test_that("scan_usage handles faux_proj directory tree", { resolve_origin_key("bayesplot", "mcmc_acf"), resolve_origin_key("bayesplot", "pp_check"), resolve_origin_key("cmdstanr", "cmdstan_model"), + resolve_origin_key("cmdstanr", "print"), + resolve_origin_key("cmdstanr", "exe_file"), + resolve_origin_key("cmdstanr", "draws"), + resolve_origin_key("cmdstanr", "summary"), + resolve_origin_key("cmdstanr", "diagnostic_summary"), + resolve_origin_key("cmdstanr", "pathfinder"), resolve_origin_key("cmdstanr", "read_cmdstan_csv"), resolve_origin_key("cmdstanr", "write_stan_json"), resolve_origin_key("rstan", "stan_model"), @@ -865,6 +933,12 @@ test_that("scan_usage handles faux_proj directory tree", { "posterior::ess_tail", "posterior::summarise_draws", "cmdstanr::cmdstan_model", + "cmdstanr::print", + "cmdstanr::exe_file", + "cmdstanr::draws", + "cmdstanr::summary", + "cmdstanr::diagnostic_summary", + "cmdstanr::pathfinder", "cmdstanr::read_cmdstan_csv", "cmdstanr::write_stan_json", "rstan::stan_model", @@ -907,6 +981,12 @@ test_that("scan_usage handles faux_proj directory tree", { resolve_origin_pkg("bayesplot", "mcmc_acf"), resolve_origin_pkg("bayesplot", "pp_check"), resolve_origin_pkg("cmdstanr", "cmdstan_model"), + resolve_origin_pkg("cmdstanr", "print"), + resolve_origin_pkg("cmdstanr", "exe_file"), + resolve_origin_pkg("cmdstanr", "draws"), + resolve_origin_pkg("cmdstanr", "summary"), + resolve_origin_pkg("cmdstanr", "diagnostic_summary"), + resolve_origin_pkg("cmdstanr", "pathfinder"), resolve_origin_pkg("cmdstanr", "read_cmdstan_csv"), resolve_origin_pkg("cmdstanr", "write_stan_json"), resolve_origin_pkg("rstan", "stan_model"), From 4c361bf59a064d3f9ae8bb08189fb6b696371ff4 Mon Sep 17 00:00:00 2001 From: VisruthSK <67435125+VisruthSK@users.noreply.github.com> Date: Sat, 21 Feb 2026 17:44:00 -0800 Subject: [PATCH 3/6] Updated R6 method registration --- R/sysdata.rda | Bin 36516 -> 37176 bytes data-raw/sysdata.R | 23 ++++++++++++++++++----- tests/testthat/test-funscanr.R | 29 ++++------------------------- 3 files changed, 22 insertions(+), 30 deletions(-) diff --git a/R/sysdata.rda b/R/sysdata.rda index 18bb788697f8bb78b76b47b17a084e7109e170c2..edd0989c1cf406fea1ae6be1d0e5165fd6084cc6 100644 GIT binary patch delta 34704 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 diff --git a/data-raw/sysdata.R b/data-raw/sysdata.R index cb2ad39..0f7dac2 100644 --- a/data-raw/sysdata.R +++ b/data-raw/sysdata.R @@ -171,14 +171,30 @@ get_r6_generator <- function(pkg, class_name) { } collect_r6_methods <- function(pkg, export_names) { - export_names |> + ns <- asNamespace(pkg) + + exported_r6 <- export_names |> Filter( \(name) { obj <- tryCatch(getExportedValue(pkg, name), error = function(e) NULL) is_r6_generator(obj) }, x = _ - ) |> + ) + + namespace_r6 <- ls(ns, all.names = TRUE) |> + Filter( + \(name) { + obj <- tryCatch( + get(name, envir = ns, inherits = FALSE), + error = function(e) NULL + ) + is_r6_generator(obj) + }, + x = _ + ) + + unique(c(exported_r6, namespace_r6)) |> lapply(\(class_name) get_r6_generator(pkg, class_name)) |> Filter(\(gen) !is.null(gen), x = _) |> lapply(\(gen) names(gen$public_methods)) |> @@ -228,8 +244,6 @@ keys <- paste0(all_stan_pkgs, "::", all_funs) )] names(.stan_origin_map) <- keys -.date_generated <- Sys.Date() - save( .stan_exports, .stan_export_index, @@ -240,7 +254,6 @@ save( .stdlib_funs, .stan_pkg_versions, .scan_skip_dirs, - .date_generated, file = "R/sysdata.rda", compress = "xz" ) diff --git a/tests/testthat/test-funscanr.R b/tests/testthat/test-funscanr.R index 5328d9c..3d152bc 100644 --- a/tests/testthat/test-funscanr.R +++ b/tests/testthat/test-funscanr.R @@ -55,33 +55,12 @@ test_that(".stan_origin_map has complete keys and valid origins", { }) test_that("default index resolves an indexed cmdstanr member call", { - candidates <- c( - "sample", - "draws", - "sampler_diagnostics", - "diagnostic_summary", - "save_object", - "optimize", - "laplace", - "variational", - "pathfinder" - ) - - providers <- .stan_export_index[candidates] - has_cmdstanr <- vapply( - providers, - \(x) !is.null(x) && "cmdstanr" %in% x, - logical(1) + fun <- "sample" + expect_true( + !is.null(.stan_export_index[[fun]]) && + "cmdstanr" %in% .stan_export_index[[fun]] ) - candidates <- candidates[has_cmdstanr] - - if (!length(candidates)) { - skip( - "No cmdstanr member methods found in .stan_export_index; regenerate sysdata." - ) - } - fun <- candidates[[1L]] code <- c( "library(cmdstanr)", paste0("fit$", fun, "()") From e6129f97043414e0c50f1380a7879b9465165a95 Mon Sep 17 00:00:00 2001 From: VisruthSK <67435125+VisruthSK@users.noreply.github.com> Date: Sat, 21 Feb 2026 17:48:12 -0800 Subject: [PATCH 4/6] Small changes to tests --- tests/testthat/_snaps/funscanr.md | 25 ++++++++++++++++++++++ tests/testthat/faux_proj/R/prediction.R | 4 ++-- tests/testthat/test-funscanr.R | 28 +++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 2 deletions(-) diff --git a/tests/testthat/_snaps/funscanr.md b/tests/testthat/_snaps/funscanr.md index fa5d49a..58150df 100644 --- a/tests/testthat/_snaps/funscanr.md +++ b/tests/testthat/_snaps/funscanr.md @@ -71,6 +71,31 @@ attr(,"class") [1] "scan_usage" +# scan_usage handles faux_proj directory tree + + { + "type": "list", + "attributes": { + "names": { + "type": "character", + "attributes": {}, + "value": ["packages", "functions"] + } + }, + "value": [ + { + "type": "character", + "attributes": {}, + "value": ["bayesplot", "brms", "cmdstanr", "loo", "posterior", "projpred", "rstan", "rstanarm", "shinystan"] + }, + { + "type": "character", + "attributes": {}, + "value": ["bayesplot::mcmc_acf", "bayesplot::mcmc_areas", "bayesplot::mcmc_intervals", "bayesplot::mcmc_rank_hist", "bayesplot::mcmc_trace", "bayesplot::pp_check", "bayesplot::ppc_bars", "bayesplot::ppc_error_hist", "brms::as_draws", "brms::bf", "brms::brm", "brms::conditional_effects", "brms::get_prior", "brms::mixture", "brms::set_prior", "cmdstanr::cmdstan_model", "cmdstanr::diagnostic_summary", "cmdstanr::draws", "cmdstanr::exe_file", "cmdstanr::pathfinder", "cmdstanr::print", "cmdstanr::read_cmdstan_csv", "cmdstanr::sample", "cmdstanr::summary", "cmdstanr::write_stan_json", "loo::loo", "loo::loo_compare", "posterior::as_draws", "posterior::as_draws_cmdstanr", "posterior::as_draws_df", "posterior::as_draws_matrix", "posterior::ess_bulk", "posterior::ess_tail", "posterior::mcse_mean", "posterior::rhat", "posterior::subset_draws", "posterior::summarise_draws", "projpred::cv_varsel", "rstan::extract", "rstan::stan_model", "rstanarm::logit", "shinystan::launch_shinystan"] + } + ] + } + # scan_usage errors on multiple directories `path` must be a single directory or a vector of files. diff --git a/tests/testthat/faux_proj/R/prediction.R b/tests/testthat/faux_proj/R/prediction.R index a2efcf6..505bd16 100644 --- a/tests/testthat/faux_proj/R/prediction.R +++ b/tests/testthat/faux_proj/R/prediction.R @@ -11,8 +11,8 @@ fit$summary() model$pathfinder(data = list(N = 10, y = rnorm(10)), draws = 100) -cmdstanr::cmdstan_model("model2.stan") -cmdstanr::write_stan_json(list(N = 5, y = rnorm(5)), "data.json") +cmdstan_model("model2.stan") +write_stan_json(list(N = 5, y = rnorm(5)), "data.json") posterior::as_draws_cmdstanr(fit) posterior::subset_draws(fit, 1:10) diff --git a/tests/testthat/test-funscanr.R b/tests/testthat/test-funscanr.R index 3d152bc..4d35d74 100644 --- a/tests/testthat/test-funscanr.R +++ b/tests/testthat/test-funscanr.R @@ -861,6 +861,19 @@ test_that("scan_usage handles faux_proj directory tree", { faux_path <- testthat::test_path("faux_proj") res <- scan_usage(faux_path) + expected_cmdstanr_funs <- sort(c( + "cmdstanr::cmdstan_model", + "cmdstanr::sample", + "cmdstanr::print", + "cmdstanr::exe_file", + "cmdstanr::draws", + "cmdstanr::summary", + "cmdstanr::diagnostic_summary", + "cmdstanr::pathfinder", + "cmdstanr::read_cmdstan_csv", + "cmdstanr::write_stan_json" + )) + expected_keys <- unique(na.omit(c( resolve_origin_key("brms", "bf"), resolve_origin_key("brms", "set_prior"), @@ -989,6 +1002,21 @@ test_that("scan_usage handles faux_proj directory tree", { "recipes::recipe" ) )) + + detected_cmdstanr_funs <- sort(res$functions[grepl( + "^cmdstanr::", + res$functions + )]) + expect_equal(detected_cmdstanr_funs, expected_cmdstanr_funs) + + force_local_snapshots() + expect_snapshot_value( + list( + packages = res$packages, + functions = res$functions + ), + style = "json2" + ) }) test_that("scan_usage attributes unqualified calls only in files attaching Stan packages", { From 8f6517af45e5947df420065e5365d89a5f63f86b Mon Sep 17 00:00:00 2001 From: VisruthSK <67435125+VisruthSK@users.noreply.github.com> Date: Sat, 21 Feb 2026 17:52:14 -0800 Subject: [PATCH 5/6] Added a small test --- tests/testthat/test-funscanr.R | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/testthat/test-funscanr.R b/tests/testthat/test-funscanr.R index 4d35d74..1637405 100644 --- a/tests/testthat/test-funscanr.R +++ b/tests/testthat/test-funscanr.R @@ -13,6 +13,7 @@ force_local_snapshots <- function() { # Bind internal helpers/data so tests can call them directly. .scan_tokens <- bind_internal(".scan_tokens") .extract_code <- bind_internal(".extract_code") +.ast_member_fun <- bind_internal(".ast_member_fun") .stan_exports <- bind_internal(".stan_exports") .stan_export_index <- bind_internal(".stan_export_index") .stan_origin_map <- bind_internal(".stan_origin_map") @@ -94,6 +95,11 @@ test_that(".scan_tokens handles empty or no-code files", { ) }) +test_that(".ast_member_fun returns NULL when call operator is not a symbol", { + malformed <- as.call(list(1, quote(fit), quote(sample))) + expect_null(.ast_member_fun(malformed)) +}) + test_that(".scan_tokens handles non-Stan library calls", { code <- c( "library(ggplot2)", From 8cac39f25461269eafe7db35b971a1a894f5265e Mon Sep 17 00:00:00 2001 From: VisruthSK <67435125+VisruthSK@users.noreply.github.com> Date: Sat, 21 Feb 2026 17:59:23 -0800 Subject: [PATCH 6/6] Extended R6 tests --- tests/testthat/test-funscanr.R | 111 +++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/tests/testthat/test-funscanr.R b/tests/testthat/test-funscanr.R index 1637405..6894fb8 100644 --- a/tests/testthat/test-funscanr.R +++ b/tests/testthat/test-funscanr.R @@ -337,6 +337,117 @@ test_that(".scan_tokens detects cmdstanr R6 methods from the vignette", { expect_identical(hits$ambiguous, character()) }) +test_that(".scan_tokens thoroughly detects invoked R6 member methods", { + export_index <- list( + sample_fit = "pkgA", + draws_df = "pkgA", + is_alive = "pkgB", + terminate = "pkgB", + diagnose_fit = "pkgA", + collect_metrics = "pkgC", + emit_report = "pkgC" + ) + origin_map <- c( + "pkgA::sample_fit" = "pkgA", + "pkgA::draws_df" = "pkgA", + "pkgB::is_alive" = "pkgB", + "pkgB::terminate" = "pkgB", + "pkgA::diagnose_fit" = "pkgA", + "pkgC::collect_metrics" = "pkgC", + "pkgC::emit_report" = "pkgC" + ) + + code <- c( + "library(pkgA)", + "library(pkgB)", + "library(pkgC)", + "model$sample_fit(data = list(N = 10))", + "fit$draws_df()", + "proc$is_alive()", + "proc$terminate()", + "fit$diagnose_fit()", + "monitor$collect_metrics()", + "report$emit_report(format = 'html')", + "fit$output_files", + "proc@private" + ) + + hits <- .scan_tokens( + paste(code, collapse = "\n"), + stdlib_funs(), + allowed_packages = c("pkgA", "pkgB", "pkgC"), + export_index = export_index, + origin_map = origin_map + ) + + expect_true(all(c("pkgA", "pkgB", "pkgC") %in% hits$pkgs)) + expect_equal( + hits$keys, + c( + "pkgA::sample_fit", + "pkgA::draws_df", + "pkgB::is_alive", + "pkgB::terminate", + "pkgA::diagnose_fit", + "pkgC::collect_metrics", + "pkgC::emit_report" + ) + ) + expect_identical(hits$ambiguous, character()) +}) + +test_that(".scan_tokens resolves ambiguous invoked member methods by attachment order", { + code <- c( + "library(pkgA)", + "library(pkgB)", + "library(pkgC)", + "obj$train_model(1)" + ) + + hits <- .scan_tokens( + paste(code, collapse = "\n"), + stdlib_funs(), + strict = FALSE, + allowed_packages = c("pkgA", "pkgB", "pkgC"), + export_index = list(train_model = c("pkgA", "pkgB", "pkgC")), + origin_map = c( + "pkgA::train_model" = "pkgA", + "pkgB::train_model" = "pkgB", + "pkgC::train_model" = "pkgC" + ) + ) + + expect_true(all(c("pkgA", "pkgB", "pkgC") %in% hits$pkgs)) + expect_equal(hits$keys, "pkgC::train_model") + expect_identical(hits$ambiguous, character()) +}) + +test_that(".scan_tokens records ambiguous invoked member methods in strict mode", { + code <- c( + "library(pkgA)", + "library(pkgB)", + "library(pkgC)", + "obj$train_model(1)" + ) + + hits <- .scan_tokens( + paste(code, collapse = "\n"), + stdlib_funs(), + strict = TRUE, + allowed_packages = c("pkgA", "pkgB", "pkgC"), + export_index = list(train_model = c("pkgA", "pkgB", "pkgC")), + origin_map = c( + "pkgA::train_model" = "pkgA", + "pkgB::train_model" = "pkgB", + "pkgC::train_model" = "pkgC" + ) + ) + + expect_true(all(c("pkgA", "pkgB", "pkgC") %in% hits$pkgs)) + expect_equal(hits$keys, character()) + expect_equal(hits$ambiguous, "train_model") +}) + test_that(".scan_tokens collapses reexports by origin", { export_index <- list(foo = c("pkgA", "pkgB")) origin_map <- c("pkgA::foo" = "pkgA", "pkgB::foo" = "pkgA")