From 6139961e4ed29cabc029884f59a90fc012c0f45e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 14:39:05 +0000 Subject: [PATCH 1/2] Initial plan From e8f570f80bc00654cd28fde6f1233db5a3630103 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 14:47:53 +0000 Subject: [PATCH 2/2] Set .__DEVTOOLS__ marker so testthat::with_mocked_bindings() works with loadfast Agent-Logs-Url: https://github.com/finccam/loadfast/sessions/8e755081-78be-4f0d-a46f-bf749eb3bffb Co-authored-by: ak-finccam <266784444+ak-finccam@users.noreply.github.com> --- R/loadfast.R | 1 + test_loadfast.R | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/R/loadfast.R b/R/loadfast.R index 6c54503..6fac4a9 100644 --- a/R/loadfast.R +++ b/R/loadfast.R @@ -265,6 +265,7 @@ load_fast <- function(path = ".", helpers = TRUE, attach_testthat = NULL, full = setNamespaceInfo(ns_env, "dynlibs", NULL) setNamespaceInfo(ns_env, "S3methods", matrix(NA_character_, 0L, 4L)) ns_env[[".__S3MethodsTable__."]] <- new.env(hash = TRUE, parent = baseenv()) + ns_env[[".__DEVTOOLS__"]] <- new.env(parent = ns_env) reg <- rlang::ns_registry_env() reg[[pkg_name]] <- ns_env diff --git a/test_loadfast.R b/test_loadfast.R index f93ec7f..a89524f 100644 --- a/test_loadfast.R +++ b/test_loadfast.R @@ -169,6 +169,33 @@ check("isNamespace() returns TRUE", quote( isNamespace(ns) )) +check(".__DEVTOOLS__ marker is set (enables testthat mocking)", quote( + !is.null(ns[[".__DEVTOOLS__"]]) +)) + +if (requireNamespace("pkgload", quietly = TRUE)) { + check("pkgload::dev_meta() recognizes loadfast-loaded package", quote( + !is.null(pkgload::dev_meta("devpackage")) + )) + + check("with_mocked_bindings() auto-detects loadfast-loaded package", quote({ + result <- testthat::with_mocked_bindings( + get("add", envir = asNamespace("devpackage"))(1, 2), + add = function(a, b) 999L, + .package = "devpackage" + ) + result == 999L + })) + + check("with_mocked_bindings() without .package uses loadfast-loaded package", quote({ + result <- testthat::with_mocked_bindings( + get("add", envir = asNamespace("devpackage"))(1, 2), + add = function(a, b) 999L + ) + result == 999L + })) +} + # --- Search path --- check("package:devpackage is on the search path", quote( "package:devpackage" %in% search()