Repository navigation
feat: Add a Dart harness - #6
Conversation
|
@themis-blindfold review |
|
@themis-blindfold review |
1e84003 to
fe4e135
Compare
⚖️ Themis review: 🟠 Fix before mergeThe added Flutter compatibility-matrix entry has a completed failing check, so this would leave the repository's regular compatibility signal red from the outset. Eight other completed SDK spec checks passed; the Ruby check was still in progress.
🟠 Majors
🧹 Nits
📝 Walkthrough
🧪 How to verify
Automate: Add a minimal Dart fixture that exercises entrypoint generation and one JSON-lines request/response round trip. Product take: This extends behavioural-spec coverage to Flutter, a worthwhile capability, but a permanently failing compatibility row would make the signal unreliable until the SDK gap is fixed. 🧭 Assumptions & unverified claimsNo unverified assumptions or claims. One new dialect, one currently red signal — let’s get them introduced after the values agree. · reviewed at fe4e135 |
⚖️ Themis review: 🟠 Fix before mergeThe Flutter SDK ref is explicitly described as failing the typed-value scenarios, yet it is added to the standard compatibility matrix. The documented Dart container recipe also relies on an undeclared runtime directory. The nine completed language compatibility jobs passed; the Flutter job was still running.
🟠 Majors
📝 Walkthrough
🧪 How to verify
Product take: Adding Dart and Flutter support is a solid expansion of the SDK spec, but onboarding and compatibility need to be dependable before it can protect SDK users. 🧭 Assumptions & unverified claims
A promising bridge to Dart, with one missing plank. · reviewed at fe4e135 |
|
@themis-blindfold review |
|
@themis-blindfold review |
Adds a harness for Dart and Flutter SDKs, and runs the spec against
flagsmith-flutter-clientin the compatibility matrix. Built on v0.3.0 (#4).harness/dart/build.dart: Dart cannot call a function by name at runtime, so this readssdk-spec/steps.dart, finds each step marker (Create the SDK clientorWhen …) and the first top-level function after it, and generates an entrypoint that passes those functions to the harness, keyed by step text.harness/dart/harness.dart: speaks the stdio protocol and calls steps withFunction.apply, awaitingFutures.printoutput goes to stderr.harness/dart/README.md: the steps-file conventions, Dockerfiles for Flutter and Dart packages, and how to run it locally..github/workflows/compatibility.yml: addsflutter(Flagsmith/flagsmith-flutter-client,feat/sdk-spec, languagedart).A Flutter package needs
dart:ui, so it cannot run on the plain Dart VM. The README's Flutter Dockerfile compiles the entrypoint withflutter build bundleand runs the kernel onflutter_tester, the headless engineflutter testuses. Unlikeflutter test, this keeps the process's stdin and stdout.The Flutter SDK currently returns flag values as strings, so its two scenarios fail on value types (
"42"instead of42). That is an SDK gap, tracked in Flagsmith/flagsmith-flutter-client#99. Everything else works: with values decoded in a local experiment, both scenarios pass, including trait persistence.