Я пытаюсь написать базовую проверку изображения докеры Ubuntu 16.04. Моя тестовая среда - Ubuntu 16.04, и я установил пакет ruby-serverspec
.Тест Dockerfile требует директивы, неспособной найти правильный модуль
require "serverspec"
require "docker_image"
describe "Dockerfile" do
before(:all) do
image = Docker::Image.build_from_dir('..')
set :os, family: :debian
set :backend, :docker
set :docker_image, image.id
end
it "installs the right version of Ubuntu" do
expect(os_version).to include("Ubuntu 14")
end
def os_version
command("lsb_release -a").stdout
end
end
Это сознательно неудачу тест на данный момент, так как он проверяет Ubuntu 14, но она даже не доходя до сбоя.
$ rspec /test/spec/localhost/my_spec.rb
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- docker_image (LoadError)
from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /test/spec/localhost/my_spec.rb:4:in `<top (required)>'
from /usr/lib/ruby/vendor_ruby/rspec/core/configuration.rb:1361:in `load'
from /usr/lib/ruby/vendor_ruby/rspec/core/configuration.rb:1361:in `block in load_spec_files'
from /usr/lib/ruby/vendor_ruby/rspec/core/configuration.rb:1359:in `each'
from /usr/lib/ruby/vendor_ruby/rspec/core/configuration.rb:1359:in `load_spec_files'
from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:106:in `setup'
from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:92:in `run'
from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:78:in `run'
from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:45:in `invoke'
from /usr/bin/rspec:4:in `<main>'
Я не знаю, как правильно требовать модуль Docker::Image
класса. Путь поиска по-прежнему является черным искусством для меня. Как я могу заставить этот тест потерпеть неудачу, как ожидалось?
В этом коде вы вообще не используете serverpec. Вероятно, вы должны удалить его. Однако вы используете specinfra для бэкэнда докеров. –