Aruba: команда «seedly-calculator» не найдена в переменной PATH

#ruby #rspec #aruba

#ruby #rspec #aruba

Вопрос:

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

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".
  

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

введите описание изображения здесь

 require 'spec_helper'

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

it "wrong/missing arguments" do
  command.write("lookupn")
  stop_all_commands
  expect(command.output).to end_with("Missing bank_name argument.n")
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. Можете ли вы опубликовать то, что находится в seedly-calculator.rb ?

2. добавлен мой seedly-calculator.rb

Ответ №1:

Обновить

Чтобы запустить скрипт ruby с помощью run , вам нужно убедиться, что ваш скрипт ruby является исполняемым и содержит shebang, чтобы ваша система знала, что нужно запускать его с 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 обычно помещаются в папку tasks, поэтому у вас должна быть папка tasks в корне проекта

 my_project/tasks/something.rake
  

Тогда у вас должна быть папка спецификации, соответствующая

 my_project/spec/tasks/something_spec.rb
  

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

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

 bundle exec rspec spec/tasks/sometask_spec.rb
  

Комментарии:

1.так мне все еще нужны эти project_bin_dir =File.join(File.dirname(File.expand_path(__FILE__)), 'seedly-calculator.rb') ENV['PATH'] = project_bin_dir ':' ENV['PATH']

2. @NickBb нет, ты, наверное, можешь удалить весь этот мусор

3. @locostenycoder поэтому я удалил ее оттуда и добавил bundle exec rspec в моем исполнении, но я все еще получаю ту же ошибку aruba Aruba::LaunchError: Command "seedly-calculator.rb" not found in PATH-variable

4. @locostenycoder очень смущен. У меня все функциональные возможности работают. и rspec работает, когда мой файл находится внутри папки bin. но я хочу, чтобы она была снаружи, и каждый раз, когда я добавляю ее снаружи, она показывает мне ошибку, которая не может найти такой файл.

5. т.е. там в любом случае я могу отправить вам личное сообщение!