sdkman-for-fish/test/features/step_definitions/completion.rb
Raphael Reitzig 479fa1e541 Account for fuzzy completions.
Introduced in Fish 3.1
cf. https://github.com/fish-shell/fish-shell/issues/5467

Needed to make tests less strict.
Instead of checking the exact list of matches,
we require the expected ones and exclude some others.
2020-05-26 00:11:06 +02:00

31 lines
795 B
Ruby

# frozen_string_literal: true
require 'open3'
module CompletionHelper
def complete(cmd)
completions = run_fish_command("complete -C\"sdk #{cmd}\"")
completions.split("\n") \
.map { |line| line.split(/\s+/)[0].strip }
# TODO: Why do we get duplicates in the Docker container?
end
end
World CompletionHelper
When('the user enters {string} into the prompt') do |cmd|
@response = complete(cmd.gsub(/["']/, ''))
end
Then('completion should propose {string}') do |completions|
completions = completions.split(',').map(&:strip)
expect(@response).to include(*completions)
end
Then('completion should not propose {patterns}') do |exclusions_patterns|
exclusions_patterns.each do |p|
@response.each do |r|
expect(r).not_to match(p)
end
end
end