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

pboling / kettle-paths / 37858699482
92%

Build:
DEFAULT BRANCH: main
Ran 08 Oct 2026 11:19PM UTC
Jobs 1
Files 2
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

08 Oct 2026 11:18PM UTC coverage: 93.13%. First build
37858699482

push

github

pboling
✨ Implement Kettle::Paths and template the gem

Replaces the scaffolded kettle-paths gem with a working shared path utility
for the Kettle toolchain, plus the full kettle-jem project template applied to
the gem.

The utility resolves paths by filesystem identity rather than by string or
lexical comparison, so it treats every spelling of one directory as equal:
symlinked ancestors (/var/home vs /home) and Windows 8.3 short vs long names
(C:/Users/RUNNER~1 vs C:/Users/runneradmin). Both defeat naive prefix checks
and Pathname#relative_path_from, which produces nonsense such as
"../../../../var/home/..." when the cwd and a discovered file name the same
directory with two different spellings. This is the same class of bug already
fixed in turbo_tests2 (TurboTests::Utils::Paths) and in the kettle-jem
maintenance tools (Kettle::Jem::RelativePaths); kettle-paths consolidates it
into one reusable home.

Public API:
  canonical(path, base:)         expand without resolving symlinks, so caller
                                 spelling is preserved
  same?(left, right, base:)      identity comparison of two paths
  identical?(left, right)        File.identical? wrapper, returning false for
                                 missing paths (measured Ruby 4.0.7 behavior)
  within?(path, root, base:)     containment by identity walk-up
  relative(path, root)           caller-spelling-preserving relative path
  relative_from(path, root)      identity-aware relative path
  glob(*parts)                   path-join glob
  local_path_remote?(remote)     detect a local path remote in a lockfile
  path_parts(path)               split into components

RBS signatures in sig/kettle/paths.rbs validate with RBS::Parser. Suite runs
47 examples, 0 failures via kettle-test (parallel), and the family lint gate
passes for all members including this one.

Requires Ruby >= 2.4.0, MIT licensed, version 0.1.0.

Signed-off-by: Peter H. Boling <peter.boling@gmail.com>

31 of 36 branches covered (86.11%)

Branch coverage included in aggregate %.

85 of 89 new or added lines in 2 files covered. (95.51%)

91 of 95 relevant lines covered (95.79%)

15.45 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
92.86
lib/kettle/paths.rb
Jobs
ID Job ID Ran Files Coverage
1 37858699482.1 08 Oct 2026 11:19PM UTC 2
93.13
GitHub Action Run
Source Files on build 37858699482
  • Tree
  • List 2
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #37858699482
  • 17fa356a on github
  • Next Build on main (#38087503694)
  • 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