CRAN Package Check Results for Package readxl

Last updated on 2026-04-05 02:52:41 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 56.50 98.50 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

Additional issues

M1mac

Check Details

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/RtmpGbd7L0/working_dir/RtmpPzKk3T/file392a42352e30fe.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