mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-08 00:02:20 +03:00
208 lines
6.9 KiB
Plaintext
208 lines
6.9 KiB
Plaintext
[CREDENTIALS] No external credentials file found, using defaults.
|
|
[DB] SQLite database ready: /home/diegosouzapw/.omniroute/storage.sqlite
|
|
[MODEL] Ambiguous model 'claude-haiku-4.5'. Use provider/model prefix (ex: gh/claude-haiku-4.5 or kr/claude-haiku-4.5). Candidates: gh, kr, anthropic
|
|
TAP version 13
|
|
# Subtest: getModelInfoCore resolves unique non-openai unprefixed model
|
|
ok 1 - getModelInfoCore resolves unique non-openai unprefixed model
|
|
---
|
|
duration_ms: 3.403766
|
|
type: 'test'
|
|
...
|
|
# Subtest: getModelInfoCore keeps openai fallback for gpt-4o
|
|
ok 2 - getModelInfoCore keeps openai fallback for gpt-4o
|
|
---
|
|
duration_ms: 0.535726
|
|
type: 'test'
|
|
...
|
|
# Subtest: getModelInfoCore resolves gpt-5.4 to codex
|
|
ok 3 - getModelInfoCore resolves gpt-5.4 to codex
|
|
---
|
|
duration_ms: 0.321781
|
|
type: 'test'
|
|
...
|
|
# Subtest: getModelInfoCore returns explicit ambiguity metadata for ambiguous unprefixed model
|
|
ok 4 - getModelInfoCore returns explicit ambiguity metadata for ambiguous unprefixed model
|
|
---
|
|
duration_ms: 1.079896
|
|
type: 'test'
|
|
...
|
|
# Subtest: getModelInfoCore canonicalizes github legacy alias with explicit provider prefix
|
|
ok 5 - getModelInfoCore canonicalizes github legacy alias with explicit provider prefix
|
|
---
|
|
duration_ms: 0.370547
|
|
type: 'test'
|
|
...
|
|
# Subtest: GithubExecutor routes codex-family model to /responses
|
|
ok 6 - GithubExecutor routes codex-family model to /responses
|
|
---
|
|
duration_ms: 0.47113
|
|
type: 'test'
|
|
...
|
|
# Subtest: GithubExecutor keeps non-codex model on /chat/completions
|
|
ok 7 - GithubExecutor keeps non-codex model on /chat/completions
|
|
---
|
|
duration_ms: 0.38457
|
|
type: 'test'
|
|
...
|
|
# Subtest: DefaultExecutor uses x-api-key for kimi-coding-apikey
|
|
ok 8 - DefaultExecutor uses x-api-key for kimi-coding-apikey
|
|
---
|
|
duration_ms: 0.451443
|
|
type: 'test'
|
|
...
|
|
# Subtest: CodexExecutor forces stream=true for upstream compatibility
|
|
ok 9 - CodexExecutor forces stream=true for upstream compatibility
|
|
---
|
|
duration_ms: 1.203259
|
|
type: 'test'
|
|
...
|
|
# Subtest: Claude native messages can be round-tripped through OpenAI into Claude OAuth format
|
|
ok 10 - Claude native messages can be round-tripped through OpenAI into Claude OAuth format
|
|
---
|
|
duration_ms: 7.232512
|
|
type: 'test'
|
|
...
|
|
# Subtest: CodexExecutor maps fast service tier to priority
|
|
ok 11 - CodexExecutor maps fast service tier to priority
|
|
---
|
|
duration_ms: 0.489993
|
|
type: 'test'
|
|
...
|
|
# Subtest: shouldUseNativeCodexPassthrough only enables responses-native Codex requests
|
|
ok 12 - shouldUseNativeCodexPassthrough only enables responses-native Codex requests
|
|
---
|
|
duration_ms: 0.441911
|
|
type: 'test'
|
|
...
|
|
# Subtest: CodexExecutor can force fast service tier from settings
|
|
ok 13 - CodexExecutor can force fast service tier from settings
|
|
---
|
|
duration_ms: 0.299575
|
|
type: 'test'
|
|
...
|
|
# Subtest: CodexExecutor always requests SSE accept header
|
|
ok 14 - CodexExecutor always requests SSE accept header
|
|
---
|
|
duration_ms: 0.602914
|
|
type: 'test'
|
|
...
|
|
# Subtest: CodexExecutor does not request SSE accept header for compact requests
|
|
ok 15 - CodexExecutor does not request SSE accept header for compact requests
|
|
---
|
|
duration_ms: 0.322611
|
|
type: 'test'
|
|
...
|
|
# Subtest: CodexExecutor preserves native responses payloads for Codex passthrough
|
|
not ok 16 - CodexExecutor preserves native responses payloads for Codex passthrough
|
|
---
|
|
duration_ms: 1.856261
|
|
type: 'test'
|
|
location: '/home/diegosouzapw/dev/proxys/9router/tests/unit/plan3-p0.test.mjs:221:1'
|
|
failureType: 'testCodeFailure'
|
|
error: |-
|
|
Expected values to be strictly equal:
|
|
|
|
false !== true
|
|
|
|
code: 'ERR_ASSERTION'
|
|
name: 'AssertionError'
|
|
expected: true
|
|
actual: false
|
|
operator: 'strictEqual'
|
|
stack: |-
|
|
TestContext.<anonymous> (file:///home/diegosouzapw/dev/proxys/9router/tests/unit/plan3-p0.test.mjs:242:10)
|
|
Test.runInAsyncScope (node:async_hooks:214:14)
|
|
Test.run (node:internal/test_runner/test:1047:25)
|
|
Test.processPendingSubtests (node:internal/test_runner/test:744:18)
|
|
Test.postRun (node:internal/test_runner/test:1173:19)
|
|
Test.run (node:internal/test_runner/test:1101:12)
|
|
async Test.processPendingSubtests (node:internal/test_runner/test:744:7)
|
|
...
|
|
# Subtest: CodexExecutor strips streaming fields for compact passthrough
|
|
ok 17 - CodexExecutor strips streaming fields for compact passthrough
|
|
---
|
|
duration_ms: 0.296176
|
|
type: 'test'
|
|
...
|
|
# Subtest: CodexExecutor routes responses subpaths to matching upstream paths
|
|
ok 18 - CodexExecutor routes responses subpaths to matching upstream paths
|
|
---
|
|
duration_ms: 0.546657
|
|
type: 'test'
|
|
...
|
|
# Subtest: translateNonStreamingResponse converts Responses API payload to OpenAI chat.completion
|
|
ok 19 - translateNonStreamingResponse converts Responses API payload to OpenAI chat.completion
|
|
---
|
|
duration_ms: 1.483788
|
|
type: 'test'
|
|
...
|
|
# Subtest: extractUsageFromResponse reads usage from Responses API payload
|
|
ok 20 - extractUsageFromResponse reads usage from Responses API payload
|
|
---
|
|
duration_ms: 0.398039
|
|
type: 'test'
|
|
...
|
|
# Subtest: detectFormat identifies OpenAI Responses when input is string
|
|
ok 21 - detectFormat identifies OpenAI Responses when input is string
|
|
---
|
|
duration_ms: 0.359174
|
|
type: 'test'
|
|
...
|
|
# Subtest: detectFormat identifies OpenAI Responses by max_output_tokens without input array
|
|
ok 22 - detectFormat identifies OpenAI Responses by max_output_tokens without input array
|
|
---
|
|
duration_ms: 0.271215
|
|
type: 'test'
|
|
...
|
|
# Subtest: detectFormatFromEndpoint forces OpenAI for /v1/chat/completions
|
|
ok 23 - detectFormatFromEndpoint forces OpenAI for /v1/chat/completions
|
|
---
|
|
duration_ms: 0.52054
|
|
type: 'test'
|
|
...
|
|
# Subtest: detectFormatFromEndpoint forces Claude for /v1/messages
|
|
ok 24 - detectFormatFromEndpoint forces Claude for /v1/messages
|
|
---
|
|
duration_ms: 0.433035
|
|
type: 'test'
|
|
...
|
|
# Subtest: translateRequest normalizes openai-responses input string into list payload
|
|
ok 25 - translateRequest normalizes openai-responses input string into list payload
|
|
---
|
|
duration_ms: 0.358109
|
|
type: 'test'
|
|
...
|
|
# Subtest: translateRequest preserves service_tier when converting openai to openai-responses
|
|
ok 26 - translateRequest preserves service_tier when converting openai to openai-responses
|
|
---
|
|
duration_ms: 1.10454
|
|
type: 'test'
|
|
...
|
|
# Subtest: parseSSEToResponsesOutput parses completed response from SSE payload
|
|
ok 27 - parseSSEToResponsesOutput parses completed response from SSE payload
|
|
---
|
|
duration_ms: 0.575476
|
|
type: 'test'
|
|
...
|
|
# Subtest: parseSSEToResponsesOutput returns null for invalid payload
|
|
ok 28 - parseSSEToResponsesOutput returns null for invalid payload
|
|
---
|
|
duration_ms: 0.302714
|
|
type: 'test'
|
|
...
|
|
# Subtest: parseSSEToOpenAIResponse merges split tool call chunks by id without duplication
|
|
ok 29 - parseSSEToOpenAIResponse merges split tool call chunks by id without duplication
|
|
---
|
|
duration_ms: 0.916032
|
|
type: 'test'
|
|
...
|
|
1..29
|
|
# tests 29
|
|
# suites 0
|
|
# pass 28
|
|
# fail 1
|
|
# cancelled 0
|
|
# skipped 0
|
|
# todo 0
|
|
# duration_ms 65.394285
|