• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

source-academy / js-slang / 35688784234
86%

Build:
DEFAULT BRANCH: master
Ran 22 Sep 2026 05:00AM UTC
Jobs 1
Files 151
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Sep 2026 04:56AM UTC coverage: 85.532% (+0.09%) from 85.439%
35688784234

push

github

web-flow
feat(conductor): wire up the data visualizer, so draw_data works again (#2089)

* feat(conductor): wire up the data visualizer, so draw_data works again

Closes #2078. All three Conductor evaluators wired visualiseList to a
throw ("draw_data is not supported by this evaluator"), so any §2+
program calling draw_data — which every SICP §2 exercise set reaches
for — failed at runtime.

Following py-slang's PyDataVisualizerRunnerPlugin/toDataVisualizerNode
shape:

- src/conductor/dataVisualizer/toDataVisualizerNode.ts — converts a
  js-slang runtime value into the shared, language-agnostic
  SerializedDataVisualizerNode wire format. Purely mechanical
  dispatch on the value's own JS shape (null -> empty, Array -> array
  node recursing into elements, typeof === 'function' -> function
  node, everything else -> leaf) — no cycle-detection or pair/list
  classification, which stays entirely host-side. A CSE machine
  Closure is itself typeof 'function' (its constructor swaps in
  Closure.prototype on a real Function object), so the same branch
  covers both the transpiler's bare functions and the CSE machine's
  Closures with no instanceof needed.

- src/conductor/dataVisualizer/SourceDataVisualizerRunnerPlugin.ts —
  the two-line adapter BaseDataVisualizerRunnerPlugin expects.

- SourceEvaluator/SourceCseEvaluator/SourceStepperEvaluator now
  register the plugin (§2+ only — SourceCseEvaluator always, since it
  only ever instantiates for §3/§4; the other two gate on chapter),
  call hostLoadPlugin(DATA_VISUALIZER_DIRECTORY_ID), route
  visualiseList through sendDrawing, and call resetRun() at the start
  of every chunk so rows don't accumulate across REPL entries — the
  Conductor-era equivalent of the old frontend's
  DataVisualizer.clearWithData() on every Run press.
  SourceStepperEvaluator's wiring is present for parity but currently
  inert: the stepper has its own, entirely separate symbolic
  draw_data (src/stepper/builtins/lists.ts) that never calls... (continued)

2447 of 2969 branches covered (82.42%)

Branch coverage included in aggregate %.

31 of 32 new or added lines in 7 files covered. (96.88%)

4777 of 5477 relevant lines covered (87.22%)

311897.5 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
75.0
2.59% src/conductor/SourceStepperEvaluator.ts
Jobs
ID Job ID Ran Files Coverage
1 35688784234.1 22 Sep 2026 05:00AM UTC 151
85.53
GitHub Action Run
Source Files on build 35688784234
  • Tree
  • List 151
  • Changed 5
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • ea78a646 on github
  • Prev Build on master (#35677731413)
  • Next Build on master (#35698076645)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc