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

source-academy / frontend / 30661793027
45%

Build:
DEFAULT BRANCH: master
Ran 31 Jul 2026 08:12PM UTC
Jobs 1
Files 474
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

31 Jul 2026 08:09PM UTC coverage: 44.686% (+0.7%) from 43.971%
30661793027

push

github

web-flow
Keep a Conductor REPL session alive across Run and REPL chunks (#4213)

* Keep a Conductor REPL session alive across Run and REPL chunks

Every EVAL_EDITOR (Run) and EVAL_REPL submission used to acquire its own
fresh conductor, call hostPlugin.startEvaluator() once, and unconditionally
terminate that Worker afterward - so a REPL line ran as if it were an
entire program in a brand-new interpreter, with no memory of a previous
line's declarations (source-academy/py-slang#359).

evalCodeConductorSaga now keeps the conductor from a Run (or a REPL
submission with no prior Run) alive as a per-workspace "REPL session"
after its first chunk finishes, and routes later REPL submissions through
hostPlugin.sendChunk() on that same live conduit instead of building a new
one - the send/receive half of source-academy/conductor#66's chunk loop.
A session ends (Worker killed, background listener tasks cancelled) only
via endReplSessionSaga: explicitly on Stop or the next Run, or if the
evaluator itself reports a genuine terminal STOPPED/ERROR - never just
because one chunk finished. An erroring REPL line still reports through
sendError without ending the session, matching the underlying evaluators'
own per-chunk error recovery.

This requires source-academy/conductor#66 (BasicEvaluator.startEvaluator
looping on further chunks and reporting RunnerStatus.EVAL_READY between
them instead of STOPPED) - do not bump past @sourceacademy/conductor 0.8.2
until that lands and is published, or every Run/REPL submission will hang
waiting for a STOPPED that no longer comes.

* Address CodeRabbit review: fix two cancellation-leak paths, scope Stop to its workspace

- endReplSessionSaga now wraps the 50ms drain delay in try/finally: if the
  calling saga is itself cancelled while waiting there (e.g. a second Run's
  takeLatest superseding this one), the session's already been removed from
  replSessions, so this was the only remaining chance to cancel its tasks
  and kill its Worker ... (continued)

2990 of 7749 branches covered (38.59%)

Branch coverage included in aggregate %.

50 of 55 new or added lines in 2 files covered. (90.91%)

6949 of 14493 relevant lines covered (47.95%)

29.77 hits per line

Uncovered Changes

Lines Coverage ∆ File
5
63.69
31.15% src/commons/sagas/WorkspaceSaga/helpers/evalCode.ts
Jobs
ID Job ID Ran Files Coverage
1 30661793027.1 31 Jul 2026 08:12PM UTC 474
44.69
GitHub Action Run
Source Files on build 30661793027
  • Tree
  • List 474
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • dd1cc5ba on github
  • Prev Build on master (#30623384588)
  • Next Build on master (#30663365526)
  • Delete
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