Last updated on 2026-04-05 17:52:52 CEST.
| Flavor | Version | Tinstall | Tcheck | Ttotal | Status | Flags |
|---|---|---|---|---|---|---|
| r-devel-linux-x86_64-debian-clang | 1.4.5 | 25.87 | 46.84 | 72.71 | NOTE | |
| r-devel-linux-x86_64-debian-gcc | 1.4.5 | 21.46 | 36.61 | 58.07 | OK | |
| r-devel-linux-x86_64-fedora-clang | 1.4.5 | 42.00 | 58.04 | 100.04 | ERROR | |
| r-devel-linux-x86_64-fedora-gcc | 1.4.5 | 59.00 | 82.42 | 141.42 | OK | |
| r-devel-macos-arm64 | 1.4.5 | 6.00 | 17.00 | 23.00 | OK | |
| r-devel-windows-x86_64 | 1.4.5 | 42.00 | 90.00 | 132.00 | NOTE | |
| r-patched-linux-x86_64 | 1.4.5 | 25.86 | 42.02 | 67.88 | NOTE | |
| r-release-linux-x86_64 | 1.4.5 | 25.30 | 40.34 | 65.64 | OK | |
| r-release-macos-arm64 | 1.4.5 | OK | ||||
| r-release-macos-x86_64 | 1.4.5 | 16.00 | 62.00 | 78.00 | OK | |
| r-release-windows-x86_64 | 1.4.5 | 38.00 | 88.00 | 126.00 | OK | |
| r-oldrel-macos-arm64 | 1.4.5 | OK | ||||
| r-oldrel-macos-x86_64 | 1.4.5 | 16.00 | 52.00 | 68.00 | OK | |
| r-oldrel-windows-x86_64 | 1.4.5 | 45.00 | 101.00 | 146.00 | OK |
Version: 1.4.5
Check: compiled code
Result: NOTE
File ‘readxl/libs/readxl.so’:
Found non-API call to R: ‘R_NamespaceRegistry’
Compiled code should not call non-API entry points in R.
See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual,
and section ‘Moving into C API compliance’ for issues with the use of
non-API entry points.
Flavors: r-devel-linux-x86_64-debian-clang, r-patched-linux-x86_64
Version: 1.4.5
Check: tests
Result: ERROR
Running ‘testthat.R’
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> library(testthat)
> library(readxl)
>
> test_check("readxl")
*** caught segfault ***
address (nil), cause 'memory not mapped'
Traceback:
1: read_fun(path = path, sheet_i = sheet, limits = limits, shim = shim, col_names = col_names, col_types = col_types, na = na, trim_ws = trim_ws, guess_max = guess_max, progress = progress)
2: tibble::as_tibble(l, .name_repair = .name_repair)
3: set_readxl_names(read_fun(path = path, sheet_i = sheet, limits = limits, shim = shim, col_names = col_names, col_types = col_types, na = na, trim_ws = trim_ws, guess_max = guess_max, progress = progress), .name_repair = .name_repair)
4: read_excel_(path = path, sheet = sheet, range = range, col_names = col_names, col_types = col_types, na = na, trim_ws = trim_ws, skip = skip, n_max = n_max, guess_max = guess_max, progress = progress, .name_repair = .name_repair, format = format)
5: read_excel(test_sheet("types.xls"), sheet = "logical_coercion", col_types = c("logical", "text"))
6: eval(expr, envir)
7: eval(expr, envir)
8: withVisible(eval(expr, envir))
9: withCallingHandlers(code, error = function (cnd) rlang::entrace(cnd), message = function (cnd) { watcher$capture_plot_and_output() if (on_message$capture) { watcher$push(cnd) } if (on_message$silence) { invokeRestart("muffleMessage") }}, warning = function (cnd) { if (getOption("warn") >= 2 || getOption("warn") < 0) { return() } watcher$capture_plot_and_output() if (on_warning$capture) { cnd <- sanitize_call(cnd) watcher$push(cnd) } if (on_warning$silence) { invokeRestart("muffleWarning") }}, error = function (cnd) { watcher$capture_plot_and_output() cnd <- sanitize_call(cnd) watcher$push(cnd) switch(on_error, continue = invokeRestart("eval_continue"), stop = invokeRestart("eval_stop"), error = NULL)})
10: eval(call)
11: eval(call)
12: with_handlers({ for (expr in tle$exprs) { ev <- withVisible(eval(expr, envir)) watcher$capture_plot_and_output() watcher$print_value(ev$value, ev$visible, envir) } TRUE}, handlers)
13: doWithOneRestart(return(expr), restart)
14: withOneRestart(expr, restarts[[1L]])
15: withRestartList(expr, restarts[-nr])
16: doWithOneRestart(return(expr), restart)
17: withOneRestart(withRestartList(expr, restarts[-nr]), restarts[[nr]])
18: withRestartList(expr, restarts)
19: withRestarts(with_handlers({ for (expr in tle$exprs) { ev <- withVisible(eval(expr, envir)) watcher$capture_plot_and_output() watcher$print_value(ev$value, ev$visible, envir) } TRUE}, handlers), eval_continue = function() TRUE, eval_stop = function() FALSE)
20: evaluate::evaluate(source, envir = env, new_device = FALSE, output_handler = handler)
21: verify_exec(quo_get_expr(x), quo_get_env(x), replay)
22: with_is_snapshotting(out <- verify_exec(quo_get_expr(x), quo_get_env(x), replay))
23: expect_snapshot_(x, cran = cran, error = error, transform = transform, variant = variant, cnd_class = cnd_class)
24: expect_snapshot(df <- read_excel(test_sheet("types.xls"), sheet = "logical_coercion", col_types = c("logical", "text")))
25: eval(code, test_env)
26: eval(code, test_env)
27: 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)
28: doTryCatch(return(expr), name, parentenv, handler)
29: tryCatchOne(expr, names, parentenv, handlers[[1L]])
30: tryCatchList(expr, classes, parentenv, handlers)
31: 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)
32: doWithOneRestart(return(expr), restart)
33: withOneRestart(expr, restarts[[1L]])
34: 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() { })
35: test_code(code, parent.frame())
36: test_that("contaminated, explicit logical is read as logical", { expect_snapshot(df <- read_excel(test_sheet("types.xls"), sheet = "logical_coercion", col_types = c("logical", "text"))) expect_true(is.logical(df$logical)) should_be_NA <- df$explanation %in% c("string not logical", "blank", "date") expect_false(anyNA(df$logical[!should_be_NA])) expect_snapshot(df <- read_excel(test_sheet("types.xlsx"), sheet = "logical_coercion", col_types = c("logical", "text"))) expect_true(is.logical(df$logical)) should_be_NA <- df$explanation %in% c("string not logical", "blank", "date") expect_false(anyNA(df$logical[!should_be_NA])) })
37: eval(code, test_env)
38: eval(code, test_env)
39: 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)
40: doTryCatch(return(expr), name, parentenv, handler)
41: tryCatchOne(expr, names, parentenv, handlers[[1L]])
42: tryCatchList(expr, classes, parentenv, handlers)
43: 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)
44: doWithOneRestart(return(expr), restart)
45: withOneRestart(expr, restarts[[1L]])
46: 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() { })
47: test_code(code = exprs, env = env, reporter = get_reporter() %||% StopReporter$new())
48: source_file(path, env = env(env), desc = desc, shuffle = shuffle, error_call = error_call)
49: FUN(X[[i]], ...)
50: lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle, error_call = error_call)
51: doTryCatch(return(expr), name, parentenv, handler)
52: tryCatchOne(expr, names, parentenv, handlers[[1L]])
53: tryCatchList(expr, classes, parentenv, handlers)
54: tryCatch(code, testthat_abort_reporter = function(cnd) { cat(conditionMessage(cnd), "\n") NULL})
55: with_reporter(reporters$multi, lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle, error_call = error_call))
56: 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)
57: 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)
58: test_dir("testthat", package = package, reporter = reporter, ..., load_package = "installed")
59: test_check("readxl")
An irrecoverable exception occurred. R is aborting now ...
Flavor: r-devel-linux-x86_64-fedora-clang
Version: 1.4.5
Check: re-building of vignette outputs
Result: ERROR
Error(s) in re-building vignettes:
--- re-building ‘cell-and-column-types.Rmd’ using rmarkdown
*** caught segfault ***
address (nil), cause 'memory not mapped'
Traceback:
1: read_fun(path = path, sheet_i = sheet, limits = limits, shim = shim, col_names = col_names, col_types = col_types, na = na, trim_ws = trim_ws, guess_max = guess_max, progress = progress)
2: tibble::as_tibble(l, .name_repair = .name_repair)
3: set_readxl_names(read_fun(path = path, sheet_i = sheet, limits = limits, shim = shim, col_names = col_names, col_types = col_types, na = na, trim_ws = trim_ws, guess_max = guess_max, progress = progress), .name_repair = .name_repair)
4: read_excel_(path = path, sheet = sheet, range = range, col_names = col_names, col_types = col_types, na = na, trim_ws = trim_ws, skip = skip, n_max = n_max, guess_max = guess_max, progress = progress, .name_repair = .name_repair, format = format)
5: read_excel(readxl_example("type-me.xlsx"), sheet = "logical_coercion", col_types = c("logical", "text"))
6: eval(expr, envir)
7: eval(expr, envir)
8: withVisible(eval(expr, envir))
9: withCallingHandlers(code, error = function (e) rlang::entrace(e), message = function (cnd) { watcher$capture_plot_and_output() if (on_message$capture) { watcher$push(cnd) } if (on_message$silence) { invokeRestart("muffleMessage") }}, warning = function (cnd) { if (getOption("warn") >= 2 || getOption("warn") < 0) { return() } watcher$capture_plot_and_output() if (on_warning$capture) { cnd <- sanitize_call(cnd) watcher$push(cnd) } if (on_warning$silence) { invokeRestart("muffleWarning") }}, error = function (cnd) { watcher$capture_plot_and_output() cnd <- sanitize_call(cnd) watcher$push(cnd) switch(on_error, continue = invokeRestart("eval_continue"), stop = invokeRestart("eval_stop"), error = NULL)})
10: eval(call)
11: eval(call)
12: with_handlers({ for (expr in tle$exprs) { ev <- withVisible(eval(expr, envir)) watcher$capture_plot_and_output() watcher$print_value(ev$value, ev$visible, envir) } TRUE}, handlers)
13: doWithOneRestart(return(expr), restart)
14: withOneRestart(expr, restarts[[1L]])
15: withRestartList(expr, restarts[-nr])
16: doWithOneRestart(return(expr), restart)
17: withOneRestart(withRestartList(expr, restarts[-nr]), restarts[[nr]])
18: withRestartList(expr, restarts)
19: withRestarts(with_handlers({ for (expr in tle$exprs) { ev <- withVisible(eval(expr, envir)) watcher$capture_plot_and_output() watcher$print_value(ev$value, ev$visible, envir) } TRUE}, handlers), eval_continue = function() TRUE, eval_stop = function() FALSE)
20: evaluate::evaluate(...)
21: evaluate(code, envir = env, new_device = FALSE, keep_warning = if (is.numeric(options$warning)) TRUE else options$warning, keep_message = if (is.numeric(options$message)) TRUE else options$message, stop_on_error = if (is.numeric(options$error)) options$error else { if (options$error && options$include) 0L else 2L }, output_handler = knit_handlers(options$render, options))
22: in_dir(input_dir(), expr)
23: in_input_dir(evaluate(code, envir = env, new_device = FALSE, keep_warning = if (is.numeric(options$warning)) TRUE else options$warning, keep_message = if (is.numeric(options$message)) TRUE else options$message, stop_on_error = if (is.numeric(options$error)) options$error else { if (options$error && options$include) 0L else 2L }, output_handler = knit_handlers(options$render, options)))
24: eng_r(options)
25: block_exec(params)
26: call_block(x)
27: process_group(group)
28: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { if (progress && is.function(pb$interrupt)) pb$interrupt() if (is_R_CMD_build() || is_R_CMD_check()) error <<- format(e) })
29: with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { if (progress && is.function(pb$interrupt)) pb$interrupt() if (is_R_CMD_build() || is_R_CMD_check()) error <<- format(e) }), list(rlang_trace_top_env = knit_global()))
30: xfun:::handle_error(with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { if (progress && is.function(pb$interrupt)) pb$interrupt() if (is_R_CMD_build() || is_R_CMD_check()) error <<- format(e) }), list(rlang_trace_top_env = knit_global())), function(loc) { setwd(wd) write_utf8(res, output %n% stdout()) paste0("\nQuitting from ", loc, if (!is.null(error)) paste0("\n", rule(), error, "\n", rule()))}, if (labels[i] != "") sprintf(" [%s]", labels[i]), get_loc)
31: process_file(text, output)
32: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
33: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv(), output_dir = getwd(), ...)
34: vweave_rmarkdown(...)
35: engine$weave(file, quiet = quiet, encoding = enc)
36: doTryCatch(return(expr), name, parentenv, handler)
37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
38: tryCatchList(expr, classes, parentenv, handlers)
39: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc) setwd(startdir) output <- find_vignette_product(name, by = "weave", engine = engine) if (!have.makefile && vignette_is_tex(output)) { texi2pdf(file = output, clean = FALSE, quiet = quiet) output <- find_vignette_product(name, by = "texi2pdf", engine = engine) }}, error = function(e) { OK <<- FALSE message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s", file, conditionMessage(e)))})
40: tools:::.buildOneVignette("cell-and-column-types.Rmd", "/data/gannet/ripley/R/packages/tests-clang/readxl.Rcheck/vign_test/readxl", TRUE, FALSE, "cell-and-column-types", "UTF-8", "/tmp/RtmpZbuK2p/working_dir/Rtmp3dtAk4/file2c3af4711923be.rds")
An irrecoverable exception occurred. R is aborting now ...
--- re-building ‘sheet-geometry.Rmd’ using rmarkdown
--- finished re-building ‘sheet-geometry.Rmd’
SUMMARY: processing the following file failed:
‘cell-and-column-types.Rmd’
Error: Vignette re-building failed.
Execution halted
Flavor: r-devel-linux-x86_64-fedora-clang
Version: 1.4.5
Check: compiled code
Result: NOTE
File 'readxl/libs/x64/readxl.dll':
Found non-API call to R: 'R_NamespaceRegistry'
Compiled code should not call non-API entry points in R.
See 'Writing portable packages' in the 'Writing R Extensions' manual,
and section 'Moving into C API compliance' for issues with the use of
non-API entry points.
Flavor: r-devel-windows-x86_64