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 |
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