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

paskal / spot / 28776068980
84%
master: 84%

Build:
Build:
LAST BUILD BRANCH: fix/executor-correctness
DEFAULT BRANCH: master
Ran 06 Jul 2026 07:49AM UTC
Jobs 1
Files 19
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

06 Jul 2026 07:47AM UTC coverage: 83.862% (+0.2%) from 83.639%
28776068980

push

github

paskal
executor: fix context-cancellation leaks, local copy bugs, drop dead options

- sshRun: buffer the done channel so the command goroutine can exit
  after a ctx-cancel return instead of blocking forever (goroutine leak).
- sftpUpload/sftpDownload: build the sftp client over an ssh session we
  hold (newSftpSession), and on ctx-cancel close that session to abort
  the in-flight transfer from outside the sftp mutex, then drain the copy
  goroutine before returning. newSftpSession drains the session stderr
  pipe in a goroutine (RequestSubsystem never starts the copy that
  Session.Stderr would use, so unread stderr would stall the channel).
  The cancel drain is bounded by a grace timeout so an app-level wedge
  cannot hang the deploy; a transport-level wedge is left to a follow-up.
- sftpDownload now downloads into a temp file in the destination dir and
  renames over the destination only on success, so a canceled or failed
  download no longer truncates or destroys an existing local file (newly
  reachable now that a download actually aborts mid-copy).
- Local.Upload: multi-file glob + mkdir creates the destination directory
  itself, and honors context cancellation between files.
- Local.Download: pass the caller context through.
- Connector.String: cap the private-key slice with min().
- Remove dead options never read by any executor: Checksum from
  UpDownOpts and SyncOpts, and Force from SyncOpts, plus the config
  sync 'force' field (undocumented no-op) and its schema entry. Behavior
  change: under strict YAML a playbook that set 'sync: {force: true}'
  will now fail to parse.

87 of 114 new or added lines in 4 files covered. (76.32%)

86 existing lines in 3 files now uncovered.

3253 of 3879 relevant lines covered (83.86%)

58.25 hits per line

Uncovered Changes

Lines Coverage ∆ File
26
78.17
1.65% pkg/executor/remote.go
1
81.75
0.0% pkg/executor/local.go

Coverage Regressions

Lines Coverage ∆ File
39
78.17
1.65% pkg/executor/remote.go
38
81.75
0.0% pkg/executor/local.go
9
93.93
0.0% pkg/config/command.go
Jobs
ID Job ID Ran Files Coverage
1 28776068980.1 06 Jul 2026 07:49AM UTC 19
83.86
GitHub Action Run
Source Files on build 28776068980
  • Tree
  • List 19
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 1d05ddcb on github
  • Prev Build on fix/executor-correctness (#28757658465)
  • Next Build on fix/executor-correctness (#28776177470)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc