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

UpdateHub / updatehub / 32293795643
70%

Build:
DEFAULT BRANCH: master
Ran 19 Aug 2026 07:39PM UTC
Jobs 1
Files 79
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

19 Aug 2026 07:34PM UTC coverage: 65.885% (+0.8%) from 65.087%
32293795643

push

github

otavio
test: route every PATH change through a guard

The tests changed `PATH` on the running process and never put it back.
`create_echo_bins` prepended its mock directory and left it there, and the
"missing binaries" tests emptied `PATH` for everyone. Since libtest runs the
tests on parallel threads, one test could make another fail: both the reboot
mock in `states::tests` and the one in `states::reboot` answer to the same name
but write to different files, so whichever prepended last won for all of them.
The 2024 edition surfaced the same problem as `unsafe`, because `setenv` races
with any concurrent read.

Split the two needs the tests actually have:

`SearchPathGuard` covers `check_requirements`, which only calls
`is_executable_in_path`. It overrides the directories that lookup reads, in a
`thread_local!`, so it writes no process state at all. libtest gives each test
its own thread and every test here uses the current-thread runtime, so the tests
no longer see each other.

`PathEnvGuard` covers the three places that run a real subprocess, where
`execvp` reads `PATH` from the process. It takes a process-wide lock, reads the
old value under that lock, and restores it on drop, including during a panic
unwind.

`create_echo_bins` now only creates the directory, and the caller picks the
guard it needs. That drops the `unsafe` writes from fourteen to one, inside
`PathEnvGuard`, and `PATH` stops leaking between tests.

Six tests cover the guards, because the old assertions passed whether or not
the lookup worked: the host has no `flash_erase` either.

150 of 156 new or added lines in 7 files covered. (96.15%)

48 existing lines in 4 files now uncovered.

2978 of 4520 relevant lines covered (65.88%)

1102.98 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
61.54
2.92% updatehub/src/object/installer/flash.rs
2
51.92
1.92% updatehub/src/object/installer/ubifs.rs
1
55.87
13.35% updatehub/src/utils/fs.rs
1
97.73
updatehub/src/utils/test_env.rs

Coverage Regressions

Lines Coverage ∆ File
34
3.87
-0.2% updatehub/src/utils/mtd.rs
8
61.54
2.92% updatehub/src/object/installer/flash.rs
5
51.92
1.92% updatehub/src/object/installer/ubifs.rs
1
55.87
13.35% updatehub/src/utils/fs.rs
Jobs
ID Job ID Ran Files Coverage
1 32293795643.1 19 Aug 2026 07:39PM UTC 79
65.88
GitHub Action Run
Source Files on build 32293795643
  • Tree
  • List 79
  • Changed 12
  • Source Changed 11
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32293795643
  • 430f0350 on github
  • Prev Build on master (#32024421774)
  • Next Build on master (#32293824559)
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