Running ‘testthat.R’ [10s/22s]
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(duckspatial)
  Important: 'crs_column' and 'crs' arguments are deprecated and will be removed in the next version.
  If possible, use the default values of these arguments to avoid future issues.
  > library(duckdb)
  Loading required package: DBI
  > 
  > test_check("duckspatial")
  Reading layer `countries' from data source 
    `/data/gannet/ripley/R/packages/tests-clang/duckspatial.Rcheck/duckspatial/spatial/countries.geojson' 
    using driver `GeoJSON'
  Simple feature collection with 257 features and 6 fields
  Geometry type: POLYGON
  Dimension:     XY
  Bounding box:  xmin: -178.9125 ymin: -89.9 xmax: 180 ymax: 83.65187
  Geodetic CRS:  WGS 84
  Reading layer `argentina' from data source 
    `/data/gannet/ripley/R/packages/tests-clang/duckspatial.Rcheck/duckspatial/spatial/argentina.geojson' 
    using driver `GeoJSON'
  Simple feature collection with 1 feature and 6 fields
  Geometry type: POLYGON
  Dimension:     XY
  Bounding box:  xmin: -73.52455 ymin: -52.39755 xmax: -53.62409 ymax: -21.81793
  Geodetic CRS:  WGS 84
  Reading layer `rivers' from data source 
    `/data/gannet/ripley/R/packages/tests-clang/duckspatial.Rcheck/duckspatial/spatial/rivers.geojson' 
    using driver `GeoJSON'
  Simple feature collection with 100 features and 1 field
  Geometry type: LINESTRING
  Dimension:     XY
  Bounding box:  xmin: 2766878 ymin: 2222357 xmax: 3578648 ymax: 2459939
  Projected CRS: ETRS89-extended / LAEA Europe
  Saving _problems/test-compatibility-5.R
  [gannet:3413072:0:3414107] Caught signal 11 (Segmentation fault: address not mapped to object at address 0xad9)
  ==== backtrace (tid:3414107) ====
   0  /lib64/libucs.so.0(ucs_handle_error+0x2e4) [0x7efc5d37ddf4]
   1  /lib64/libucs.so.0(+0x17aed) [0x7efc5d37faed]
   2  /lib64/libucs.so.0(+0x17cbd) [0x7efc5d37fcbd]
   3  /lib64/libc.so.6(+0x19c30) [0x7efc76027c30]
   4  /data/gannet/ripley/.local/share/R/duckdb/extensions/v1.4.4/linux_amd64/spatial.duckdb_extension(+0x10eb560) [0x7efb404eb560]
   5  /data/gannet/ripley/.local/share/R/duckdb/extensions/v1.4.4/linux_amd64/spatial.duckdb_extension(+0x10cbeb8) [0x7efb404cbeb8]
   6  /data/gannet/ripley/.local/share/R/duckdb/extensions/v1.4.4/linux_amd64/spatial.duckdb_extension(+0x7d8bb4) [0x7efb3fbd8bb4]
   7  /data/gannet/ripley/.local/share/R/duckdb/extensions/v1.4.4/linux_amd64/spatial.duckdb_extension(+0x7d7159) [0x7efb3fbd7159]
   8  /data/gannet/ripley/R/test-clang/duckdb/libs/duckdb.so(_ZN6duckdb15ExtensionHelper29LoadExternalExtensionInternalERNS_16DatabaseInstanceERNS_10FileSystemERKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEERNS_19ExtensionActiveLoadE+0x1b4) [0x7efc621734a4]
   9  /data/gannet/ripley/R/test-clang/duckdb/libs/duckdb.so(_ZN6duckdb15ExtensionHelper21LoadExternalExtensionERNS_16DatabaseInstanceERNS_10FileSystemERKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE+0x4a) [0x7efc6217322a]
  10  /data/gannet/ripley/R/test-clang/duckdb/libs/duckdb.so(_ZNK6duckdb12PhysicalLoad7GetDataERNS_16ExecutionContextERNS_9DataChunkERNS_19OperatorSourceInputE+0x151) [0x7efc62fa9511]
  11  /data/gannet/ripley/R/test-clang/duckdb/libs/duckdb.so(_ZN6duckdb16PipelineExecutor15FetchFromSourceERNS_9DataChunkE+0x9f) [0x7efc6375e6cf]
  12  /data/gannet/ripley/R/test-clang/duckdb/libs/duckdb.so(_ZN6duckdb16PipelineExecutor7ExecuteEm+0x133) [0x7efc6375b163]
  13  /data/gannet/ripley/R/test-clang/duckdb/libs/duckdb.so(_ZN6duckdb12PipelineTask11ExecuteTaskENS_17TaskExecutionModeE+0x15b) [0x7efc6375addb]
  14  /data/gannet/ripley/R/test-clang/duckdb/libs/duckdb.so(_ZN6duckdb12ExecutorTask7ExecuteENS_17TaskExecutionModeE+0xa0) [0x7efc637546b0]
  15  /data/gannet/ripley/R/test-clang/duckdb/libs/duckdb.so(_ZN6duckdb13TaskScheduler14ExecuteForeverEPNSt3__16atomicIbEE+0x379) [0x7efc637619b9]
  16  /data/gannet/ripley/R/test-clang/duckdb/libs/duckdb.so(+0x196c87c) [0x7efc6376c87c]
  17  /lib64/libc.so.6(+0x711d4) [0x7efc7607f1d4]
  18  /lib64/libc.so.6(+0xf3cec) [0x7efc76101cec]
  =================================
  
   *** caught segfault ***
  address 0x4d200341450, cause 'unknown'
  
  Traceback:
   1: rapi_execute(stmt, convert_opts)
   2: withCallingHandlers(expr, condition = function(cnd) {    {        .__handler_frame__. <- TRUE        .__setup_frame__. <- frame        if (inherits(cnd, "message")) {            except <- c("warning", "error")        }        else if (inherits(cnd, "warning")) {            except <- "error"        }        else {            except <- ""        }    }    while (!is_null(cnd)) {        if (inherits(cnd, "error")) {            out <- handlers[[1L]](cnd)            if (!inherits(out, "rlang_zap"))                 throw(out)        }        inherit <- .subset2(.subset2(cnd, "rlang"), "inherit")        if (is_false(inherit)) {            return()        }        cnd <- .subset2(cnd, "parent")    }})
   3: doTryCatch(return(expr), name, parentenv, handler)
   4: tryCatchOne(expr, names, parentenv, handlers[[1L]])
   5: tryCatchList(expr, classes, parentenv, handlers)
   6: tryCatch(withCallingHandlers(expr, condition = function(cnd) {    {        .__handler_frame__. <- TRUE        .__setup_frame__. <- frame        if (inherits(cnd, "message")) {            except <- c("warning", "error")        }        else if (inherits(cnd, "warning")) {            except <- "error"        }        else {            except <- ""        }    }    while (!is_null(cnd)) {        if (inherits(cnd, "error")) {            out <- handlers[[1L]](cnd)            if (!inherits(out, "rlang_zap"))                 throw(out)        }        inherit <- .subset2(.subset2(cnd, "rlang"), "inherit")        if (is_false(inherit)) {            return()        }        cnd <- .subset2(cnd, "parent")    }}), stackOverflowError = handlers[[1L]])
   7: rlang::try_fetch(rapi_execute(stmt, convert_opts), error = function(e) {    rethrow_error_from_rapi(e, call)})
   8: rethrow_rapi_execute(res@stmt_lst$ref, duckdb_convert_opts_impl(res@connection@convert_opts,     arrow = res@arrow))
   9: duckdb_execute(res)
  10: duckdb_result(connection = conn, stmt_lst = stmt_lst, arrow = arrow)
  11: .local(conn, statement, ...)
  12: dbSendQuery(conn, statement, ...)
  13: dbSendQuery(conn, statement, ...)
  14: dbSendStatement(conn, statement, ...)
  15: dbSendStatement(conn, statement, ...)
  16: DBI::dbExecute(conn, "LOAD spatial;")
  17: DBI::dbExecute(conn, "LOAD spatial;")
  18: withCallingHandlers(expr, message = function(c) if (inherits(c,     classes)) tryInvokeRestart("muffleMessage"))
  19: suppressMessages(DBI::dbExecute(conn, "LOAD spatial;"))
  20: duckspatial::ddbs_load(conn, quiet = TRUE)
  21: ddbs_create_conn("memory")
  22: eval(code, test_env)
  23: eval(code, test_env)
  24: 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)
  25: doTryCatch(return(expr), name, parentenv, handler)
  26: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  27: tryCatchList(expr, classes, parentenv, handlers)
  28: 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)
  29: doWithOneRestart(return(expr), restart)
  30: withOneRestart(expr, restarts[[1L]])
  31: 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() {    })
  32: test_code(code, parent.frame())
  33: test_that("Round trip: write -> read for various geometry types",     {        skip_if_not_installed("duckdb")        conn <- ddbs_create_conn("memory")        on.exit(ddbs_stop_conn(conn), add = TRUE)        line <- sf::st_sf(id = 1, geom = sf::st_as_sfc("LINESTRING(0 0, 1 1)"),             crs = 4326)        polygon <- sf::st_sf(id = 1, geom = sf::st_as_sfc("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))"),             crs = 4326)        multipoint <- sf::st_sf(id = 1, geom = sf::st_as_sfc("MULTIPOINT(0 0, 1 1)"),             crs = 4326)        datasets <- list(line = line, polygon = polygon, multipoint = multipoint)        for (name in names(datasets)) {            data <- datasets[[name]]            table_name <- paste0("rt_write_", name)            ddbs_write_vector(conn, data, table_name, overwrite = TRUE)            result <- ddbs_read_vector(conn, table_name)            expect_s3_class(result, "sf")            expect_equal(nrow(result), 1)            expect_equal(sf::st_crs(result), sf::st_crs(data))            expect_true(all.equal(sf::st_geometry(result), sf::st_geometry(data),                 check.attributes = FALSE))        }    })
  34: eval(code, test_env)
  35: eval(code, test_env)
  36: 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)
  37: doTryCatch(return(expr), name, parentenv, handler)
  38: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  39: tryCatchList(expr, classes, parentenv, handlers)
  40: 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)
  41: doWithOneRestart(return(expr), restart)
  42: withOneRestart(expr, restarts[[1L]])
  43: 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() {    })
  44: test_code(code = exprs, env = env, reporter = get_reporter() %||%     StopReporter$new())
  45: source_file(path, env = env(env), desc = desc, shuffle = shuffle,     error_call = error_call)
  46: FUN(X[[i]], ...)
  47: lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle,     error_call = error_call)
  48: doTryCatch(return(expr), name, parentenv, handler)
  49: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  50: tryCatchList(expr, classes, parentenv, handlers)
  51: tryCatch(code, testthat_abort_reporter = function(cnd) {    cat(conditionMessage(cnd), "\n")    NULL})
  52: with_reporter(reporters$multi, lapply(test_paths, test_one_file,     env = env, desc = desc, shuffle = shuffle, error_call = error_call))
  53: 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)
  54: 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)
  55: test_dir("testthat", package = package, reporter = reporter,     ..., load_package = "installed")
  56: test_check("duckspatial")
  An irrecoverable exception occurred. R is aborting now ...