Running ‘test-all.R’ [139s/253s]
Running the tests in ‘tests/test-all.R’ failed.
Complete output:
  > library(testthat)
  > # test only if exiftool is available
  > if(Sys.which("exiftool") != ""){
  +   test_check("camtrapR")
  + }
  Loading required package: camtrapR
  Writing layer `test_detections' to data source `.' using driver `ESRI Shapefile'
  Writing 3 features with 7 fields and geometry type Point.
  Saving _problems/test-readCamtrapDP-26.R
  Saving _problems/test-readCamtrapDP-54.R
  Saving _problems/test-readCamtrapDP-198.R
  Saving _problems/test-readCamtrapDP-217.R
  Saving _problems/test-readCamtrapDP-230.R
    adding: deployments.csv (deflated 54%)
    adding: images.csv (deflated 48%)
  Saving _problems/test-surveyDashboard-92.R
    adding: surveyReport_2026-08-17/CTtable.csv (deflated 47%)
    adding: surveyReport_2026-08-17/activity/activity_density_EGY_2026-08-17.png (deflated 6%)
    adding: surveyReport_2026-08-17/activity/activity_density_MNE_2026-08-17.png (deflated 11%)
    adding: surveyReport_2026-08-17/activity/activity_density_PBE_2026-08-17.png (deflated 7%)
    adding: surveyReport_2026-08-17/activity/activity_density_TRA_2026-08-17.png (deflated 6%)
    adding: surveyReport_2026-08-17/activity/activity_density_VTA_2026-08-17.png (deflated 7%)
    adding: surveyReport_2026-08-17/detectionMaps/Presence_EGY_2026-08-17.png (deflated 20%)
    adding: surveyReport_2026-08-17/detectionMaps/Presence_MNE_2026-08-17.png (deflated 19%)
    adding: surveyReport_2026-08-17/detectionMaps/Presence_PBE_2026-08-17.png (deflated 19%)
    adding: surveyReport_2026-08-17/detectionMaps/Presence_TRA_2026-08-17.png (deflated 21%)
    adding: surveyReport_2026-08-17/detectionMaps/Presence_VTA_2026-08-17.png (deflated 19%)
    adding: surveyReport_2026-08-17/detectionMaps/n_Species_2026-08-17.png (deflated 17%)
    adding: surveyReport_2026-08-17/readme.txt (deflated 68%)
    adding: surveyReport_2026-08-17/recordTable.csv (deflated 81%)
    adding: surveyReport_2026-08-17/scripts/camtrapR_scripts.R (deflated 70%)
    adding: surveyReport_2026-08-17/surveyReport/events_by_species.csv (deflated 30%)
    adding: surveyReport_2026-08-17/surveyReport/events_by_station.csv (deflated 54%)
    adding: surveyReport_2026-08-17/surveyReport/events_by_station2.csv (deflated 65%)
    adding: surveyReport_2026-08-17/surveyReport/species_by_station.csv (deflated 30%)
    adding: surveyReport_2026-08-17/surveyReport/survey_dates.csv (deflated 55%)
  [ FAIL 11 | WARN 6 | SKIP 10 | PASS 548 ]
  
  ══ Skipped tests (10) ══════════════════════════════════════════════════════════
  • On CRAN (9): 'test-app-surveyDashboard_builtin.R:9:3',
    'test-app-surveyDashboard_builtin.R:28:3',
    'test-app-surveyDashboard_builtin.R:50:3',
    'test-app-surveyDashboard_builtin.R:81:3',
    'test-app-surveyDashboard_builtin.R:101:3',
    'test-app-surveyDashboard_builtin.R:131:3',
    'test-app-surveyDashboard_builtin.R:153:3',
    'test-app-surveyDashboard_camtrapdp.R:6:3',
    'test-app-surveyDashboard_camtrapdp.R:23:3'
  • empty test (1): 'test-speciesAccum.R:36:1'
  
  ══ Failed tests ════════════════════════════════════════════════════════════════
  ── Error ('test-readCamtrapDP.R:26:5'): Core Functionality: Reading Data / it reads a valid datapackage correctly ──
  <frictionless_error_url_not_found/rlang_error/error/condition>
  Error in `check_path(x, directory = directory, safe = safe)`: Can't find file at
  <https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json>.
  Backtrace:
      ▆
   1. └─camtrapR::readCamtrapDP(file = dp_file) at test-readCamtrapDP.R:26:5
   2.   └─camtrapdp::read_camtrapdp(file)
   3.     └─frictionless::read_resource(package, "deployments")
   4.       └─frictionless:::read_from_path(package, resource_name, col_select)
   5.         └─frictionless::schema(package, resource_name)
   6.           └─frictionless:::read_descriptor(...)
   7.             └─frictionless:::check_path(x, directory = directory, safe = safe)
   8.               └─cli::cli_abort("Can't find file at {.url {path}}.", class = "frictionless_error_url_not_found")
   9.                 └─rlang::abort(...)
  ── Error ('test-readCamtrapDP.R:47:5'): Core Functionality: Reading Data / it handles legacy CSV arguments by issuing a warning but parsing successfully ──
  <frictionless_error_url_not_found/rlang_error/error/condition>
  Error in `check_path(x, directory = directory, safe = safe)`: Can't find file at
  <https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json>.
  Backtrace:
       ▆
    1. ├─testthat::expect_warning(...) at test-readCamtrapDP.R:47:5
    2. │ └─testthat:::quasi_capture(...)
    3. │   ├─testthat (local) .capture(...)
    4. │   │ └─base::withCallingHandlers(...)
    5. │   └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo))
    6. └─camtrapR::readCamtrapDP(...)
    7.   └─camtrapdp::read_camtrapdp(file)
    8.     └─frictionless::read_resource(package, "deployments")
    9.       └─frictionless:::read_from_path(package, resource_name, col_select)
   10.         └─frictionless::schema(package, resource_name)
   11.           └─frictionless:::read_descriptor(...)
   12.             └─frictionless:::check_path(x, directory = directory, safe = safe)
   13.               └─cli::cli_abort("Can't find file at {.url {path}}.", class = "frictionless_error_url_not_found")
   14.                 └─rlang::abort(...)
  ── Error ('test-readCamtrapDP.R:81:7'): Conditional Logic & Optional Column Fallbacks / it falls back to locationName when locationID is missing ──
  <frictionless_error_url_not_found/rlang_error/error/condition>
  Error in `check_path(x, directory = directory, safe = safe)`: Can't find file at
  <https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json>.
  Backtrace:
       ▆
    1. ├─withr::with_tempdir(...) at test-readCamtrapDP.R:72:5
    2. │ └─withr::with_dir(tmp, code)
    3. │   └─base::force(code)
    4. └─camtrapR::readCamtrapDP("datapackage.json") at test-readCamtrapDP.R:81:7
    5.   └─camtrapdp::read_camtrapdp(file)
    6.     └─frictionless::read_resource(package, "deployments")
    7.       └─frictionless:::read_from_path(package, resource_name, col_select)
    8.         └─frictionless::schema(package, resource_name)
    9.           └─frictionless:::read_descriptor(...)
   10.             └─frictionless:::check_path(x, directory = directory, safe = safe)
   11.               └─cli::cli_abort("Can't find file at {.url {path}}.", class = "frictionless_error_url_not_found")
   12.                 └─rlang::abort(...)
  ── Error ('test-readCamtrapDP.R:97:7'): Conditional Logic & Optional Column Fallbacks / it falls back to deploymentID when both locationID and locationName are missing ──
  <frictionless_error_url_not_found/rlang_error/error/condition>
  Error in `check_path(x, directory = directory, safe = safe)`: Can't find file at
  <https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json>.
  Backtrace:
       ▆
    1. ├─withr::with_tempdir(...) at test-readCamtrapDP.R:89:5
    2. │ └─withr::with_dir(tmp, code)
    3. │   └─base::force(code)
    4. └─camtrapR::readCamtrapDP("datapackage.json") at test-readCamtrapDP.R:97:7
    5.   └─camtrapdp::read_camtrapdp(file)
    6.     └─frictionless::read_resource(package, "deployments")
    7.       └─frictionless:::read_from_path(package, resource_name, col_select)
    8.         └─frictionless::schema(package, resource_name)
    9.           └─frictionless:::read_descriptor(...)
   10.             └─frictionless:::check_path(x, directory = directory, safe = safe)
   11.               └─cli::cli_abort("Can't find file at {.url {path}}.", class = "frictionless_error_url_not_found")
   12.                 └─rlang::abort(...)
  ── Error ('test-readCamtrapDP.R:112:7'): Conditional Logic & Optional Column Fallbacks / it assigns 'unknown_camera' when cameraID is missing ──
  <frictionless_error_url_not_found/rlang_error/error/condition>
  Error in `check_path(x, directory = directory, safe = safe)`: Can't find file at
  <https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json>.
  Backtrace:
       ▆
    1. ├─withr::with_tempdir(...) at test-readCamtrapDP.R:105:5
    2. │ └─withr::with_dir(tmp, code)
    3. │   └─base::force(code)
    4. └─camtrapR::readCamtrapDP("datapackage.json") at test-readCamtrapDP.R:112:7
    5.   └─camtrapdp::read_camtrapdp(file)
    6.     └─frictionless::read_resource(package, "deployments")
    7.       └─frictionless:::read_from_path(package, resource_name, col_select)
    8.         └─frictionless::schema(package, resource_name)
    9.           └─frictionless:::read_descriptor(...)
   10.             └─frictionless:::check_path(x, directory = directory, safe = safe)
   11.               └─cli::cli_abort("Can't find file at {.url {path}}.", class = "frictionless_error_url_not_found")
   12.                 └─rlang::abort(...)
  ── Error ('test-readCamtrapDP.R:133:7'): Conditional Logic & Optional Column Fallbacks / it handles taxonomy fallbacks for non-animal observations (e.g. blanks) ──
  Error in `open.connection(con, "rb")`: cannot open the connection to 'https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json'
  Backtrace:
       ▆
    1. ├─withr::with_tempdir(...) at test-readCamtrapDP.R:120:5
    2. │ └─withr::with_dir(tmp, code)
    3. │   └─base::force(code)
    4. └─camtrapR::readCamtrapDP("datapackage.json") at test-readCamtrapDP.R:133:7
    5.   └─camtrapdp::read_camtrapdp(file)
    6.     └─frictionless::read_resource(package, "deployments")
    7.       └─frictionless:::read_from_path(package, resource_name, col_select)
    8.         └─frictionless::schema(package, resource_name)
    9.           └─frictionless:::read_descriptor(...)
   10.             └─jsonlite::fromJSON(x, simplifyDataFrame = FALSE, simplifyVector = FALSE)
   11.               └─jsonlite:::parse_and_simplify(...)
   12.                 └─jsonlite:::parseJSON(txt, bigint_as_char)
   13.                   └─jsonlite:::parse_con(txt, bigint_as_char)
   14.                     ├─base::open(con, "rb")
   15.                     └─base::open.connection(con, "rb")
  ── Error ('test-readCamtrapDP.R:175:7'): Gap Analysis and Data Processing / it correctly detects and records deployment gaps as problems ──
  Error in `open.connection(con, "rb")`: cannot open the connection to 'https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json'
  Backtrace:
       ▆
    1. ├─withr::with_tempdir(...) at test-readCamtrapDP.R:161:5
    2. │ └─withr::with_dir(tmp, code)
    3. │   └─base::force(code)
    4. └─camtrapR::readCamtrapDP("datapackage.json", min_gap_hours = 24) at test-readCamtrapDP.R:175:7
    5.   └─camtrapdp::read_camtrapdp(file)
    6.     └─frictionless::read_resource(package, "deployments")
    7.       └─frictionless:::read_from_path(package, resource_name, col_select)
    8.         └─frictionless::schema(package, resource_name)
    9.           └─frictionless:::read_descriptor(...)
   10.             └─jsonlite::fromJSON(x, simplifyDataFrame = FALSE, simplifyVector = FALSE)
   11.               └─jsonlite:::parse_and_simplify(...)
   12.                 └─jsonlite:::parseJSON(txt, bigint_as_char)
   13.                   └─jsonlite:::parse_con(txt, bigint_as_char)
   14.                     ├─base::open(con, "rb")
   15.                     └─base::open.connection(con, "rb")
  ── Error ('test-readCamtrapDP.R:198:5'): Argument Flags Handling / filter_observations subsets recordTable correctly ──
  Error in `open.connection(con, "rb")`: cannot open the connection to 'https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json'
  Backtrace:
       ▆
    1. └─camtrapR::readCamtrapDP(file = dp_file, filter_observations = TRUE) at test-readCamtrapDP.R:198:5
    2.   └─camtrapdp::read_camtrapdp(file)
    3.     └─frictionless::read_resource(package, "deployments")
    4.       └─frictionless:::read_from_path(package, resource_name, col_select)
    5.         └─frictionless::schema(package, resource_name)
    6.           └─frictionless:::read_descriptor(...)
    7.             └─jsonlite::fromJSON(x, simplifyDataFrame = FALSE, simplifyVector = FALSE)
    8.               └─jsonlite:::parse_and_simplify(...)
    9.                 └─jsonlite:::parseJSON(txt, bigint_as_char)
   10.                   └─jsonlite:::parse_con(txt, bigint_as_char)
   11.                     ├─base::open(con, "rb")
   12.                     └─base::open.connection(con, "rb")
  ── Error ('test-readCamtrapDP.R:217:5'): Argument Flags Handling / add_file_path joins file paths from media table ──
  Error in `open.connection(con, "rb")`: cannot open the connection to 'https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json'
  Backtrace:
       ▆
    1. └─camtrapR::readCamtrapDP(file = dp_file, add_file_path = FALSE) at test-readCamtrapDP.R:217:5
    2.   └─camtrapdp::read_camtrapdp(file)
    3.     └─frictionless::read_resource(package, "deployments")
    4.       └─frictionless:::read_from_path(package, resource_name, col_select)
    5.         └─frictionless::schema(package, resource_name)
    6.           └─frictionless:::read_descriptor(...)
    7.             └─jsonlite::fromJSON(x, simplifyDataFrame = FALSE, simplifyVector = FALSE)
    8.               └─jsonlite:::parse_and_simplify(...)
    9.                 └─jsonlite:::parseJSON(txt, bigint_as_char)
   10.                   └─jsonlite:::parse_con(txt, bigint_as_char)
   11.                     ├─base::open(con, "rb")
   12.                     └─base::open.connection(con, "rb")
  ── Error ('test-readCamtrapDP.R:230:5'): Argument Flags Handling / remove_bbox strips bounding box coordinates ──
  Error in `open.connection(con, "rb")`: cannot open the connection to 'https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json'
  Backtrace:
       ▆
    1. └─camtrapR::readCamtrapDP(file = dp_file, remove_bbox = TRUE) at test-readCamtrapDP.R:230:5
    2.   └─camtrapdp::read_camtrapdp(file)
    3.     └─frictionless::read_resource(package, "deployments")
    4.       └─frictionless:::read_from_path(package, resource_name, col_select)
    5.         └─frictionless::schema(package, resource_name)
    6.           └─frictionless:::read_descriptor(...)
    7.             └─jsonlite::fromJSON(x, simplifyDataFrame = FALSE, simplifyVector = FALSE)
    8.               └─jsonlite:::parse_and_simplify(...)
    9.                 └─jsonlite:::parseJSON(txt, bigint_as_char)
   10.                   └─jsonlite:::parse_con(txt, bigint_as_char)
   11.                     ├─base::open(con, "rb")
   12.                     └─base::open.connection(con, "rb")
  ── Error ('test-surveyDashboard.R:92:3'): surveyDashboard server logic initializes correctly with camtrap DP data ──
  Error in `open.connection(con, "rb")`: cannot open the connection to 'https://raw.githubusercontent.com/tdwg/camtrap-dp/1.0.2/deployments-table-schema.json'
  Backtrace:
       ▆
    1. └─camtrapR::readCamtrapDP(file = file.path(path_camtrapdp, "datapackage.json")) at test-surveyDashboard.R:92:3
    2.   └─camtrapdp::read_camtrapdp(file)
    3.     └─frictionless::read_resource(package, "deployments")
    4.       └─frictionless:::read_from_path(package, resource_name, col_select)
    5.         └─frictionless::schema(package, resource_name)
    6.           └─frictionless:::read_descriptor(...)
    7.             └─jsonlite::fromJSON(x, simplifyDataFrame = FALSE, simplifyVector = FALSE)
    8.               └─jsonlite:::parse_and_simplify(...)
    9.                 └─jsonlite:::parseJSON(txt, bigint_as_char)
   10.                   └─jsonlite:::parse_con(txt, bigint_as_char)
   11.                     ├─base::open(con, "rb")
   12.                     └─base::open.connection(con, "rb")
  
  [ FAIL 11 | WARN 6 | SKIP 10 | PASS 548 ]
  Error:
  ! Test failures.
  Execution halted