mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
The 78 failures on this target were not 78 unimplemented actuals. Two root causes accounted for all of them. TestResourceLoader.linux was a TODO(), so every vector-driven suite failed before it reached any production code: the full MLS interop set, NIP-44, the NIP-01 hint indexer, the SQLite store's large-DB tests and the Bolt12 payer proofs — 69 tests. Implemented over platform.posix (linuxX64 has no Foundation for the Apple actual's NSData path), resolving against the same TEST_RESOURCES_ROOT that build.gradle.kts already exports onto every KotlinNativeTest task. The read is one ftell-sized allocation filled by fread, so a vector file costs exactly one ByteArray — less than the JVM actual's bufferedReader().readText(), which grows a StringBuilder as it goes. UriParser.linux never URL-decoded query values or fragments, though the JVM actual runs both through URLDecoder.decode(.., "UTF-8"). Every NIP-47 failure was one symptom of that: relay=wss%3A%2F%2Frelay.damus.io reached RelayUrlNormalizer still percent-encoded and came back "Invalid relay Url" (6 tests), and the deep-link round trips compared an encoded string against a plain one (3 tests). Added a decoder matching URLDecoder where the behaviour is observable — '+' to space, a run of consecutive %XX decoded as one UTF-8 sequence, malformed escapes throwing IllegalArgumentException — with the same short-circuit URLDecoder makes, returning the original instance when there is nothing to decode. Two other divergences fixed while there: getQueryParameter returned an empty list where the JVM returns null for an absent parameter, and the query string was re-split on every call rather than parsed once into a lazy map, so a URI read for four parameters was parsed four times. With those, linuxX64Test is 3495 tests, 0 failures, so the CI leg added alongside the LargeCache work drops its cache-package filter and runs the whole :quartz suite. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HxQ1QuyzSkR38iFHbREjoS