- using R Under development (unstable) (2026-09-29 r90592)
- using platform: x86_64-pc-linux-gnu
- R was compiled by
clang version 23.1.2
flang version 23.1.2
- running under: Fedora Linux 44 (Server Edition)
- using session charset: UTF-8
* current time: 2026-09-29 11:22:39 UTC
- using option ‘--no-stop-on-test-error’
- checking for file ‘nlmixr2est/DESCRIPTION’ ... OK
- checking extension type ... Package
- this is package ‘nlmixr2est’ version ‘7.1.0’
- package encoding: UTF-8
- checking package namespace information ... OK
- checking package dependencies ... OK
- checking if this is a source package ... OK
- checking if there is a namespace ... OK
- checking for executable files ... OK
- checking for hidden files and directories ... OK
- checking for portable file names ... OK
- checking for sufficient/correct file permissions ... OK
- checking whether package ‘nlmixr2est’ can be installed ... [7m/11m] OK
See the install log for details.
- used C compiler: ‘clang version 23.1.2’
- used C++ compiler: ‘clang version 23.1.2’
- checking C++ specification ... INFO
specified C++17
- checking installed package size ... INFO
installed size is 12.0Mb
sub-directories of 1Mb or more:
R 4.0Mb
libs 5.8Mb
- checking package directory ... OK
- checking ‘build’ directory ... OK
- checking DESCRIPTION meta-information ... OK
- checking top-level files ... OK
- checking for left-over files ... OK
- checking index information ... OK
- checking package subdirectories ... OK
- checking code files for non-ASCII characters ... OK
- checking R files for syntax errors ... OK
- checking whether the package can be loaded ... OK
- checking whether the package can be loaded with stated dependencies ... OK
- checking whether the package can be unloaded cleanly ... OK
- checking whether the namespace can be loaded with stated dependencies ... OK
- checking whether the namespace can be unloaded cleanly ... OK
- checking loading without being on the library search path ... OK
- checking whether startup messages can be suppressed ... OK
- checking use of S3 registration ... OK
- checking dependencies in R code ... OK
- checking S3 generic/method consistency ... OK
- checking replacement functions ... OK
- checking foreign function calls ... OK
- checking R code for possible problems ... [110s/238s] OK
- checking Rd files ... OK
- checking Rd metadata ... OK
- checking Rd line widths ... OK
- checking Rd cross-references ... OK
- checking for missing documentation entries ... OK
- checking for code/documentation mismatches ... OK
- checking Rd \usage sections ... OK
- checking Rd contents ... OK
- checking for unstated dependencies in examples ... OK
- checking contents of ‘data’ directory ... OK
- checking data for non-ASCII characters ... OK
- checking LazyData ... OK
- checking data for ASCII and uncompressed saves ... OK
- checking line endings in shell scripts ... OK
- checking line endings in C/C++/Fortran sources/headers ... OK
- checking line endings in Makefiles ... OK
- checking compilation flags in Makevars ... OK
- checking for GNU extensions in Makefiles ... OK
- checking for portable use of $(BLAS_LIBS) and $(LAPACK_LIBS) ... OK
- checking use of PKG_*FLAGS in Makefiles ... OK
- checking use of SHLIB_OPENMP_*FLAGS in Makefiles ... OK
- checking pragmas in C/C++ headers and code ... OK
- checking compilation flags used ... OK
- checking compiled code ... OK
- checking installed files from ‘inst/doc’ ... OK
- checking files in ‘vignettes’ ... OK
- checking examples ... OK
- checking for unstated dependencies in ‘tests’ ... OK
- checking tests ... [21s/25s] ERROR
Running ‘testthat.R’ [21s/25s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> library(testthat)
> library(data.table)
Attaching package: 'data.table'
The following object is masked from 'package:base':
%notin%
> library(rxode2)
rxode2 5.1.7.1 using 2 threads (see ?getRxThreads)
no cache: create with `rxCreateCache()`
> library(nlmixr2est)
Loading required package: nlmixr2data
Attaching package: 'nlmixr2est'
The following objects are masked from 'package:rxode2':
boxCox, yeoJohnson
>
> # Test thread policy (kept deliberately simple):
> # * testthat workers: SERIAL (in-process) on CI or CRAN; everywhere else
> # testthat manages Config/testthat/parallel normally. Serial rather than
> # a single parallel worker: with 1 worker parallel mode adds nothing but
> # the callr message pipe, and that pipe base64-serializes every non-success
> # test event -- an *erroring* test whose backtrace inlines a large object
> # (any do.call(f, list(<fit/data>)) frame) ships the whole object through
> # it at ~18x its size in the orchestrator (measured), and a single >1.5GB
> # payload kills the whole run with "Error in gsub: result string is too
> # long" (R's 2GB string cap). This is what "the runner has received a
> # shutdown signal" / runner-OOM windows+devel failures were. Serial mode
> # has no pipe, and streams output so a hung/failing file is identifiable
> # from testthat.Rout.
> # * rxode2 (and data.table) within-solve threads: capped to 2 on CRAN, per
> # CRAN's two-core policy; on CI and locally rxode2 manages its own threads.
> # Platforms that only need to prove the package BUILDS and checks (macOS and
> # Windows in R-CMD-check.yaml) run the CRAN-visible subset instead of the full
> # NOT_CRAN suite. The same `checking tests` step costs ~19 min on an Ubuntu
> # runner and ~5h45m on macOS/Windows -- model compilation dominates there -- which
> # blew GitHub's hard 6-hour job limit and left those jobs cancelled, i.e. giving
> # no signal at all. Ubuntu still runs the full essential subset.
> if (isTRUE(as.logical(Sys.getenv("NLMIXR2EST_TEST_CRAN_ONLY", "false")))) {
+ Sys.setenv("NOT_CRAN" = "false") # nolint
+ }
>
> .onCran <- !identical(Sys.getenv("NOT_CRAN"), "true")
> .onCI <- isTRUE(as.logical(Sys.getenv("CI", "false")))
>
> if (.onCI || .onCran) {
+ options(Ncpus = 1L)
+ Sys.setenv(TESTTHAT_CPUS = "1")
+ Sys.setenv(TESTTHAT_PARALLEL = "FALSE")
+ }
> if (.onCran) {
+ setRxThreads(2L)
+ setDTthreads(2L)
+ }
> if (identical(Sys.info()[["sysname"]], "Darwin")) {
+ rxode2::rxUnloadAll(set = FALSE)
+ }
>
> # -------------------------------------------------------------------------
> # CI test partitioning
> #
> # The full suite takes many hours on a single-worker CI runner, so push/PR
> # R-CMD-check runs only the "essential" subset -- every test file EXCEPT the
> # slow ones listed in .slowBatches below (still much more than CRAN).
> #
> # The slow files run separately in the slow-tests workflow, split into
> # batches that each stay under ~1h and run one-at-a-time (non-overlapping).
> # That workflow sets NLMIXR2EST_TEST_BATCH=<n> to run only batch n's files.
> #
> # Names are the test file basename with the leading "test-" and trailing
> # ".R" removed (what testthat's `filter` matches). When a test file grows
> # past a few minutes, move it into one of the batches here.
> # -------------------------------------------------------------------------
> # Batches are sized from measured single-worker run times so each stays well
> # under an hour; the slow-tests workflow runs them one at a time.
> .slowBatches <- list(
+ # batch 1
+ c(
+ "focei-wang2007-boxcox",
+ "focei-wang2007-combined",
+ "vpcSim",
+ "qrpem-slow",
+ "focei-foce-plus",
+ "imp-proposal-slow"
+ ),
+ # batch 2
+ c(
+ "focei-wang2007-lognormal",
+ "cov-analytic",
+ "focei-wang2007-power",
+ "cov-condition",
+ "agq-cov",
+ "cov-decouple-saimp",
+ "cov-scope-swap"
+ ),
+ # batch 3
+ c(
+ "focei-wang2007-boxcox-half",
+ "nlm-cens",
+ "focei-cens-t-fit",
+ "mtime-fit",
+ "issue-429",
+ "issue-470",
+ "focei-wang2007-bounded",
+ "saem-loglik",
+ "mu-timevarying",
+ "saem-nearpd",
+ "saem-nonmutheta",
+ "focei-theta-reset-bounds",
+ "saem-cov-analytic",
+ "focei-shi21-bounds",
+ "splitbolus-interp",
+ "optexpression-saem-nlme",
+ "saem-cov-multi-endpoint-904",
+ "saem-modeled-resid-fit"
+ ),
+
+ # batches 4-7 -- the former batches 4 (13 files) and 5 (15 files), each split
+ # in two. Both TIMED OUT on the weekly runner (run 30688874991, 2026-08-01):
+ # "the runner has received a shutdown signal", exit 143, after ~3h06m of test
+ # time, so they reported NO assertion results at all. A meaningful slice of
+ # the suite therefore had no CI signal, which is how a wrong nlm adjoint
+ # gradient and several stale assertions survived here unnoticed. Each
+ # focei-wang2007-* file is kept in a separate batch -- one is ~10 error models
+ # x 6 fits (ODE and solved-form) and dominates whatever batch it lands in.
+ # batch 4
+ c(
+ "impmap",
+ "imp-prior",
+ "matexp",
+ "mfocei",
+ "focei-wang2007-yeojohnson",
+ "nlme",
+ "focei-fast-grad",
+ "lincmt-ode-fit",
+ "focei-lincmt-carry-fit",
+ "focei-lincmt-carry-fit-fallback",
+ "focei-lincmt-carry-jump-fit",
+ "focei-lincmt-carry-ll-fit",
+ "focei-lincmt-carry-theta-fit"
+ ),
+ # batch 5
+ c(
+ "focei-wang2007-boxcox-lnorm",
+ "nlme-cov",
+ "agq-fast-grad",
+ "focei-ll-fast-grad-fit",
+ "focei-fast-methods-fit",
+ "odeswap-fit",
+ "focei-factr-fit",
+ "focei-reproducible",
+ "focei-hessian-etastep",
+ "focei-outer-hessian-fit",
+ "focei-outer-hessian-nlminb-fit",
+ "focei-outer-hessian-family",
+ "focei-outer-hessian-censor"
+ ),
+ # batch 6
+ c(
+ "focei-llik",
+ "iov",
+ "iov-zero-eta",
+ "saem-mix",
+ "saem-mix-regress",
+ "posthoc",
+ "ar-est",
+ "mu-family",
+ "uninformative-etas-revisit",
+ "saem-iov-twolevel-fit",
+ "iov-loglik-1000"
+ ),
+ # batch 7
+ c(
+ "mu-plain-fit",
+ "vae-fit",
+ "focei-wang2007-basic",
+ "vae-neonatal",
+ "vae-errmodel",
+ "table-cmt",
+ "vae-covariate-selection"
+ ),
+ # batch 8 -- heaviest remaining files on the single-worker CI runner
+ # (VAE internals + a few slow structural tests), moved out of the essential
+ # push/PR subset to trim its wall time / reclamation exposure.
+ c(
+ "vae-encoder",
+ "vae-train",
+ "vae-decoder",
+ "vae-elbo",
+ "vae-inner",
+ "vae-fixbounds",
+ "vae-parhist",
+ "vae-iov",
+ "vae-grad-fit",
+ "vae-ll-grad-fit",
+ "vae-l0learn-fit",
+ "vae-hockey-fit",
+ "vae-colinear-fit",
+ "split",
+ "unary-mu",
+ "timing",
+ "bounded-transform"
+ ),
+ # batch 9 -- emvi/fbvi (variational inference) multi-iteration fits, plus the
+ # cross-method omega off-diagonal fit checks (vae/emvi/npag/npb)
+ c(
+ "vi-repro",
+ "vi-focei-agreement",
+ "vi-neonatal",
+ "vi-fullrank",
+ "vi-fullbayes",
+ "vi-stan",
+ "omega-offdiag",
+ "augpred",
+ "vae-residopt"
+ ),
+ # batch 10 -- nonparametric (npag/npb) fit-based validation. These set up the
+ # FOCEi inner problem and run full NPAG cycles / independent solves, so they are
+ # much slower than the essential npag unit tests (dispatch/ipm/grid, which stay
+ # in the push/PR subset) and run weekly only.
+ c(
+ "npag-psi",
+ "npag-cycle",
+ "npag-fit",
+ "npb-fit",
+ "npag-bimodal",
+ "npag-fixed",
+ "npag-error-models",
+ "npag-mixture",
+ "npag-general-lik",
+ "npag-muexpand",
+ "npag-golden",
+ "lik-contrib-methods",
+ "npag-npb-cens-978"
+ )
+ )
> .slowAll <- unlist(.slowBatches)
>
> .batch <- Sys.getenv("NLMIXR2EST_TEST_BATCH")
>
> .filter <- NULL
> if (nzchar(.batch)) {
+ # Slow-batch mode: run ONLY this batch's slow files.
+ .b <- suppressWarnings(as.integer(.batch))
+ if (is.na(.b) || .b < 1L || .b > length(.slowBatches)) {
+ stop(sprintf(
+ "NLMIXR2EST_TEST_BATCH=%s out of range (1..%d)",
+ .batch,
+ length(.slowBatches)
+ ))
+ }
+ .files <- .slowBatches[[.b]]
+ if (length(.files) == 0L) {
+ .filter <- "^$" # empty batch: match nothing
+ } else {
+ .filter <- paste0("^(", paste(.files, collapse = "|"), ")$")
+ }
+ } else if (.onCI && !.onCran && length(.slowAll) > 0L) {
+ # Essential subset on push/PR CI: everything EXCEPT the slow files.
+ #
+ # NLMIXR2EST_TEST_SHARD="i/n" splits that subset across n parallel jobs. A
+ # hosted runner reclaims a long job mid-run ("exit code 143 / The runner has
+ # received a shutdown signal"), and runner speed varies enormously -- the same
+ # `checking tests` step measured 27m on one ubuntu-release runner and was still
+ # going at 4h15m on another before being reclaimed. Sharding keeps every job
+ # short enough to finish without dropping a single test file.
+ .shard <- Sys.getenv("NLMIXR2EST_TEST_SHARD")
+ if (nzchar(.shard)) {
+ .p <- strsplit(.shard, "/", fixed = TRUE)[[1]]
+ .i <- suppressWarnings(as.integer(.p[1]))
+ .n <- suppressWarnings(as.integer(.p[2]))
+ if (length(.p) != 2L || is.na(.i) || is.na(.n) || .n < 1L || .i < 1L || .i > .n) {
+ stop(sprintf("NLMIXR2EST_TEST_SHARD=%s must be \"i/n\" with 1 <= i <= n", .shard))
+ }
+ # Deal the files out round-robin over a SORTED list so the split is stable
+ # across jobs and platforms, and every file lands in exactly one shard.
+ .all <- sort(sub(
+ "^test-",
+ "",
+ sub(
+ "\\.R$",
+ "",
+ basename(Sys.glob(file.path("testthat", "test-*.R")))
+ )
+ ))
+ .ess <- setdiff(.all, .slowAll)
+ # An empty list would make every shard match nothing and report a green run
+ # having tested nothing at all -- fail loudly instead.
+ if (length(.ess) == 0L) {
+ stop("NLMIXR2EST_TEST_SHARD set but no test files found in ./testthat")
+ }
+ .mine <- .ess[seq_along(.ess) %% .n == (.i %% .n)]
+ .filter <- if (length(.mine) == 0L) {
+ "^$"
+ } else {
+ paste0("^(", paste(.mine, collapse = "|"), ")$")
+ }
+ } else {
+ .filter <- paste0("^(?!(", paste(.slowAll, collapse = "|"), ")$)")
+ }
+ }
> # Locally (and on CRAN) .filter stays NULL -> run everything.
>
> # stop_on_failure MUST stay TRUE (the default). It was set to FALSE in
> # 4af6a7eba as a debugging aid ("Be more verbose in testthat to track-down
> # future seg faults"), and with it R CMD check never errors on a test failure
> # -- so `checking tests` passed no matter what. The run on main at 722e5775
> # reported SUCCESS while its three shards printed FAIL 8, FAIL 2 and FAIL 3;
> # thirteen real failures had reached main with a green badge the whole way.
> # If a segfault ever needs that verbosity again, set it for the one run
> # (R_TESTTHAT_... / an env guard), never in the committed harness.
> test_check("nlmixr2est", filter = .filter, perl = TRUE)
[skip] CRAN: not computing fixture fit: one.compartment.fit.saem
[skip] CRAN: not computing fixture fit: one.compartment.fit.saem.cwres
[skip] CRAN: not computing fixture fit: one.compartment.fit.focei
[skip] CRAN: not computing fixture fit: one.compartment.fit.focei.fast
[skip] CRAN: not computing fixture fit: one.compartment.fit.foce
[skip] CRAN: not computing fixture fit: one.compartment.fit.foi
[skip] CRAN: not computing fixture fit: one.compartment.fit.fo
[skip] CRAN: not computing fixture fit: one.compartment.fit.posthoc
[skip] CRAN: not computing fixture fit: one.compartment.with.lag.fit.focei
[skip] CRAN: not computing fixture fit: one.compartment.with.lag.fit.saem
[ok] Helper-fits.R loaded successfully
Cache version: v1.0.2-nlmixr2est-7.1.0-
Cache directory: ./fixtures
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> calculate sensitivities
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> calculate d(f)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> calculate d(R^2)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> finding duplicate expressions in inner model...
> finding duplicate expressions in EBE model...
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> calculate d(f)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> calculate d(R^2)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> finding duplicate expressions in inner model...
> finding duplicate expressions in EBE model...
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> calculate d(f)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> calculate d(R^2)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> finding duplicate expressions in inner model...
> finding duplicate expressions in EBE model...
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> calculate d(f)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> calculate d(R^2)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> finding duplicate expressions in inner model...
> finding duplicate expressions in EBE model...
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> calculate d(f)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> calculate d(R^2)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> finding duplicate expressions in inner model...
> finding duplicate expressions in EBE model...
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> calculate d(f)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> calculate d(R^2)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> finding duplicate expressions in inner model...
> finding duplicate expressions in EBE model...
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> calculate d(f)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> calculate d(R^2)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> finding duplicate expressions in inner model...
> finding duplicate expressions in EBE model...
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> calculate d(f)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> calculate d(R^2)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> finding duplicate expressions in inner model...
> finding duplicate expressions in EBE model...
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> calculate d(f)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> calculate d(R^2)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> finding duplicate expressions in inner model...
> finding duplicate expressions in EBE model...
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> calculate d(f)/d(eta)
[====|====|====|====|====|====|====|====|====|====] 0:00:00
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
> loading into symengine environment...
> pruning branches (`if`/`else`) of full model...
v done
*** caught segfault ***
address 0x4, cause 'memory not mapped'
tracked pnodes
Traceback:
1: .rxOptExprC(.norm)
2: rxOptExpr(.txt, msg = msg, chunkLines = 0L)
3: .rxOptExprChunked(x, msg = msg, chunkLines = .chunkLines, parallel = parallel)
4: rxode2::rxOptExpr(.s$..inner, ifelse(.getRxPredLlikOption(), "inner llik model", "inner model"), parallel = cores)
5: .rxFinalizeInner(.s, .sumProd, .optExpression, .cores)
6: rxUiGet.foceiEnv(.obj)
7: rxUiGet(.obj)
8: `$.rxUi`(.carryUiJump(), foceiEnv)
9: .carryUiJump()$foceiEnv
10: withCallingHandlers(expr, message = function(c) if (inherits(c, classes)) tryInvokeRestart("muffleMessage"))
11: suppressMessages(.carryUiJump()$foceiEnv)
12: eval(code, test_env)
13: eval(code, test_env)
14: withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt)
15: doTryCatch(return(expr), name, parentenv, handler)
16: tryCatchOne(expr, names, parentenv, handlers[[1L]])
17: tryCatchList(expr, classes, parentenv, handlers)
18: tryCatch(withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt), error = handle_fatal)
19: doWithOneRestart(return(expr), restart)
20: withOneRestart(expr, restarts[[1L]])
21: withRestarts(tryCatch(withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt), error = handle_fatal), end_test = function() { })
22: test_code(code, parent.frame())
23: test_that("the jump block is emitted with the pin, amounts/lag trackers and indicators", { skip_if_not(.carryJumpCapable()) txt <- suppressMessages(.carryUiJump()$foceiEnv)$..inner expect_true(grepl(", -8, 0,", txt, fixed = TRUE)) expect_true(grepl("rx_lcCarryPin_~", txt, fixed = TRUE)) expect_true(grepl("rx_lcCarryD0_~(rx_lcCarryA0_-rx_lcCarryPA0_)", txt, fixed = TRUE)) expect_true(grepl("rx_lcCarryDel_~ifelse(", txt, fixed = TRUE)) expect_true(grepl("rx_lcCarryKP1_~", txt, fixed = TRUE)) expect_true(grepl("rx_lcCarryUA0_~", txt, fixed = TRUE)) expect_true(grepl("rx_lcCarryUL0_~", txt, fixed = TRUE)) expect_equal(lengths(regmatches(txt, gregexpr("rx_lcCarryAdv_~", txt))), 1L) expect_true(grepl("rx__sens_rx_pred__BY_ETA_2___=rx_lcCarryS1r1_/", txt)) expect_true(grepl("rx__sens_rx_pred__BY_ETA_3___=rx_lcCarryS2r1_/", txt)) })
24: eval(code, test_env)
25: eval(code, test_env)
26: withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt)
27: doTryCatch(return(expr), name, parentenv, handler)
28: tryCatchOne(expr, names, parentenv, handlers[[1L]])
29: tryCatchList(expr, classes, parentenv, handlers)
30: tryCatch(withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt), error = handle_fatal)
31: doWithOneRestart(return(expr), restart)
32: withOneRestart(expr, restarts[[1L]])
33: withRestarts(tryCatch(withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt), error = handle_fatal), end_test = function() { })
34: test_code(code = exprs, env = env, reporter = get_reporter() %||% StopReporter$new())
35: source_file(path, env = env(env), desc = desc, shuffle = shuffle, error_call = error_call)
36: FUN(X[[i]], ...)
37: lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle, error_call = error_call)
38: doTryCatch(return(expr), name, parentenv, handler)
39: tryCatchOne(expr, names, parentenv, handlers[[1L]])
40: tryCatchList(expr, classes, parentenv, handlers)
41: tryCatch(code, testthat_abort_reporter = function(cnd) { cat(conditionMessage(cnd), "\n") NULL})
42: with_reporter(reporters$multi, lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle, error_call = error_call))
43: test_files_serial(test_dir = test_dir, test_package = test_package, test_paths = test_paths, load_helpers = load_helpers, reporter = reporter, env = env, stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning, desc = desc, load_package = load_package, shuffle = shuffle, error_call = error_call)
44: test_files(test_dir = path, test_paths = test_paths, test_package = package, reporter = reporter, load_helpers = load_helpers, env = env, stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning, load_package = load_package, parallel = parallel, shuffle = shuffle)
45: test_dir("testthat", package = package, reporter = reporter, ..., load_package = "installed")
46: test_check("nlmixr2est", filter = .filter, perl = TRUE)
An irrecoverable exception occurred. R is aborting now ...
- checking for unstated dependencies in vignettes ... OK
- checking package vignettes ... OK
- checking re-building of vignette outputs ... OK
- checking PDF version of manual ... [11s/14s] OK
- checking HTML version of manual ... OK
- checking for non-standard things in the check directory ... OK
- checking for detritus in the temp directory ... OK
- DONE
Status: 1 ERROR