Conversation
This was referenced Feb 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR removes the historic Cucumber/Aruba-based integration (feature) tests and supporting tooling from the project entirely, in favor of migrating to native Go tooling.
Summary
Every existing Aruba/Cucumber scenario was audited and ported to either a Go unit test (preferred) or a
testscriptintegration fixture. The 15 new.txtarscript fixtures (usingrogpeppe/go-internal/testscript) cover CLI commands, shell function integration (bash/zsh/fish), and shell wrapper behavior. New golden-file tests cover status rendering, and table-driven unit tests were expanded forinitandexpandcommands. All Ruby test infrastructure is removed, replaced by a Go-only integration test workflow.Motivation
The Cucumber/Aruba suite was significantly more readable than the testscript replacement — Cucumber's natural-language scenarios are hard to beat for clarity, and the table-driven tests were great for testing multiple behaviors and shells. However, it was the only non-Go dependency in the project, adding real friction to the dev setup (Ruby, Bundler, Aruba gems) for a pure-Go CLI tool. The tradeoff wasn't worth it, especially as I'd like to hand off maintenance of this project eventually.
testscriptis the most common Go approach for CLI integration testing (used bycmd/goitself), keeps everything in a single toolchain, and the.txtarfixtures are self-contained.Performance
Integration tests now run in ~1 second instead of ~30 seconds.
Note on AI Usage
As an experiment, I heavily used Codex 5.3 to drive the tedious test suite porting process. I experienced mixed results, and it required significant guidance, but it did result in being able to tackle something I previously considered too tedious to do.