Chef Exec Rspec Error: поднять ArgumentError (Ошибка вне примеров)

Я получаю эту ошибку недавно для пары кулинарных книг, которые я пытаюсь проверить с помощью "chef exec rspec":

An error occurred in a `before(:suite)` hook.
Failure/Error: raise ArgumentError, "#{str.inspect} is not an octal string"

ArgumentError:
  "\x80\x00\x00\x00\e\xC4dx" is not an octal string
# /opt/chefdk/embedded/lib/ruby/site_ruby/2.4.0/rubygems/package/tar_header.rb:128:in `strict_oct'
# /opt/chefdk/embedded/lib/ruby/site_ruby/2.4.0/rubygems/package/tar_header.rb:108:in `from'
# /opt/chefdk/embedded/lib/ruby/site_ruby/2.4.0/rubygems/package/tar_reader.rb:59:in `each'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/mixlib-archive-0.4.1/lib/mixlib/archive/tar.rb:27:in `block in extract'
# /opt/chefdk/embedded/lib/ruby/site_ruby/2.4.0/rubygems/package/tar_reader.rb:29:in `new'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/mixlib-archive-0.4.1/lib/mixlib/archive/tar.rb:118:in `reader'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/mixlib-archive-0.4.1/lib/mixlib/archive/tar.rb:25:in `extract'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/mixlib-archive-0.4.1/lib/mixlib/archive.rb:33:in `extract'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/berkshelf-6.3.1/lib/berkshelf/community_rest.rb:16:in `unpack'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/berkshelf-6.3.1/lib/berkshelf/community_rest.rb:102:in `download'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/berkshelf-6.3.1/lib/berkshelf/downloader.rb:70:in `try_download'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/berkshelf-6.3.1/lib/berkshelf/downloader.rb:40:in `block in download'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/berkshelf-6.3.1/lib/berkshelf/downloader.rb:39:in `each'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/berkshelf-6.3.1/lib/berkshelf/downloader.rb:39:in `download'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/berkshelf-6.3.1/lib/berkshelf/installer.rb:108:in `install'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/berkshelf-6.3.1/lib/berkshelf/installer.rb:181:in `block (2 levels) in install_from_universe'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/safe_task_executor.rb:24:in `block in execute'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/mri_lockable_object.rb:38:in `block in synchronize'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/mri_lockable_object.rb:38:in `synchronize'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/mri_lockable_object.rb:38:in `synchronize'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/safe_task_executor.rb:19:in `execute'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/ivar.rb:170:in `safe_execute'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/future.rb:52:in `block in execute'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
# /opt/chefdk/embedded/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
# 
#   Showing full backtrace because every line was filtered out.
#   See docs for RSpec::Configuration#backtrace_exclusion_patterns and
#   RSpec::Configuration#backtrace_inclusion_patterns for more information.

Finished in 1.36 seconds (files took 7.16 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples

Это также мешает ему распознавать любые написанные модульные тесты (как вы можете видеть, он распознает 0 примеров). Когда я запускаю chef exec rspec для любых других кулинарных книг, которые я написал в прошлом, у меня не возникает этой проблемы. Я заметил, что он отслеживает проблему до chefdk на моем Mac, но я везде исследовал эту проблему и ничего не могу найти в ней, и я не уверен, что эта ошибка пытается мне сказать. Я новичок в Chef, поэтому, если кто-нибудь может направить меня в правильном направлении или сказать, что может означать эта ошибка, это будет хорошим началом.

Я заметил одну закономерность: две кулинарные книги, с которыми у меня возникла эта проблема, были клонированы по https, а не по ssh. Я понятия не имею, имеет ли это какое-то отношение к этому или это просто совпадение.

Я также заметил, что всякий раз, когда я комментирую «требуется помощник спецификаций» в файлах спецификаций для поваренных книг, эта ошибка исчезает и начинает распознавать модульные тесты, записанные в файле спецификации. Но это не долгосрочное решение, и я не уверен, правильно ли оно тестирует примеры.

Я также обновил Ruby на своем Mac до версии 2.4.1.

Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
0
0
510
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Обновление: я запускал ChefDK 2.5.3 и обновился до 3.0.36, и проблема исчезла. Я не знаю, была ли проблема совместимости или файлы были испорчены, и новая установка решила проблему.

Ответ принят как подходящий

Это не имеет ничего общего с rspec или даже chefspec, но с патчем в rubygems 2.7.6, который сломал berkshelf и был рассмотрен в mixlib-archive:

https://github.com/berkshelf/berkshelf/issues/1744

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