Аруба: Команда «seedly-calculator» не найдена в переменной PATH - PullRequest
1 голос
/ 24 марта 2019

Итак, я пытаюсь запустить тест, но я получаю сообщение об ошибке:

Aruba::LaunchError:Command "seedly-calculator.rb" not found in PATH-variable

-seedly-calculator
 -bin
 -src
 -seedly-calculator.rb

Я попытался изменить путь в файле rake, но онне работаетМой seedly-calculator.rb файл находится в корневом каталоге.

require "rspec/core/rake_task"

namespace :spec do
  desc "Run the functional suite against the CLI"
  RSpec::Core::RakeTask.new(:functional, [] => [:set_path])

  task :set_path do
    project_bin_dir = File.join(File.dirname(File.expand_path(__FILE__)), '..', 'bin')
    ENV['PATH'] = project_bin_dir + ':'+ ENV['PATH']
  end
end

показывает ошибку вроде:

  Failure/Error: let(:command) { run "seedly-calculator.rb" }

  Aruba::LaunchError:
  Command "seedly-calculator.rb" not found in PATH-variable "/Users/bilaltariq/Desktop/seedly-calculator/functional_spec/bin:/Users/bilaltariq/Desktop/seedly-calculator/functional_spec/exe:/Users/bilaltariq/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/bin:/Users/bilaltariq/Desktop/seedly-calculator/functional_spec/../bin:/Users/bilaltariq/.rbenv/versions/2.6.2/bin:/usr/local/Cellar/rbenv/1.1.1/libexec:/Users/bilaltariq/.rbenv/shims:/Users/bilaltariq/.asdf/shims:/Users/bilaltariq/.asdf/bin:/usr/local/bin:/Users/bilaltariq/.bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin".

Я ожидаю, что он попадет в файл, чтобы я мог написать какой-нибудь тест.я делаю что-то не так?

enter image description here

require 'spec_helper'

RSpec.describe 'Command Validation', type: :aruba do
let(:command) { run "seedly-calculator.rb" }

it "wrong/missing arguments" do
  command.write("lookup\n")
  stop_all_commands
  expect(command.output).to end_with("Missing bank_name argument.\n")
end

end

seedly-calculator.rb:
#!/usr/bin/env ruby

# Complete bin/setup so that after it is
# run, ruby seedly-calculator.rb can be used to launch
# it.

# frozen_string_literal: true

require_relative './src/runner'

if !ARGV.length.zero?
  input = ARGV
  Runner.new.send('process_input', input)
else
  puts "Arguments required!."
end

1 Ответ

0 голосов
/ 24 марта 2019
Обновить

Чтобы запустить скрипт ruby ​​с помощью run, вам необходимо убедиться, что ваш скрипт ruby ​​является исполняемым и содержит шебанг, чтобы ваша система знала, что нужно запускать его с ruby. Вот пример из этого начального примера

#!/usr/bin/env ruby

file = ARGV[0]

if file.nil? || file.empty?
  abort "aruba-test-cli [file]: Filename is missing"
elsif !File.exist? file
  abort "aruba-test-cli [file]: File does not exist"
end

puts File.read(file).chomp

Так что в вашем случае вам нужно добавить это в первую строку вашего seedly-calculator.rb файла

#!/usr/bin/env ruby

Затем запустите это из командной строки, чтобы сделать его исполняемым.

chmod +x #!/usr/bin/env ruby

Я сделал простой пример, раздвоенный от приведенного выше. Посмотреть этот коммит

Соглашение Rspec заключается в том, что он должен соответствовать файловой структуре вашего проекта. Не рекомендуется устанавливать PATH вручную.

Rake-задачи обычно помещаются в папку задач, поэтому в корне проекта должна быть папка задач

my_project/tasks/something.rake

Тогда у вас должна быть папка spec, которая соответствует

my_project/spec/tasks/something_spec.rb

Тогда вы сможете избавиться от блока task :set_path do end и просто запустить спецификацию без этого.

У вас также должен быть Gemfile для загрузки ваших драгоценных камней, запустите bundle install, затем вызовите ваш тест с

bundle exec rspec spec/tasks/sometask_spec.rb
...