* using log directory ‘/srv/hornik/tmp/CRAN_pretest/vcr.Rcheck’ * using R Under development (unstable) (2025-07-18 r88431) * using platform: x86_64-pc-linux-gnu * R was compiled by Debian clang version 19.1.7 (3) Debian flang-new version 19.1.7 (3) * running under: Debian GNU/Linux 13 (trixie) * using session charset: UTF-8 * checking for file ‘vcr/DESCRIPTION’ ... OK * this is package ‘vcr’ version ‘2.0.0’ * package encoding: UTF-8 * checking CRAN incoming feasibility ... [4s/7s] OK * checking package namespace information ... OK * checking package dependencies ... OK * checking if this is a source package ... OK * checking if there is a namespace ... OK * checking for executable files ... OK * checking for hidden files and directories ... OK * checking for portable file names ... OK * checking for sufficient/correct file permissions ... OK * checking whether package ‘vcr’ can be installed ... [4s/4s] OK * checking package directory ... OK * checking for future file timestamps ... OK * checking ‘build’ directory ... OK * checking DESCRIPTION meta-information ... OK * checking top-level files ... OK * checking for left-over files ... OK * checking index information ... OK * checking package subdirectories ... OK * checking code files for non-ASCII characters ... OK * checking R files for syntax errors ... OK * checking whether the package can be loaded ... [0s/0s] OK * checking whether the package can be loaded with stated dependencies ... [0s/0s] OK * checking whether the package can be unloaded cleanly ... [0s/0s] OK * checking whether the namespace can be loaded with stated dependencies ... [0s/0s] OK * checking whether the namespace can be unloaded cleanly ... [0s/0s] OK * checking loading without being on the library search path ... [0s/0s] OK * checking whether startup messages can be suppressed ... [0s/0s] OK * checking use of S3 registration ... OK * checking dependencies in R code ... OK * checking S3 generic/method consistency ... OK * checking replacement functions ... OK * checking foreign function calls ... OK * checking R code for possible problems ... [4s/4s] OK * checking Rd files ... [0s/0s] OK * checking Rd metadata ... OK * checking Rd line widths ... OK * checking Rd cross-references ... OK * checking for missing documentation entries ... OK * checking for code/documentation mismatches ... OK * checking Rd \usage sections ... OK * checking Rd contents ... OK * checking for unstated dependencies in examples ... OK * checking installed files from ‘inst/doc’ ... OK * checking files in ‘vignettes’ ... OK * checking examples ... [1s/1s] OK * checking for unstated dependencies in ‘tests’ ... OK * checking tests ... [12s/7s] ERROR Running ‘testthat.R’ [12s/7s] 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(vcr) > > test_check("vcr") Starting 2 test processes [ FAIL 41 | WARN 28 | SKIP 33 | PASS 298 ] ══ Skipped tests (33) ══════════════════════════════════════════════════════════ • On CRAN (32): 'test-cassette_class.R:2:3', 'test-cassette_class.R:8:3', 'test-cassette_class.R:42:3', 'test-cassettes.R:17:3', 'test-check_cassette_names.R:3:3', 'test-check_cassette_names.R:30:3', 'test-configuration.R:2:3', 'test-configuration.R:50:3', 'test-knitr.R:4:3', 'test-lightswitch.R:4:3', 'test-lightswitch.R:13:3', 'test-lightswitch.R:89:3', 'test-logger.R:25:3', 'test-request_handler-httr.R:1:1', 'test-request_handler.R:5:3', 'test-request_ignorer.R:2:3', 'test-request_matcher.R:22:3', 'test-request_matcher.R:36:3', 'test-request_handler-httr2.R:163:3', 'test-request_handler-httr2.R:191:3', 'test-request_handler-httr2.R:243:3', 'test-request_response.R:9:3', 'test-request_response.R:26:3', 'test-serialize-body.R:94:3', 'test-serializer.R:14:3', 'test-serializer.R:166:3', 'test-serializer.R:229:3', 'test-use_cassette.R:23:3', 'test-use_cassette.R:36:3', 'test-vcr_setup.R:3:3', 'test-vcr_setup.R:36:3', 'test-vcr_setup.R:45:3' • {jpeg} is not installed (1): 'test-serializer.R:39:3' ══ Failed tests ════════════════════════════════════════════════════════════════ ── Error ('test-ause_cassette_re_record.R:13:3'): use_cassette options: re_record_interval ── Error in `readLines(con, warn = readLines.warn)`: cannot open the connection Backtrace: ▆ 1. └─vcr:::read_cassette("test.yml") at test-ause_cassette_re_record.R:13:3 2. └─yaml::yaml.load_file(file.path(the$config$dir, name)) at tests/testthat/helper-vcr.R:93:3 3. ├─yaml::yaml.load(...) 4. │ └─base::paste(string, collapse = "\n") 5. └─base::readLines(con, warn = readLines.warn) ── Error ('test-lightswitch.R:26:3'): skip_if_vcr_off works ──────────────────── Error in `turn_off()`: You must eject all cassettes before you can turn vcr off. Backtrace: ▆ 1. ├─base::suppressMessages(turn_off()) at test-lightswitch.R:26:3 2. │ └─base::withCallingHandlers(...) 3. └─vcr::turn_off() 4. └─cli::cli_abort("You must eject all cassettes before you can turn vcr off.") 5. └─rlang::abort(...) ── Error ('test-lightswitch.R:35:3'): inserting a cassette errors when vcr turned off and ignore_cassettes=FALSE ── Error in `turn_off()`: You must eject all cassettes before you can turn vcr off. Backtrace: ▆ 1. ├─base::suppressMessages(turn_off()) at test-lightswitch.R:35:3 2. │ └─base::withCallingHandlers(...) 3. └─vcr::turn_off() 4. └─cli::cli_abort("You must eject all cassettes before you can turn vcr off.") 5. └─rlang::abort(...) ── Failure ('test-ause_cassette_record_modes.R:11:3'): record mode: once ─────── one$new_interactions (`actual`) not equal to TRUE (`expected`). `actual`: FALSE `expected`: TRUE ── Failure ('test-ause_cassette_record_modes.R:12:3'): record mode: once ─────── one$http_interactions$length() (`actual`) not equal to 1 (`expected`). `actual`: 0.0 `expected`: 1.0 ── Error ('test-ause_cassette_record_modes.R:17:3'): record mode: once ───────── Error in `curl::curl_fetch_memory(x$url$url, handle = x$url$handle)`: Timeout was reached [127.0.0.1]: Operation timed out after 1 milliseconds with 0 bytes received Backtrace: ▆ 1. ├─vcr::use_cassette("test", res2 <- conn$get("get", timeout_ms = 1)) at test-ause_cassette_record_modes.R:17:3 2. │ └─base::withCallingHandlers(...) 3. ├─conn$get("get", timeout_ms = 1) 4. │ └─private$make_request(rr) 5. │ └─crul:::crul_fetch(opts) 6. │ └─curl::curl_fetch_memory(x$url$url, handle = x$url$handle) 7. └─curl:::raise_libcurl_error(...) ── Failure ('test-ause_cassette_record_modes.R:50:3'): record mode: none ─────── `use_cassette("test", conn$get("get", query = list(foo = "bar")))` did not throw a error with class . ── Failure ('test-ause_cassette_record_modes.R:78:3'): record mode: new_episodes ── one$new_interactions (`actual`) not equal to TRUE (`expected`). `actual`: FALSE `expected`: TRUE ── Failure ('test-ause_cassette_record_modes.R:79:3'): record mode: new_episodes ── one$http_interactions$length() (`actual`) not equal to 1 (`expected`). `actual`: 0.0 `expected`: 1.0 ── Failure ('test-ause_cassette_record_modes.R:84:3'): record mode: new_episodes ── one_replay$http_interactions$length() (`actual`) not equal to 1 (`expected`). `actual`: 0.0 `expected`: 1.0 ── Failure ('test-ause_cassette_record_modes.R:89:3'): record mode: new_episodes ── two$new_interactions (`actual`) not equal to TRUE (`expected`). `actual`: FALSE `expected`: TRUE ── Failure ('test-ause_cassette_record_modes.R:90:3'): record mode: new_episodes ── two$http_interactions$length() (`actual`) not equal to 2 (`expected`). `actual`: 0.0 `expected`: 2.0 ── Failure ('test-ause_cassette_record_modes.R:98:3'): record mode: new_episodes ── two_replay$http_interactions$length() (`actual`) not equal to 2 (`expected`). `actual`: 0.0 `expected`: 2.0 ── Failure ('test-ause_cassette_record_modes.R:112:3'): record mode: all ─────── one$new_interactions (`actual`) not equal to TRUE (`expected`). `actual`: FALSE `expected`: TRUE ── Failure ('test-ause_cassette_record_modes.R:113:3'): record mode: all ─────── one$http_interactions$length() (`actual`) not equal to 1 (`expected`). `actual`: 0.0 `expected`: 1.0 ── Failure ('test-ause_cassette_record_modes.R:122:3'): record mode: all ─────── two$new_interactions (`actual`) not equal to TRUE (`expected`). `actual`: FALSE `expected`: TRUE ── Failure ('test-ause_cassette_record_modes.R:123:3'): record mode: all ─────── two$http_interactions$length() (`actual`) not equal to 1 (`expected`). `actual`: 0.0 `expected`: 1.0 ── Error ('test-ause_cassette_record_modes.R:127:3'): record mode: all ───────── Error in `interactions_1[[1]]`: subscript out of bounds Backtrace: ▆ 1. └─testthat::expect_lt(interactions_1[[1]]$recorded_at, interactions_2[[1]]$recorded_at) at test-ause_cassette_record_modes.R:127:3 2. └─testthat::quasi_label(enquo(object), label, arg = "object") 3. └─rlang::eval_bare(expr, quo_get_env(quo)) ── Error ('test-request_handler-crul.R:11:3'): crul POST requests works ──────── Error: lexical error: invalid char in json text. b (right here) ------^ Backtrace: ▆ 1. └─jsonlite::fromJSON(vcr_last_response()$body$string) at test-request_handler-crul.R:11:3 2. └─jsonlite:::parse_and_simplify(...) 3. └─jsonlite:::parseJSON(txt, bigint_as_char) 4. └─jsonlite:::parse_string(txt, bigint_as_char) ── Error ('test-request_handler-crul.R:91:3'): JSON-encoded body ─────────────── Error in `readLines(con, warn = readLines.warn)`: cannot open the connection Backtrace: ▆ 1. ├─testthat::expect_identical(recorded_at(aa), recorded_at(bb)) at test-request_handler-crul.R:91:3 2. │ └─testthat::quasi_label(enquo(object), label, arg = "object") 3. │ └─rlang::eval_bare(expr, quo_get_env(quo)) 4. └─vcr:::recorded_at(aa) 5. └─yaml::yaml.load_file(x$file()) at tests/testthat/helper-vcr.R:39:3 6. ├─yaml::yaml.load(...) 7. │ └─base::paste(string, collapse = "\n") 8. └─base::readLines(con, warn = readLines.warn) ── Failure ('test-request_handler-crul.R:144:3'): can write files to disk ────── out$content (`actual`) not equal to file.path(write_path, "test.png") (`expected`). `actual`: "/tmp/Rtmp7rAGPq/working_dir/RtmpchEaGm/file13fc064988c83/test.png" `expected`: "/tmp/Rtmp7rAGPq/working_dir/RtmpchEaGm/file13fc063035b99c/test.png" ── Failure ('test-request_handler-crul.R:147:3'): can write files to disk ────── out2$content (`actual`) not equal to file.path(write_path, "test.png") (`expected`). `actual`: "/tmp/Rtmp7rAGPq/working_dir/RtmpchEaGm/file13fc064988c83/test.png" `expected`: "/tmp/Rtmp7rAGPq/working_dir/RtmpchEaGm/file13fc063035b99c/test.png" ── Error ('test-request_handler-crul.R:173:3'): match_requests_on - body works ── Error in `readLines(con, warn = readLines.warn)`: cannot open the connection Backtrace: ▆ 1. ├─testthat::expect_identical(recorded_at(aa), recorded_at(bb)) at test-request_handler-crul.R:173:3 2. │ └─testthat::quasi_label(enquo(object), label, arg = "object") 3. │ └─rlang::eval_bare(expr, quo_get_env(quo)) 4. └─vcr:::recorded_at(aa) 5. └─yaml::yaml.load_file(x$file()) at tests/testthat/helper-vcr.R:39:3 6. ├─yaml::yaml.load(...) 7. │ └─base::paste(string, collapse = "\n") 8. └─base::readLines(con, warn = readLines.warn) ── Error ('test-request_matcher.R:117:3'): can match empty bodies ────────────── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", res1 <- cli$post("post")) at test-request_matcher.R:117:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-request_matcher.R:135:3'): can match json bodies ─────────────── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", res1 <- httr2::req_perform(req)) at test-request_matcher.R:135:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-request_matcher.R:151:3'): default matcher includes body_json ── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", httr2::req_perform(req1)) at test-request_matcher.R:151:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-request_matcher.R:167:3'): default matcher includes body ─────── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", httr2::req_perform(req1)) at test-request_matcher.R:167:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-request_matcher.R:181:3'): request matching is not sensitive to escaping special characters ── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", res <- crul::HttpClient$new(url)$get()) at test-request_matcher.R:181:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-serialize-headers.R:20:3'): can remove headers on disk ───────── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", res1 <- con$get()) at test-serialize-headers.R:20:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-serialize-headers.R:36:3'): can replace headers on disk ──────── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", res1 <- con$get()) at test-serialize-headers.R:36:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-serialize-headers.R:53:3'): filter_headers doesn't add a header that doesn't exist ── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", res <- con1$get()) at test-serialize-headers.R:53:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-serialize-headers.R:70:3'): filter_headers/response/remove ───── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", res1 <- con$get()) at test-serialize-headers.R:70:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-serialize-headers.R:88:3'): filter_headers/response/replace ──── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", res1 <- con$get()) at test-serialize-headers.R:88:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-serialize-uri.R:47:3'): query param is not recorded on disk ──── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", con$get(query = list(x = "x", y = "y"))) at test-serialize-uri.R:47:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Error ('test-serializer.R:179:3'): JSON usage ─────────────────────────────── Error: lexical error: invalid char in json text. /tmp/Rtmp7rAGPq/working_dir/Rtmp (right here) ------^ Backtrace: ▆ 1. ├─testthat::expect_length(...) at test-serializer.R:179:3 2. │ └─testthat::quasi_label(enquo(object), arg = "object") 3. │ └─rlang::eval_bare(expr, quo_get_env(quo)) 4. └─jsonlite::fromJSON(aa$file(), FALSE) 5. └─jsonlite:::parse_and_simplify(...) 6. └─jsonlite:::parseJSON(txt, bigint_as_char) 7. └─jsonlite:::parse_string(txt, bigint_as_char) ── Error ('test-use_cassette.R:16:3'): defaults to _vcr directory ────────────── Error in `local_cassette(name, dir = dir, record = record, match_requests_on = match_requests_on, serialize_with = serialize_with, preserve_exact_body_bytes = preserve_exact_body_bytes, re_record_interval = re_record_interval, warn_on_empty = warn_on_empty)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─vcr::use_cassette("test", NULL, warn_on_empty = FALSE) at test-use_cassette.R:16:3 2. └─vcr::local_cassette(...) 3. └─vcr:::check_cassette_name(name) 4. └─cli::cli_abort(...) 5. └─rlang::abort(...) ── Failure ('test-use_cassette.R:59:3'): local_cassette sets up temporary cassette ── current_cassette() (`actual`) not equal to NULL (`expected`). `actual` is an R6 object of class `expected` is NULL ── Failure ('test-use_cassette.R:66:3'): local_cassette sets up temporary cassette ── current_cassette() (`actual`) not equal to NULL (`expected`). `actual` is an R6 object of class `expected` is NULL ── Failure ('test-use_cassette.R:72:3'): local_cassette sets env vars ────────── is_recording() is not FALSE `actual`: TRUE `expected`: FALSE ── Error ('test-use_cassette.R:76:5'): local_cassette sets env vars ──────────── Error in `local_cassette("test")`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─base::eval(...) 2. └─base::eval(...) 3. └─vcr::local_cassette("test") at test-use_cassette.R:76:5 4. └─vcr:::check_cassette_name(name) 5. └─cli::cli_abort(...) 6. └─rlang::abort(...) ── Error ('test-use_cassette.R:96:5'): can control output directory directly ─── Error in `local_cassette("test", dir = dir2)`: `name` must not be the same as an existing cassette. Backtrace: ▆ 1. └─base::eval(...) 2. └─base::eval(...) 3. └─vcr::local_cassette("test", dir = dir2) at test-use_cassette.R:96:5 4. └─vcr:::check_cassette_name(name) 5. └─cli::cli_abort(...) 6. └─rlang::abort(...) [ FAIL 41 | WARN 28 | SKIP 33 | PASS 298 ] Error: Test failures Execution halted * checking for unstated dependencies in vignettes ... OK * checking package vignettes ... OK * checking re-building of vignette outputs ... [8s/7s] OK * checking PDF version of manual ... [3s/3s] OK * checking HTML version of manual ... [0s/0s] OK * checking for non-standard things in the check directory ... OK * checking for detritus in the temp directory ... OK * DONE Status: 1 ERROR