On line 19 here you're making an assumption about the fact that the line is splittable on newlines, and then you're putting expectations on exact lines (or ranges of lines).

I think that it would be better if you were much looser in your expectations about what comes out as an error, since we're only trying to verify that the available algorithms are shown to the user (and that a certain exit code is used).

I'm also thinking that if stub whatever it is that provides the list of algorithms, then we couldn't need to call external classes to get that list.

I'm thinking this could all be written something like this:
```ruby
algorithm_list = %w[foobar bazquux banana]
AlgorithmFinder.stub(:available_algorithms).and_return(algorithm_list)

executable = Executable.run('-a')

expect(executable.exit_code).to eq 64
algorithm_list.each do |algorithm_name|
  expect(executable.error).to match(/#{algorithm_name}/)
end
```