Running ‘testthat.R’ [103s/286s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
  > # This file is part of the standard setup for testthat.
  > # It is recommended that you do not modify it.
  > #
  > # Where should you do additional test configuration?
  > # Learn more about the roles of various files in:
  > # * https://r-pkgs.org/testing-design.html#sec-tests-files-overview
  > # * https://testthat.r-lib.org/articles/special-files.html
  > 
  > library(testthat)
  > library(centerline)
  > 
  > test_check("centerline")
  [gannet:473851:0:473851] Caught signal 11 (Segmentation fault: address not mapped to object at address 0x28)
  ==== backtrace (tid: 473851) ====
   0  /lib64/libucs.so.0(ucs_handle_error+0x2e4) [0x7f349219bdf4]
   1  /lib64/libucs.so.0(+0x17aed) [0x7f349219daed]
   2  /lib64/libucs.so.0(+0x17cbd) [0x7f349219dcbd]
   3  /lib64/libc.so.6(+0x1a040) [0x7f34a8328040]
   4  /data/gannet/ripley/R/test-clang/raybevel/libs/raybevel.so(_Z16skeletonize_rcppN4Rcpp6MatrixILi14ENS_15PreserveStorageEEENS_6VectorILi19ES1_EEd+0xe40) [0x7f33cc2d8d40]
   5  /data/gannet/ripley/R/test-clang/raybevel/libs/raybevel.so(_raybevel_skeletonize_rcpp+0x83) [0x7f33cc2c10b3]
   6  /data/gannet/ripley/R/R-clang/bin/exec/R(+0x8f6b3) [0x563c6b4626b3]
   7  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xdae08) [0x563c6b4ade08]
   8  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc918c) [0x563c6b49c18c]
   9  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x1a5) [0x563c6b49b945]
  10  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xe0aa9) [0x563c6b4b3aa9]
  11  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xdff9b) [0x563c6b4b2f9b]
  12  /data/gannet/ripley/R/R-clang/bin/exec/R(R_forceAndCall+0x369) [0x563c6b4b6449]
  13  /data/gannet/ripley/R/R-clang/bin/exec/R(+0x157ec) [0x563c6b3e87ec]
  14  /data/gannet/ripley/R/R-clang/bin/exec/R(+0x12b018) [0x563c6b4fe018]
  15  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xcfe26) [0x563c6b4a2e26]
  16  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc918c) [0x563c6b49c18c]
  17  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x1a5) [0x563c6b49b945]
  18  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xe0aa9) [0x563c6b4b3aa9]
  19  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xdff9b) [0x563c6b4b2f9b]
  20  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc9867) [0x563c6b49c867]
  21  /data/gannet/ripley/R/R-clang/bin/exec/R(+0x12d2b2) [0x563c6b5002b2]
  22  /data/gannet/ripley/R/R-clang/bin/exec/R(+0x12ccd9) [0x563c6b4ffcd9]
  23  /data/gannet/ripley/R/R-clang/bin/exec/R(+0x12d80e) [0x563c6b50080e]
  24  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xcfe26) [0x563c6b4a2e26]
  25  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc918c) [0x563c6b49c18c]
  26  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x1a5) [0x563c6b49b945]
  27  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xe0aa9) [0x563c6b4b3aa9]
  28  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xdff9b) [0x563c6b4b2f9b]
  29  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc9867) [0x563c6b49c867]
  30  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x5f8) [0x563c6b49bd98]
  31  /data/gannet/ripley/R/R-clang/bin/exec/R(+0x8d66c) [0x563c6b46066c]
  32  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xcfbc4) [0x563c6b4a2bc4]
  33  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc918c) [0x563c6b49c18c]
  34  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x1a5) [0x563c6b49b945]
  35  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xe0aa9) [0x563c6b4b3aa9]
  36  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xdff9b) [0x563c6b4b2f9b]
  37  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc9867) [0x563c6b49c867]
  38  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x5f8) [0x563c6b49bd98]
  39  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xe50fb) [0x563c6b4b80fb]
  40  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x3d0) [0x563c6b49bb70]
  41  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xe7278) [0x563c6b4ba278]
  42  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xcfbc4) [0x563c6b4a2bc4]
  43  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc918c) [0x563c6b49c18c]
  44  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x1a5) [0x563c6b49b945]
  45  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xe0aa9) [0x563c6b4b3aa9]
  46  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xdff9b) [0x563c6b4b2f9b]
  47  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc9867) [0x563c6b49c867]
  48  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x5f8) [0x563c6b49bd98]
  49  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xe7658) [0x563c6b4ba658]
  50  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xcfbc4) [0x563c6b4a2bc4]
  51  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc918c) [0x563c6b49c18c]
  52  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x1a5) [0x563c6b49b945]
  53  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xe0aa9) [0x563c6b4b3aa9]
  54  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xdff9b) [0x563c6b4b2f9b]
  55  /data/gannet/ripley/R/R-clang/bin/exec/R(R_forceAndCall+0x369) [0x563c6b4b6449]
  56  /data/gannet/ripley/R/R-clang/bin/exec/R(+0x157ec) [0x563c6b3e87ec]
  57  /data/gannet/ripley/R/R-clang/bin/exec/R(+0x12b018) [0x563c6b4fe018]
  58  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xcfe26) [0x563c6b4a2e26]
  59  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xc918c) [0x563c6b49c18c]
  60  /data/gannet/ripley/R/R-clang/bin/exec/R(Rf_eval+0x1a5) [0x563c6b49b945]
  61  /data/gannet/ripley/R/R-clang/bin/exec/R(+0xe0aa9) [0x563c6b4b3aa9]
  =================================
  
   *** caught segfault ***
  address 0x4d200073afb, cause 'unknown'
  
  Traceback:
   1: skeletonize_rcpp(vertices, holes, 0)
   2: raybevel::skeletonize(vertices = geos_outer, holes = geos_inner,     return_raw_ss = FALSE)
   3: FUN(X[[i]], ...)
   4: lapply(input, cnt_skeleton_straight, keep = keep)
   5: do.call(c, lapply(input, cnt_skeleton_straight, keep = keep))
   6: cnt_skeleton.geos_geometry(shape_w_hole, keep = 1.1, method = "straight")
   7: cnt_skeleton(shape_w_hole, keep = 1.1, method = "straight")
   8: eval_bare(quo_get_expr(.quo), quo_get_env(.quo))
   9: withCallingHandlers(expr, condition = function(cnd) {    if (!is.null(matched) || !matches(cnd)) {        return()    }    if (can_entrace(cnd)) {        cnd <- cnd_entrace(cnd)    }    matched <<- cnd    if (inherits(cnd, "message") || inherits(cnd, "warning")) {        cnd_muffle(cnd)    }    else if (inherits(cnd, "error") || inherits(cnd, "skip")) {        return_from(tl, cnd)    }})
  10: .capture(act$val <- eval_bare(quo_get_expr(.quo), quo_get_env(.quo)),     ...)
  11: quasi_capture(enquo(object), label, capture_matching_condition,     matches = matcher)
  12: expect_condition_matching_("warning", {    {        object    }}, regexp = regexp, class = class, ..., inherit = inherit, info = info,     label = label)
  13: expect_warning(cnt_skeleton(shape_w_hole, keep = 1.1, method = "straight"))
  14: eval(code, test_env)
  15: eval(code, test_env)
  16: 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)
  17: doTryCatch(return(expr), name, parentenv, handler)
  18: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  19: tryCatchList(expr, classes, parentenv, handlers)
  20: 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)
  21: doWithOneRestart(return(expr), restart)
  22: withOneRestart(expr, restarts[[1L]])
  23: 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() {    })
  24: test_code(code, parent.frame())
  25: test_that("cnt_skeleton generates straight skeletons", {    skip_if_not_installed("raybevel")    shapes <- geos::as_geos_geometry(sf::st_read(system.file("extdata/example.gpkg",         package = "centerline"), layer = "shapes", quiet = TRUE))    shape_no_hole <- shapes[1]    shape_w_hole <- shapes[89]    result_no_hole <- cnt_skeleton(shape_no_hole, method = "straight")    result_w_hole <- cnt_skeleton(shape_w_hole, method = "straight")    expect_s3_class(result_no_hole, c("geos_geometry"))    expect_s3_class(result_w_hole, c("geos_geometry"))    expect_identical(sf::st_crs(result_no_hole), sf::st_crs(shape_no_hole))    expect_identical(sf::st_crs(result_w_hole), sf::st_crs(shape_w_hole))    list_no_hole <- lapply(seq(0.1, 1, by = 0.1), function(x) {        tryCatch(cnt_skeleton(shape_no_hole, keep = x, method = "straight"),             error = function(e) NA)    })    list_w_hole <- lapply(seq(0.1, 1, by = 0.1), function(x) {        tryCatch(cnt_skeleton(shape_w_hole, keep = x, method = "straight"),             error = function(e) NA)    })    lengths_w_hole <- vapply(list_w_hole, geos::geos_length,         FUN.VALUE = numeric(1))    lengths_no_hole <- vapply(list_no_hole, geos::geos_length,         FUN.VALUE = numeric(1))    expect_true(all(!is.na(list_no_hole)))    expect_true(all(!is.na(list_w_hole)))    expect_true(lengths_no_hole[1] < median(lengths_no_hole))    expect_true(lengths_w_hole[1] < median(lengths_w_hole))    expect_warning(cnt_skeleton(shape_w_hole, keep = 1.1, method = "straight"))    expect_warning(cnt_skeleton(shape_no_hole, keep = 1.1, method = "straight"))})
  26: eval(code, test_env)
  27: eval(code, test_env)
  28: 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)
  29: doTryCatch(return(expr), name, parentenv, handler)
  30: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  31: tryCatchList(expr, classes, parentenv, handlers)
  32: 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)
  33: doWithOneRestart(return(expr), restart)
  34: withOneRestart(expr, restarts[[1L]])
  35: 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() {    })
  36: test_code(code = exprs, env = env, reporter = get_reporter() %||%     StopReporter$new())
  37: source_file(path, env = env(env), desc = desc, shuffle = shuffle,     error_call = error_call)
  38: FUN(X[[i]], ...)
  39: lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle,     error_call = error_call)
  40: doTryCatch(return(expr), name, parentenv, handler)
  41: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  42: tryCatchList(expr, classes, parentenv, handlers)
  43: tryCatch(code, testthat_abort_reporter = function(cnd) {    cat(conditionMessage(cnd), "\n")    NULL})
  44: with_reporter(reporters$multi, lapply(test_paths, test_one_file,     env = env, desc = desc, shuffle = shuffle, error_call = error_call))
  45: 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)
  46: 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)
  47: test_dir("testthat", package = package, reporter = reporter,     ..., load_package = "installed")
  48: test_check("centerline")
  An irrecoverable exception occurred. R is aborting now ...