CRAN Package Check Results for Package ellmercodex

Last updated on 2026-11-09 01:52:15 CET.

Flavor Version Tinstall Tcheck Ttotal Status Flags
r-devel-linux-x86_64-debian-clang 0.2.0 5.27 94.13 99.40 OK
r-devel-linux-x86_64-debian-gcc 0.2.0 3.41 64.01 67.42 OK
r-devel-linux-x86_64-fedora-clang 0.2.0 4.00 63.14 67.14 ERROR
r-devel-linux-x86_64-fedora-gcc 0.2.0 67.10 OK
r-devel-windows-x86_64 0.2.0 9.00 105.00 114.00 OK
r-patched-linux-x86_64 0.2.0 OK
r-release-linux-x86_64 0.2.0 5.01 83.10 88.11 OK
r-release-macos-arm64 0.2.0 1.00 26.00 27.00 OK
r-release-macos-x86_64 0.2.0 4.00 131.00 135.00 OK
r-release-windows-x86_64 0.2.0 7.00 105.00 112.00 OK
r-oldrel-macos-arm64 0.2.0 2.00 35.00 37.00 OK
r-oldrel-macos-x86_64 0.2.0 4.00 102.00 106.00 OK
r-oldrel-windows-x86_64 0.2.0 9.00 123.00 132.00 OK

Check Details

Version: 0.2.0
Check: tests
Result: ERROR Running ‘testthat.R’ [32s/90s] Running the tests in ‘tests/testthat.R’ failed. Complete output: > library(testthat) > library(ellmercodex) > > test_check("ellmercodex") Saving _problems/test-async-12.R Saving _problems/test-async-13.R Saving _problems/test-async-14.R Saving _problems/test-async-59.R Saving _problems/test-async-60.R Saving _problems/test-async-66.R Saving _problems/test-async-72.R Saving _problems/test-async-78.R Saving _problems/test-async-79.R Saving _problems/test-async-80.R Saving _problems/test-async-81.R Saving _problems/test-async-82.R Saving _problems/test-async-83.R Saving _problems/test-async-59.R Saving _problems/test-async-60.R Saving _problems/test-async-66.R Saving _problems/test-async-72.R Saving _problems/test-async-78.R Saving _problems/test-async-79.R Saving _problems/test-async-80.R Saving _problems/test-async-81.R Saving _problems/test-async-82.R Saving _problems/test-async-83.R Saving _problems/test-async-100.R Saving _problems/test-async-101.R Saving _problems/test-async-102.R Saving _problems/test-async-103.R Saving _problems/test-ellmer-interface-406.R Saving _problems/test-ellmer-interface-453.R Saving _problems/test-ellmer-interface-492.R Saving _problems/test-ellmer-interface-581.R Saving _problems/test-ellmer-interface-620.R Saving _problems/test-ellmer-70.R Saving _problems/test-ellmer-102.R Saving _problems/test-plan-usage-59.R Saving _problems/test-plan-usage-98.R Saving _problems/test-rich-content-17.R Saving _problems/test-rich-content-41.R Saving _problems/test-rich-content-67.R Saving _problems/test-tool-calling-45.R Saving _problems/test-tool-calling-106.R Saving _problems/test-tool-calling-144.R Saving _problems/test-tool-calling-189.R Saving _problems/test-tool-calling-231.R Saving _problems/test-tool-calling-268.R Saving _problems/test-tool-calling-295.R [ FAIL 46 | WARN 0 | SKIP 2 | PASS 394 ] ══ Skipped tests (2) ═══════════════════════════════════════════════════════════ • On CRAN (2): 'test-auth.R:173:3', 'test-auth.R:295:3' ══ Failed tests ════════════════════════════════════════════════════════════════ ── Failure ('test-async.R:12:3'): async chat repairs Codex streamed text and terminal history ── Expected `outcome$error` to be NULL. Differences: `actual` is an S3 object of class <simpleError/error/condition>, a list `expected` is NULL ── Failure ('test-async.R:13:3'): async chat repairs Codex streamed text and terminal history ── Expected `outcome$value` to have type "character". Actual type: "NULL" ── Failure ('test-async.R:14:3'): async chat repairs Codex streamed text and terminal history ── Expected `outcome$value` to be identical to "Hello async". Differences: `actual` is NULL `expected` is a character vector ('Hello async') ── Failure ('test-async.R:59:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `outcome$error` to be NULL. Differences: `actual` is an S3 object of class <simpleError/error/condition>, a list `expected` is NULL ── Failure ('test-async.R:60:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `outcome$value` to have length 4. Actual length: 0. ── Failure ('test-async.R:61:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `any(vapply(outcome$value, inherits, logical(1), what = "ellmer::ContentToolRequest"))` to be TRUE. Differences: `actual`: FALSE `expected`: TRUE ── Failure ('test-async.R:67:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `any(vapply(outcome$value, inherits, logical(1), what = "ellmer::ContentToolResult"))` to be TRUE. Differences: `actual`: FALSE `expected`: TRUE ── Failure ('test-async.R:78:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `text` to match regexp "The weather result is sunny\\.". Actual text: x | ── Failure ('test-async.R:79:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `seen$request` to be identical to 1L. Differences: `actual`: 0 `expected`: 1 ── Failure ('test-async.R:80:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `seen$result` to be identical to 1L. Differences: `actual`: 0 `expected`: 1 ── Failure ('test-async.R:81:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `seen$start` to be identical to 2L. Differences: `actual`: 1 `expected`: 2 ── Failure ('test-async.R:82:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `seen$end` to be identical to 2L. Differences: `actual`: 0 `expected`: 2 ── Failure ('test-async.R:83:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `chat$last_turn()@text` to be identical to "The weather result is sunny.". Differences: `actual`: "" `expected`: "The weather result is sunny." ── Failure ('test-async.R:59:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `outcome$error` to be NULL. Differences: `actual` is an S3 object of class <simpleError/error/condition>, a list `expected` is NULL ── Failure ('test-async.R:60:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `outcome$value` to have length 4. Actual length: 0. ── Failure ('test-async.R:61:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `any(vapply(outcome$value, inherits, logical(1), what = "ellmer::ContentToolRequest"))` to be TRUE. Differences: `actual`: FALSE `expected`: TRUE ── Failure ('test-async.R:67:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `any(vapply(outcome$value, inherits, logical(1), what = "ellmer::ContentToolResult"))` to be TRUE. Differences: `actual`: FALSE `expected`: TRUE ── Failure ('test-async.R:78:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `text` to match regexp "The weather result is sunny\\.". Actual text: x | ── Failure ('test-async.R:79:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `seen$request` to be identical to 1L. Differences: `actual`: 0 `expected`: 1 ── Failure ('test-async.R:80:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `seen$result` to be identical to 1L. Differences: `actual`: 0 `expected`: 1 ── Failure ('test-async.R:81:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `seen$start` to be identical to 2L. Differences: `actual`: 1 `expected`: 2 ── Failure ('test-async.R:82:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `seen$end` to be identical to 2L. Differences: `actual`: 0 `expected`: 2 ── Failure ('test-async.R:83:5'): async streaming preserves content chunks, callbacks, and tool modes ── Expected `chat$last_turn()@text` to be identical to "The weather result is sunny.". Differences: `actual`: "" `expected`: "The weather result is sunny." ── Failure ('test-async.R:100:3'): async structured output uses the stream-only Codex transport ── Expected `outcome$error` to be NULL. Differences: `actual` is an S3 object of class <simpleError/error/condition>, a list `expected` is NULL ── Failure ('test-async.R:101:3'): async structured output uses the stream-only Codex transport ── Expected `outcome$value$name` to be identical to "Susan". Differences: `actual` is NULL `expected` is a character vector ('Susan') ── Failure ('test-async.R:102:3'): async structured output uses the stream-only Codex transport ── Expected `outcome$value$age` to be identical to 13L. Differences: `actual` is NULL `expected` is an integer vector (13) ── Failure ('test-async.R:103:3'): async structured output uses the stream-only Codex transport ── Expected `inherits(chat$last_turn()@contents[[1L]], "ellmer::ContentJson")` to be TRUE. Differences: `actual`: FALSE `expected`: TRUE ── Error ('test-ellmer-interface.R:403:3'): usage fields omitted by Codex remain unknown ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-ellmer-interface.R:403:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─chat$chat("Say hello.") 5. └─coro::collect(...) 6. └─coro:::reduce_steps(x, steps, along_builder(list())) 7. └─coro:::reduce(x, reducer, .init = identity) 8. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 9. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 10. ├─coro::is_exhausted(new <- .x()) 11. └─coro (local) .x() 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. ├─coro::is_exhausted(elt <- iterator()) 17. └─coro (local) iterator() 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─coro (local) user(...) 23. ├─.last_value <<- eval_bare(substitute(expr), user_env) 24. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 25. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-ellmer-interface.R:447:3'): a new user turn closes dangling tool requests through ellmer ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-ellmer-interface.R:447:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─chat$chat("continue") 5. └─coro::collect(...) 6. └─coro:::reduce_steps(x, steps, along_builder(list())) 7. └─coro:::reduce(x, reducer, .init = identity) 8. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 9. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 10. ├─coro::is_exhausted(new <- .x()) 11. └─coro (local) .x() 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. ├─coro::is_exhausted(elt <- iterator()) 17. └─coro (local) iterator() 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─coro (local) user(...) 23. ├─.last_value <<- eval_bare(substitute(expr), user_env) 24. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 25. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-ellmer-interface.R:478:3'): cancellation stops a tool round before another Codex request ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-ellmer-interface.R:478:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─coro::collect(...) 5. └─coro:::reduce_steps(x, steps, along_builder(list())) 6. └─coro:::reduce(x, reducer, .init = identity) 7. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 8. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 9. ├─coro::is_exhausted(new <- .x()) 10. └─coro (local) .x() 11. └─base::evalq(...) 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. ├─coro::is_exhausted(elt <- iterator()) 16. └─coro (local) iterator() 17. └─base::evalq(...) 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─coro (local) user(...) 22. ├─.last_value <<- eval_bare(substitute(expr), user_env) 23. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 24. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-ellmer-interface.R:575:3'): request callbacks run for every synchronous tool round ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-ellmer-interface.R:575:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─chat$chat("Weather?") 5. └─coro::collect(...) 6. └─coro:::reduce_steps(x, steps, along_builder(list())) 7. └─coro:::reduce(x, reducer, .init = identity) 8. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 9. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 10. ├─coro::is_exhausted(new <- .x()) 11. └─coro (local) .x() 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. ├─coro::is_exhausted(elt <- iterator()) 17. └─coro (local) iterator() 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─coro (local) user(...) 23. ├─.last_value <<- eval_bare(substitute(expr), user_env) 24. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 25. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-ellmer-interface.R:615:3'): cloned Chat sends through its own history ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-ellmer-interface.R:615:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─clone$chat("Hello.") 5. └─coro::collect(...) 6. └─coro:::reduce_steps(x, steps, along_builder(list())) 7. └─coro:::reduce(x, reducer, .init = identity) 8. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 9. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 10. ├─coro::is_exhausted(new <- .x()) 11. └─coro (local) .x() 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. ├─coro::is_exhausted(elt <- iterator()) 17. └─coro (local) iterator() 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─coro (local) user(...) 23. ├─.last_value <<- eval_bare(substitute(expr), user_env) 24. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 25. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-ellmer.R:67:3'): Codex compatibility keeps the public Chat lifecycle and merges streamed text ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-ellmer.R:67:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─chat$chat("Say hello.") 5. └─coro::collect(...) 6. └─coro:::reduce_steps(x, steps, along_builder(list())) 7. └─coro:::reduce(x, reducer, .init = identity) 8. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 9. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 10. ├─coro::is_exhausted(new <- .x()) 11. └─coro (local) .x() 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. ├─coro::is_exhausted(elt <- iterator()) 17. └─coro (local) iterator() 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─coro (local) user(...) 23. ├─.last_value <<- eval_bare(substitute(expr), user_env) 24. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 25. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-ellmer.R:93:3'): Codex structured output uses ellmer conversion after SSE merge ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-ellmer.R:93:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─chat$chat_structured(...) 5. └─coro::collect(...) 6. └─coro:::reduce_steps(x, steps, along_builder(list())) 7. └─coro:::reduce(x, reducer, .init = identity) 8. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 9. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 10. ├─coro::is_exhausted(new <- .x()) 11. └─coro (local) .x() 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. └─coro (local) user(...) 17. ├─.last_value <<- eval_bare(substitute(expr), user_env) 18. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 19. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-plan-usage.R:53:3'): chat requests use the public Responses API with developer instructions ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-plan-usage.R:53:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─chat$chat("Hello") 5. └─coro::collect(...) 6. └─coro:::reduce_steps(x, steps, along_builder(list())) 7. └─coro:::reduce(x, reducer, .init = identity) 8. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 9. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 10. ├─coro::is_exhausted(new <- .x()) 11. └─coro (local) .x() 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. ├─coro::is_exhausted(elt <- iterator()) 17. └─coro (local) iterator() 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─coro (local) user(...) 23. ├─.last_value <<- eval_bare(substitute(expr), user_env) 24. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 25. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-plan-usage.R:92:3'): only response.completed is a successful chat turn ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-plan-usage.R:92:3 2. │ └─testthat:::expect_condition_matching_(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::suppressWarnings(...) 8. │ └─base::withCallingHandlers(...) 9. ├─httr2::with_mocked_responses(...) 10. │ └─withr::with_options(list(httr2_mock = mock), code) 11. │ └─base::force(code) 12. └─chat$chat("Hello") 13. └─coro::collect(...) 14. └─coro:::reduce_steps(x, steps, along_builder(list())) 15. └─coro:::reduce(x, reducer, .init = identity) 16. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 17. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 18. ├─coro::is_exhausted(new <- .x()) 19. └─coro (local) .x() 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─base::evalq(...) 23. └─base::evalq(...) 24. ├─coro::is_exhausted(elt <- iterator()) 25. └─coro (local) iterator() 26. └─base::evalq(...) 27. └─base::evalq(...) 28. └─base::evalq(...) 29. └─base::evalq(...) 30. └─coro (local) user(...) 31. ├─.last_value <<- eval_bare(substitute(expr), user_env) 32. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 33. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-rich-content.R:11:3'): image and PDF inputs keep their OpenAI Responses representation ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-rich-content.R:11:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─coro::collect(chat$stream(image, pdf)) 5. └─coro:::reduce_steps(x, steps, along_builder(list())) 6. └─coro:::reduce(x, reducer, .init = identity) 7. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 8. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 9. ├─coro::is_exhausted(new <- .x()) 10. └─coro (local) .x() 11. └─base::evalq(...) 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. ├─coro::is_exhausted(elt <- iterator()) 16. └─coro (local) iterator() 17. └─base::evalq(...) 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─coro (local) user(...) 22. ├─.last_value <<- eval_bare(substitute(expr), user_env) 23. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 24. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-rich-content.R:38:3'): streamed text repair preserves terminal image content ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-rich-content.R:38:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─coro::collect(chat$stream("Generate an image.")) 5. └─coro:::reduce_steps(x, steps, along_builder(list())) 6. └─coro:::reduce(x, reducer, .init = identity) 7. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 8. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 9. ├─coro::is_exhausted(new <- .x()) 10. └─coro (local) .x() 11. └─base::evalq(...) 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. ├─coro::is_exhausted(elt <- iterator()) 16. └─coro (local) iterator() 17. └─base::evalq(...) 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─coro (local) user(...) 22. ├─.last_value <<- eval_bare(substitute(expr), user_env) 23. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 24. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-rich-content.R:64:3'): content streaming yields terminal images without text rendering ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-rich-content.R:64:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─coro::collect(chat$stream("Generate an image.", stream = "content")) 5. └─coro:::reduce_steps(x, steps, along_builder(list())) 6. └─coro:::reduce(x, reducer, .init = identity) 7. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 8. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 9. ├─coro::is_exhausted(new <- .x()) 10. └─coro (local) .x() 11. └─base::evalq(...) 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. ├─coro::is_exhausted(elt <- iterator()) 16. └─coro (local) iterator() 17. └─base::evalq(...) 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─coro (local) user(...) 22. ├─.last_value <<- eval_bare(substitute(expr), user_env) 23. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 24. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-tool-calling.R:35:3'): a registered tool completes an end-to-end loop and preserves tool history ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-tool-calling.R:35:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─chat$chat("What is the weather in Montevideo?") 5. └─coro::collect(...) 6. └─coro:::reduce_steps(x, steps, along_builder(list())) 7. └─coro:::reduce(x, reducer, .init = identity) 8. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 9. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 10. ├─coro::is_exhausted(new <- .x()) 11. └─coro (local) .x() 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. ├─coro::is_exhausted(elt <- iterator()) 17. └─coro (local) iterator() 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─coro (local) user(...) 23. ├─.last_value <<- eval_bare(substitute(expr), user_env) 24. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 25. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-tool-calling.R:98:3'): the chat_codex user-facing factory completes a registered tool loop ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-tool-calling.R:98:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─chat$chat("What is the weather in Montevideo?") 5. └─coro::collect(...) 6. └─coro:::reduce_steps(x, steps, along_builder(list())) 7. └─coro:::reduce(x, reducer, .init = identity) 8. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 9. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 10. ├─coro::is_exhausted(new <- .x()) 11. └─coro (local) .x() 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. ├─coro::is_exhausted(elt <- iterator()) 17. └─coro (local) iterator() 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─coro (local) user(...) 23. ├─.last_value <<- eval_bare(substitute(expr), user_env) 24. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 25. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-tool-calling.R:131:3'): multiple calls and sequential rounds execute in order ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-tool-calling.R:131:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─chat$chat("Compare the weather, then check it again.") 5. └─coro::collect(...) 6. └─coro:::reduce_steps(x, steps, along_builder(list())) 7. └─coro:::reduce(x, reducer, .init = identity) 8. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 9. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 10. ├─coro::is_exhausted(new <- .x()) 11. └─coro (local) .x() 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. ├─coro::is_exhausted(elt <- iterator()) 17. └─coro (local) iterator() 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─coro (local) user(...) 23. ├─.last_value <<- eval_bare(substitute(expr), user_env) 24. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 25. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-tool-calling.R:171:3'): tool errors and rejected tools become ContentToolResult errors ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─base::withCallingHandlers(...) at test-tool-calling.R:171:3 2. ├─httr2::with_mocked_responses(...) 3. │ └─withr::with_options(list(httr2_mock = mock), code) 4. │ └─base::force(code) 5. └─chat$chat("Try the restricted tool.") 6. └─coro::collect(...) 7. └─coro:::reduce_steps(x, steps, along_builder(list())) 8. └─coro:::reduce(x, reducer, .init = identity) 9. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 10. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 11. ├─coro::is_exhausted(new <- .x()) 12. └─coro (local) .x() 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. └─base::evalq(...) 17. ├─coro::is_exhausted(elt <- iterator()) 18. └─coro (local) iterator() 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─base::evalq(...) 23. └─coro (local) user(...) 24. ├─.last_value <<- eval_bare(substitute(expr), user_env) 25. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 26. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-tool-calling.R:213:3'): ordinary tool exceptions are returned to Codex as tool errors ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─base::withCallingHandlers(...) at test-tool-calling.R:213:3 2. ├─httr2::with_mocked_responses(...) 3. │ └─withr::with_options(list(httr2_mock = mock), code) 4. │ └─base::force(code) 5. └─chat$chat("Try the failing tool.") 6. └─coro::collect(...) 7. └─coro:::reduce_steps(x, steps, along_builder(list())) 8. └─coro:::reduce(x, reducer, .init = identity) 9. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 10. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 11. ├─coro::is_exhausted(new <- .x()) 12. └─coro (local) .x() 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. └─base::evalq(...) 17. ├─coro::is_exhausted(elt <- iterator()) 18. └─coro (local) iterator() 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─base::evalq(...) 23. └─coro (local) user(...) 24. ├─.last_value <<- eval_bare(substitute(expr), user_env) 25. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 26. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-tool-calling.R:257:3'): ellmer tool-request callbacks can reject a call ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─base::withCallingHandlers(...) at test-tool-calling.R:257:3 2. ├─httr2::with_mocked_responses(...) 3. │ └─withr::with_options(list(httr2_mock = mock), code) 4. │ └─base::force(code) 5. └─chat$chat("Try the callback-rejected tool.") 6. └─coro::collect(...) 7. └─coro:::reduce_steps(x, steps, along_builder(list())) 8. └─coro:::reduce(x, reducer, .init = identity) 9. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 10. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 11. ├─coro::is_exhausted(new <- .x()) 12. └─coro (local) .x() 13. └─base::evalq(...) 14. └─base::evalq(...) 15. └─base::evalq(...) 16. └─base::evalq(...) 17. ├─coro::is_exhausted(elt <- iterator()) 18. └─coro (local) iterator() 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─base::evalq(...) 22. └─base::evalq(...) 23. └─coro (local) user(...) 24. ├─.last_value <<- eval_bare(substitute(expr), user_env) 25. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 26. └─rlang::eval_bare(substitute(expr), user_env) ── Error ('test-tool-calling.R:289:3'): content streaming yields text, tool request, result, and final text ── Error in `(utils::getFromNamespace("record_chat_otel_span_status", "ellmer"))(chat_span, provider, result)`: unused argument (result) Backtrace: ▆ 1. ├─httr2::with_mocked_responses(...) at test-tool-calling.R:289:3 2. │ └─withr::with_options(list(httr2_mock = mock), code) 3. │ └─base::force(code) 4. └─coro::collect(chat$stream("Stream the weather.", stream = "content")) 5. └─coro:::reduce_steps(x, steps, along_builder(list())) 6. └─coro:::reduce(x, reducer, .init = identity) 7. └─coro:::reduce_impl(.x, .f, ..., .init = .init) 8. └─coro:::iter_reduce_impl(.x, .f, ..., .left = .left) 9. ├─coro::is_exhausted(new <- .x()) 10. └─coro (local) .x() 11. └─base::evalq(...) 12. └─base::evalq(...) 13. └─base::evalq(...) 14. └─base::evalq(...) 15. ├─coro::is_exhausted(elt <- iterator()) 16. └─coro (local) iterator() 17. └─base::evalq(...) 18. └─base::evalq(...) 19. └─base::evalq(...) 20. └─base::evalq(...) 21. └─coro (local) user(...) 22. ├─.last_value <<- eval_bare(substitute(expr), user_env) 23. │ └─rlang::env_poke(env, lhs, value, inherit = TRUE, create = FALSE) 24. └─rlang::eval_bare(substitute(expr), user_env) [ FAIL 46 | WARN 0 | SKIP 2 | PASS 394 ] Error: ! Test failures. Warning message: In for (i in seq_len(n)) { : closing unused connection 4 (charToRaw(paste0(fixture_text(name), "\n\n"))) Execution halted Flavor: r-devel-linux-x86_64-fedora-clang