Last updated on 2026-06-07 13: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 | 15.00 | 112.00 | 127.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 |
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