Ruby: блок восстановления не работает должным образом

Ниже begin-rescue блокировать в hooks.rb не работает должным образом. Когда есть доступный каталог результатов, он отправляется rescue блок и когда это не так идет begin блок. Звучит смешно, но это то, что происходит.

Теперь, когда я использую то же самое begin-rescue в отдельном файле ruby ​​он работает как шарм. Запускается begin когда каталог доступен и работает rescue когда это не так.

Расскажите о каталоге "results", который появляется после завершения теста автоматически, потому что я использую pretty_face драгоценный камень. Он имеет несколько подкаталогов, таких как "изображения" и "таблицы стилей".

hooks.rb

require 'fileutils'


def delete_results
  FileUtils.remove_dir(File.join(File.absolute_path('../..', File.dirname(__FILE__)),"results"))
end


  Before do
    begin
      delete_results
    rescue
      puts "cant delete results dir or it doesnt exist"
    end
  end

Я также попробовал это в отдельном файле ruby, который всегда работает:delete_dir.rb

require 'fileutils'

begin
  FileUtils.remove_dir(File.join(File.absolute_path('../..', File.dirname(__FILE__)),"results"))
rescue
  puts "cant delete results dir or it doesnt exist"
end

Ошибка, когда каталог существует, но begin блок в hooks.rb не работает

File exists - results\images (Errno::EEXIST)
C:/Ruby193/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir'
C:/Ruby193/lib/ruby/1.9.1/fileutils.rb:247:in `fu_mkdir'
C:/Ruby193/lib/ruby/1.9.1/fileutils.rb:221:in `block (2 levels) in mkdir_p'
C:/Ruby193/lib/ruby/1.9.1/fileutils.rb:219:in `reverse_each'
C:/Ruby193/lib/ruby/1.9.1/fileutils.rb:219:in `block in mkdir_p'
C:/Ruby193/lib/ruby/1.9.1/fileutils.rb:205:in `each'
C:/Ruby193/lib/ruby/1.9.1/fileutils.rb:205:in `mkdir_p'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/pretty_face-0.10.3/lib/pretty_face/formatter/html.rb:188:in `make_directory'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/pretty_face-0.10.3/lib/pretty_face/formatter/html.rb:182:in `make_output_directories'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/pretty_face-0.10.3/lib/pretty_face/formatter/html.rb:63:in `before_features'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.3.17/lib/cucumber/ast/tree_walker.rb:181:in `block in send_to_all'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.3.17/lib/cucumber/ast/tree_walker.rb:179:in `each'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.3.17/lib/cucumber/ast/tree_walker.rb:179:in `send_to_all'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.3.17/lib/cucumber/ast/tree_walker.rb:169:in `broadcast'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.3.17/lib/cucumber/ast/tree_walker.rb:20:in `visit_features'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.3.17/lib/cucumber/runtime.rb:49:in `run!'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.3.17/lib/cucumber/cli/main.rb:47:in `execute!'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.3.17/bin/cucumber:13:in `<top (required)>'
C:/Ruby193/bin/cucumber:23:in `load'
C:/Ruby193/bin/cucumber:23:in `<top (required)>'
-e:1:in `load'
-e:1:in `<main>'

Process finished with exit code 1
Empty test suite.

Ошибка возникает из-за того, что по какой-то причине (которую я не знаю) она не может удалить каталог, потому что подкаталог "images" и "stylesheets" присутствовал в директории "results". Поэтому я удалил их вручную, чтобы begin блокировать работу. Теперь выше ошибки нет, и она пропускает begin блок и идет в rescue заблокировать и вывести "невозможно удалить результаты dir или он не существует", хотя "результаты" dir есть.

0 ответов

Другие вопросы по тегам