CRAN Package Check Results for Package plumber

Last updated on 2026-06-07 08:50:35 CEST.

Flavor Version Tinstall Tcheck Ttotal Status Flags
r-devel-linux-x86_64-debian-clang 1.3.3 12.57 86.07 98.64 OK
r-devel-linux-x86_64-debian-gcc 1.3.3 8.48 55.01 63.49 ERROR
r-devel-linux-x86_64-fedora-clang 1.3.3 21.00 133.93 154.93 OK
r-devel-linux-x86_64-fedora-gcc 1.3.3 21.00 179.08 200.08 OK
r-devel-windows-x86_64 1.3.3 15.00 110.00 125.00 OK
r-patched-linux-x86_64 1.3.3 13.33 82.57 95.90 OK
r-release-linux-x86_64 1.3.3 11.60 82.19 93.79 OK
r-release-macos-arm64 1.3.3 3.00 41.00 44.00 OK
r-release-macos-x86_64 1.3.3 8.00 211.00 219.00 OK
r-release-windows-x86_64 1.3.3 16.00 109.00 125.00 OK
r-oldrel-macos-arm64 1.3.3 3.00 41.00 44.00 OK
r-oldrel-macos-x86_64 1.3.3 8.00 189.00 197.00 OK
r-oldrel-windows-x86_64 1.3.3 18.00 133.00 151.00 OK

Check Details

Version: 1.3.3
Check: tests
Result: ERROR Running ‘spelling.R’ [0s/0s] Running ‘testthat.R’ [14s/18s] Running the tests in ‘tests/testthat.R’ failed. Complete output: > library(testthat) > library(plumber) > > test_check("plumber") *** caught segfault *** address 0x1, cause 'memory not mapped' Traceback: 1: vroom_(file, delim = delim %||% col_types$delim, col_names = col_names, col_types = col_types, id = id, skip = skip, col_select = col_select, name_repair = .name_repair, na = na, quote = quote, trim_ws = trim_ws, escape_double = escape_double, escape_backslash = escape_backslash, comment = comment, skip_empty_rows = skip_empty_rows, locale = locale, guess_max = guess_max, n_max = n_max, altrep = vroom_altrep(altrep), num_threads = num_threads, progress = progress) 2: vroom::vroom(file, delim = "\t", col_names = col_names, col_types = col_types, col_select = { { col_select } }, id = id, .name_repair = name_repair, skip = skip, n_max = n_max, na = na, quote = quote, comment = comment, skip_empty_rows = skip_empty_rows, trim_ws = trim_ws, escape_double = TRUE, escape_backslash = FALSE, locale = locale, guess_max = guess_max, show_col_types = show_col_types, progress = progress, altrep = lazy, num_threads = num_threads) 3: readr::read_tsv(raw_val, ...) 4: parse_fn(value) 5: (function (value, ...) { parse_fn(value)})(value = as.raw(c(0x78, 0x09, 0x79, 0x09, 0x7a, 0x0d, 0x0a, 0x30, 0x2e, 0x31, 0x31, 0x38, 0x34, 0x31, 0x33, 0x32, 0x35, 0x39, 0x09, 0x30, 0x2e, 0x37, 0x30, 0x38, 0x37, 0x38, 0x30, 0x31, 0x31, 0x35, 0x09, 0x30, 0x2e, 0x32, 0x32, 0x30, 0x34, 0x32, 0x31, 0x37, 0x33, 0x33, 0x0d, 0x0a, 0x30, 0x2e, 0x37, 0x34, 0x34, 0x32, 0x34, 0x34, 0x36, 0x09, 0x30, 0x2e, 0x35, 0x33, 0x39, 0x39, 0x35, 0x33, 0x35, 0x30, 0x32, 0x09, 0x30, 0x2e, 0x30, 0x32, 0x33, 0x35, 0x38, 0x34, 0x35, 0x35, 0x0d, 0x0a, 0x30, 0x2e, 0x34, 0x35, 0x32, 0x32, 0x31, 0x36, 0x35, 0x30, 0x38, 0x09, 0x30, 0x2e, 0x34, 0x33, 0x34, 0x33, 0x33, 0x35, 0x33, 0x38, 0x32, 0x09, 0x30, 0x2e, 0x32, 0x39, 0x30, 0x35, 0x39, 0x31, 0x31, 0x30, 0x35, 0x0d, 0x0a, 0x30, 0x2e, 0x31, 0x37, 0x37, 0x38, 0x37, 0x30, 0x33, 0x35, 0x31, 0x09, 0x30, 0x2e, 0x33, 0x32, 0x39, 0x35, 0x38, 0x35, 0x38, 0x35, 0x34, 0x09, 0x30, 0x2e, 0x38, 0x36, 0x37, 0x31, 0x33, 0x34, 0x39, 0x34, 0x38, 0x0d, 0x0a, 0x30, 0x2e, 0x33, 0x32, 0x38, 0x33, 0x33, 0x33, 0x35, 0x39, 0x34, 0x09, 0x30, 0x2e, 0x35, 0x36, 0x34, 0x36, 0x38, 0x34, 0x31, 0x39, 0x38, 0x09, 0x30, 0x2e, 0x34, 0x35, 0x35, 0x35, 0x32, 0x30, 0x34, 0x35, 0x36, 0x0d, 0x0a, 0x30, 0x2e, 0x36, 0x38, 0x30, 0x38, 0x37, 0x33, 0x31, 0x39, 0x31, 0x09, 0x30, 0x2e, 0x35, 0x37, 0x36, 0x31, 0x39, 0x37, 0x30, 0x39, 0x09, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x35, 0x30, 0x31, 0x39, 0x32, 0x39, 0x0d, 0x0a, 0x30, 0x2e, 0x38, 0x37, 0x32, 0x30, 0x39, 0x31, 0x37, 0x37, 0x09, 0x30, 0x2e, 0x34, 0x34, 0x38, 0x37, 0x35, 0x30, 0x32, 0x09, 0x30, 0x2e, 0x30, 0x30, 0x38, 0x37, 0x38, 0x37, 0x36, 0x33, 0x38, 0x0d, 0x0a, 0x30, 0x2e, 0x35, 0x30, 0x39, 0x36, 0x36, 0x34, 0x36, 0x36, 0x09, 0x30, 0x2e, 0x39, 0x35, 0x38, 0x36, 0x38, 0x33, 0x35, 0x34, 0x37, 0x09, 0x30, 0x2e, 0x32, 0x35, 0x31, 0x35, 0x30, 0x30, 0x34, 0x37, 0x38, 0x0d, 0x0a, 0x30, 0x2e, 0x39, 0x33, 0x37, 0x36, 0x37, 0x37, 0x39, 0x38, 0x35, 0x09, 0x30, 0x2e, 0x34, 0x35, 0x37, 0x35, 0x35, 0x37, 0x34, 0x36, 0x38, 0x09, 0x30, 0x2e, 0x31, 0x39, 0x38, 0x36, 0x30, 0x31, 0x36, 0x39, 0x0d, 0x0a, 0x30, 0x2e, 0x33, 0x35, 0x32, 0x33, 0x36, 0x36, 0x35, 0x39, 0x36, 0x09, 0x30, 0x2e, 0x34, 0x39, 0x32, 0x38, 0x33, 0x35, 0x30, 0x36, 0x09, 0x30, 0x2e, 0x31, 0x36, 0x31, 0x36, 0x31, 0x34, 0x38, 0x36, 0x33, 0x0d, 0x0a, 0x30, 0x2e, 0x33, 0x37, 0x30, 0x35, 0x39, 0x38, 0x35, 0x37, 0x32, 0x09, 0x30, 0x2e, 0x33, 0x36, 0x36, 0x39, 0x38, 0x36, 0x36, 0x38, 0x32, 0x09, 0x30, 0x2e, 0x31, 0x35, 0x36, 0x32, 0x33, 0x38, 0x39, 0x36, 0x0d, 0x0a)), content_disposition = "form-data", content_type = "text/tab-separated-values", name = "sample_name", filename = "sample.tsv", parsers = list( alias = list(multi = function (value, content_type, parsers, ...) { if (!stri_detect_fixed(content_type, "boundary=", case_insensitive = TRUE)) stop("No boundary found in multipart content-type header: ", content_type) boundary <- stri_match_first_regex(content_type, "boundary=\"?([^; \"]{2,})\"?", case_insensitive = TRUE)[, 2] toparse <- parse_multipart(value, boundary) toparse_names <- vapply(toparse, function(x) { name <- x$name if (length(name) == 0) { return("") } name }, character(1)) names(toparse) <- toparse_names ret <- lapply(toparse, function(x) { if (is.null(x$content_type) || isTRUE(stri_detect_fixed(x$content_type, "application/octet-stream"))) { if (!is.null(x$filename)) { x$content_type <- getContentType(tools::file_ext(x$filename)) } } item <- x item$parsers <- parsers x$parsed <- parse_raw(item) x }) class(ret) <- "plumber_multipart" ret }, tsv = function (value, ...) { parse_fn(value) }), fixed = list(`multipart/form-data` = function (value, content_type, parsers, ...) { if (!stri_detect_fixed(content_type, "boundary=", case_insensitive = TRUE)) stop("No boundary found in multipart content-type header: ", content_type) boundary <- stri_match_first_regex(content_type, "boundary=\"?([^; \"]{2,})\"?", case_insensitive = TRUE)[, 2] toparse <- parse_multipart(value, boundary) toparse_names <- vapply(toparse, function(x) { name <- x$name if (length(name) == 0) { return("") } name }, character(1)) names(toparse) <- toparse_names ret <- lapply(toparse, function(x) { if (is.null(x$content_type) || isTRUE(stri_detect_fixed(x$content_type, "application/octet-stream"))) { if (!is.null(x$filename)) { x$content_type <- getContentType(tools::file_ext(x$filename)) } } item <- x item$parsers <- parsers x$parsed <- parse_raw(item) x }) class(ret) <- "plumber_multipart" ret }, `application/tab-separated-values` = function (value, ...) { parse_fn(value) }, `text/tab-separated-values` = function (value, ...) { parse_fn(value) }), regex = list(`^multipart/` = function (value, content_type, parsers, ...) { if (!stri_detect_fixed(content_type, "boundary=", case_insensitive = TRUE)) stop("No boundary found in multipart content-type header: ", content_type) boundary <- stri_match_first_regex(content_type, "boundary=\"?([^; \"]{2,})\"?", case_insensitive = TRUE)[, 2] toparse <- parse_multipart(value, boundary) toparse_names <- vapply(toparse, function(x) { name <- x$name if (length(name) == 0) { return("") } name }, character(1)) names(toparse) <- toparse_names ret <- lapply(toparse, function(x) { if (is.null(x$content_type) || isTRUE(stri_detect_fixed(x$content_type, "application/octet-stream"))) { if (!is.null(x$filename)) { x$content_type <- getContentType(tools::file_ext(x$filename)) } } item <- x item$parsers <- parsers x$parsed <- parse_raw(item) x }) class(ret) <- "plumber_multipart" ret }))) 6: do.call(parser, toparse) 7: parse_raw(item) 8: FUN(X[[i]], ...) 9: lapply(toparse, function(x) { if (is.null(x$content_type) || isTRUE(stri_detect_fixed(x$content_type, "application/octet-stream"))) { if (!is.null(x$filename)) { x$content_type <- getContentType(tools::file_ext(x$filename)) } } item <- x item$parsers <- parsers x$parsed <- parse_raw(item) x}) 10: (function (value, content_type, parsers, ...) { if (!stri_detect_fixed(content_type, "boundary=", case_insensitive = TRUE)) stop("No boundary found in multipart content-type header: ", content_type) boundary <- stri_match_first_regex(content_type, "boundary=\"?([^; \"]{2,})\"?", case_insensitive = TRUE)[, 2] toparse <- parse_multipart(value, boundary) toparse_names <- vapply(toparse, function(x) { name <- x$name if (length(name) == 0) { return("") } name }, character(1)) names(toparse) <- toparse_names ret <- lapply(toparse, function(x) { if (is.null(x$content_type) || isTRUE(stri_detect_fixed(x$content_type, "application/octet-stream"))) { if (!is.null(x$filename)) { x$content_type <- getContentType(tools::file_ext(x$filename)) } } item <- x item$parsers <- parsers x$parsed <- parse_raw(item) x }) class(ret) <- "plumber_multipart" ret})(value = as.raw(c(0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x39, 0x30, 0x39, 0x30, 0x38, 0x38, 0x38, 0x32, 0x33, 0x33, 0x32, 0x38, 0x37, 0x30, 0x33, 0x32, 0x33, 0x36, 0x34, 0x32, 0x36, 0x37, 0x33, 0x38, 0x37, 0x30, 0x32, 0x37, 0x32, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x3b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3b, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x74, 0x73, 0x76, 0x22, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x61, 0x62, 0x2d, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x0d, 0x0a, 0x0d, 0x0a, 0x78, 0x09, 0x79, 0x09, 0x7a, 0x0d, 0x0a, 0x30, 0x2e, 0x31, 0x31, 0x38, 0x34, 0x31, 0x33, 0x32, 0x35, 0x39, 0x09, 0x30, 0x2e, 0x37, 0x30, 0x38, 0x37, 0x38, 0x30, 0x31, 0x31, 0x35, 0x09, 0x30, 0x2e, 0x32, 0x32, 0x30, 0x34, 0x32, 0x31, 0x37, 0x33, 0x33, 0x0d, 0x0a, 0x30, 0x2e, 0x37, 0x34, 0x34, 0x32, 0x34, 0x34, 0x36, 0x09, 0x30, 0x2e, 0x35, 0x33, 0x39, 0x39, 0x35, 0x33, 0x35, 0x30, 0x32, 0x09, 0x30, 0x2e, 0x30, 0x32, 0x33, 0x35, 0x38, 0x34, 0x35, 0x35, 0x0d, 0x0a, 0x30, 0x2e, 0x34, 0x35, 0x32, 0x32, 0x31, 0x36, 0x35, 0x30, 0x38, 0x09, 0x30, 0x2e, 0x34, 0x33, 0x34, 0x33, 0x33, 0x35, 0x33, 0x38, 0x32, 0x09, 0x30, 0x2e, 0x32, 0x39, 0x30, 0x35, 0x39, 0x31, 0x31, 0x30, 0x35, 0x0d, 0x0a, 0x30, 0x2e, 0x31, 0x37, 0x37, 0x38, 0x37, 0x30, 0x33, 0x35, 0x31, 0x09, 0x30, 0x2e, 0x33, 0x32, 0x39, 0x35, 0x38, 0x35, 0x38, 0x35, 0x34, 0x09, 0x30, 0x2e, 0x38, 0x36, 0x37, 0x31, 0x33, 0x34, 0x39, 0x34, 0x38, 0x0d, 0x0a, 0x30, 0x2e, 0x33, 0x32, 0x38, 0x33, 0x33, 0x33, 0x35, 0x39, 0x34, 0x09, 0x30, 0x2e, 0x35, 0x36, 0x34, 0x36, 0x38, 0x34, 0x31, 0x39, 0x38, 0x09, 0x30, 0x2e, 0x34, 0x35, 0x35, 0x35, 0x32, 0x30, 0x34, 0x35, 0x36, 0x0d, 0x0a, 0x30, 0x2e, 0x36, 0x38, 0x30, 0x38, 0x37, 0x33, 0x31, 0x39, 0x31, 0x09, 0x30, 0x2e, 0x35, 0x37, 0x36, 0x31, 0x39, 0x37, 0x30, 0x39, 0x09, 0x30, 0x2e, 0x30, 0x31, 0x35, 0x35, 0x30, 0x31, 0x39, 0x32, 0x39, 0x0d, 0x0a, 0x30, 0x2e, 0x38, 0x37, 0x32, 0x30, 0x39, 0x31, 0x37, 0x37, 0x09, 0x30, 0x2e, 0x34, 0x34, 0x38, 0x37, 0x35, 0x30, 0x32, 0x09, 0x30, 0x2e, 0x30, 0x30, 0x38, 0x37, 0x38, 0x37, 0x36, 0x33, 0x38, 0x0d, 0x0a, 0x30, 0x2e, 0x35, 0x30, 0x39, 0x36, 0x36, 0x34, 0x36, 0x36, 0x09, 0x30, 0x2e, 0x39, 0x35, 0x38, 0x36, 0x38, 0x33, 0x35, 0x34, 0x37, 0x09, 0x30, 0x2e, 0x32, 0x35, 0x31, 0x35, 0x30, 0x30, 0x34, 0x37, 0x38, 0x0d, 0x0a, 0x30, 0x2e, 0x39, 0x33, 0x37, 0x36, 0x37, 0x37, 0x39, 0x38, 0x35, 0x09, 0x30, 0x2e, 0x34, 0x35, 0x37, 0x35, 0x35, 0x37, 0x34, 0x36, 0x38, 0x09, 0x30, 0x2e, 0x31, 0x39, 0x38, 0x36, 0x30, 0x31, 0x36, 0x39, 0x0d, 0x0a, 0x30, 0x2e, 0x33, 0x35, 0x32, 0x33, 0x36, 0x36, 0x35, 0x39, 0x36, 0x09, 0x30, 0x2e, 0x34, 0x39, 0x32, 0x38, 0x33, 0x35, 0x30, 0x36, 0x09, 0x30, 0x2e, 0x31, 0x36, 0x31, 0x36, 0x31, 0x34, 0x38, 0x36, 0x33, 0x0d, 0x0a, 0x30, 0x2e, 0x33, 0x37, 0x30, 0x35, 0x39, 0x38, 0x35, 0x37, 0x32, 0x09, 0x30, 0x2e, 0x33, 0x36, 0x36, 0x39, 0x38, 0x36, 0x36, 0x38, 0x32, 0x09, 0x30, 0x2e, 0x31, 0x35, 0x36, 0x32, 0x33, 0x38, 0x39, 0x36, 0x0d, 0x0a, 0x0d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x39, 0x30, 0x39, 0x30, 0x38, 0x38, 0x38, 0x32, 0x33, 0x33, 0x32, 0x38, 0x37, 0x30, 0x33, 0x32, 0x33, 0x36, 0x34, 0x32, 0x36, 0x37, 0x33, 0x38, 0x37, 0x30, 0x32, 0x37, 0x32, 0x2d, 0x2d, 0x0d, 0x0a)), content_type = "multipart/form-data; boundary=---------------------------90908882332870323642673870272", parsers = list(alias = list(multi = function (value, content_type, parsers, ...) { if (!stri_detect_fixed(content_type, "boundary=", case_insensitive = TRUE)) stop("No boundary found in multipart content-type header: ", content_type) boundary <- stri_match_first_regex(content_type, "boundary=\"?([^; \"]{2,})\"?", case_insensitive = TRUE)[, 2] toparse <- parse_multipart(value, boundary) toparse_names <- vapply(toparse, function(x) { name <- x$name if (length(name) == 0) { return("") } name }, character(1)) names(toparse) <- toparse_names ret <- lapply(toparse, function(x) { if (is.null(x$content_type) || isTRUE(stri_detect_fixed(x$content_type, "application/octet-stream"))) { if (!is.null(x$filename)) { x$content_type <- getContentType(tools::file_ext(x$filename)) } } item <- x item$parsers <- parsers x$parsed <- parse_raw(item) x }) class(ret) <- "plumber_multipart" ret }, tsv = function (value, ...) { parse_fn(value) }), fixed = list(`multipart/form-data` = function (value, content_type, parsers, ...) { if (!stri_detect_fixed(content_type, "boundary=", case_insensitive = TRUE)) stop("No boundary found in multipart content-type header: ", content_type) boundary <- stri_match_first_regex(content_type, "boundary=\"?([^; \"]{2,})\"?", case_insensitive = TRUE)[, 2] toparse <- parse_multipart(value, boundary) toparse_names <- vapply(toparse, function(x) { name <- x$name if (length(name) == 0) { return("") } name }, character(1)) names(toparse) <- toparse_names ret <- lapply(toparse, function(x) { if (is.null(x$content_type) || isTRUE(stri_detect_fixed(x$content_type, "application/octet-stream"))) { if (!is.null(x$filename)) { x$content_type <- getContentType(tools::file_ext(x$filename)) } } item <- x item$parsers <- parsers x$parsed <- parse_raw(item) x }) class(ret) <- "plumber_multipart" ret }, `application/tab-separated-values` = function (value, ...) { parse_fn(value) }, `text/tab-separated-values` = function (value, ...) { parse_fn(value) }), regex = list(`^multipart/` = function (value, content_type, parsers, ...) { if (!stri_detect_fixed(content_type, "boundary=", case_insensitive = TRUE)) stop("No boundary found in multipart content-type header: ", content_type) boundary <- stri_match_first_regex(content_type, "boundary=\"?([^; \"]{2,})\"?", case_insensitive = TRUE)[, 2] toparse <- parse_multipart(value, boundary) toparse_names <- vapply(toparse, function(x) { name <- x$name if (length(name) == 0) { return("") } name }, character(1)) names(toparse) <- toparse_names ret <- lapply(toparse, function(x) { if (is.null(x$content_type) || isTRUE(stri_detect_fixed(x$content_type, "application/octet-stream"))) { if (!is.null(x$filename)) { x$content_type <- getContentType(tools::file_ext(x$filename)) } } item <- x item$parsers <- parsers x$parsed <- parse_raw(item) x }) class(ret) <- "plumber_multipart" ret }))) 11: do.call(parser, toparse) 12: parse_raw(toparse) 13: parse_body(bodyRaw, type, parsers) 14: req_body_parser(req, make_parser(c("multi", "tsv"))) 15: eval(code, test_env) 16: eval(code, test_env) 17: 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) 18: doTryCatch(return(expr), name, parentenv, handler) 19: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 20: tryCatchList(expr, classes, parentenv, handlers) 21: 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) 22: doWithOneRestart(return(expr), restart) 23: withOneRestart(expr, restarts[[1L]]) 24: 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() { }) 25: test_code(code, parent.frame()) 26: test_that("Test multipart respect content-type", { skip_if_not_installed("readr") bin_file <- test_path("files/multipart-ctype.bin") body <- readBin(bin_file, what = "raw", n = file.info(bin_file)$size) req <- make_req(body = body, HTTP_CONTENT_TYPE = "multipart/form-data; boundary=---------------------------90908882332870323642673870272") req$body <- req_body_parser(req, make_parser(c("multi", "tsv"))) body_args <- req_body_args(req) expect_s3_class(req$body, "plumber_multipart") expect_equal(length(req$body), 1) expect_equal(names(req$body), "sample_name") expect_equal(req$body$sample_name$content_disposition, "form-data") expect_true(is.character(req$body$sample_name$name)) expect_true(is.raw(req$body$sample_name$value)) expect_equal(req$body$sample_name$content_type, "text/tab-separated-values") expect_s3_class(req$body$sample_name$parsed, "data.frame") expect_equal(colnames(req$body$sample_name$parsed), c("x", "y", "z")) expect_equal(nrow(req$body$sample_name$parsed), 11) expect_true(!inherits(body_args, "plumber_multipart")) expect_s3_class(body_args[["sample_name"]][["sample.tsv"]], "data.frame") expect_equal(colnames(body_args[["sample_name"]][["sample.tsv"]]), c("x", "y", "z")) expect_equal(nrow(body_args[["sample_name"]][["sample.tsv"]]), 11)}) 27: eval(code, test_env) 28: eval(code, test_env) 29: 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) 30: doTryCatch(return(expr), name, parentenv, handler) 31: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 32: tryCatchList(expr, classes, parentenv, handlers) 33: 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) 34: doWithOneRestart(return(expr), restart) 35: withOneRestart(expr, restarts[[1L]]) 36: 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() { }) 37: test_code(code = exprs, env = env, reporter = get_reporter() %||% StopReporter$new()) 38: source_file(path, env = env(env), desc = desc, shuffle = shuffle, error_call = error_call) 39: FUN(X[[i]], ...) 40: lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle, error_call = error_call) 41: doTryCatch(return(expr), name, parentenv, handler) 42: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 43: tryCatchList(expr, classes, parentenv, handlers) 44: tryCatch(code, testthat_abort_reporter = function(cnd) { cat(conditionMessage(cnd), "\n") NULL}) 45: with_reporter(reporters$multi, lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle, error_call = error_call)) 46: 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) 47: 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) 48: test_dir("testthat", package = package, reporter = reporter, ..., load_package = "installed") 49: test_check("plumber") An irrecoverable exception occurred. R is aborting now ... Segmentation fault Flavor: r-devel-linux-x86_64-debian-gcc