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