Поскольку из вопроса не совсем ясно, я предполагаю, что вы настроили покрытие кода, добавив строку в ваш spec / spec_helper.rb, например:
at_exit { RSpec::Puppet::Coverage.report!(95) }
Отчет покрытия являетсяфункция, предоставляемая rspec-puppet.
Кроме того, я предположил, что у вас есть более одного файла спецификации, который содержит ваши тесты, и что они выполняются параллельно, вызывая задачу parallel_spec, которая предоставляется puppetlabs_spec_helper .
Проблема заключается в следующем:
Чтобы покрытие кода работало правильно, все задачи Rspec должны выполняться в одном и том же процессе (см. код здесь ).
Между тем для параллелизации должно быть несколько файлов спецификаций, которые выполняются параллельно в отдельных процессах.Это ограничение связано с библиотекой parallel_tests, которая используется задачей Parallel_spec.См. README .
Отчет о покрытии кода, следовательно, учитывает только ресурсы, которые были замечены внутри каждого процесса.
Пример:
class test {
file { '/tmp/foo':
ensure => file,
}
file { '/tmp/bar':
ensure => file,
}
}
Файл спецификаций 1:
require 'spec_helper'
describe 'test' do
it 'is expected to contain file /tmp/foo' do
is_expected.to contain_file('/tmp/foo').with({
'ensure' => 'file',
})
end
end
Файл спецификаций 2:
require 'spec_helper'
describe 'test' do
it 'is expected to contain file /tmp/bar' do
is_expected.to contain_file('/tmp/bar').with({
'ensure' => 'file',
})
end
end
spec_helper.rb:
require 'puppetlabs_spec_helper/module_spec_helper'
at_exit { RSpec::Puppet::Coverage.report!(95) }
Параллельно работать:
Total resources: 2
Touched resources: 1
Resource coverage: 50.00%
Untouched resources:
File[/tmp/bar]
Finished in 0.10445 seconds (files took 1.03 seconds to load)
1 example, 0 failures
Total resources: 2
Touched resources: 1
Resource coverage: 50.00%
Untouched resources:
File[/tmp/foo]
Must be at least 95% of code coverage (FAILED - 1)
4 examples, 0 failures
Took 1 seconds
Запуск без распараллеливания:
Finished in 0.12772 seconds (files took 1.01 seconds to load)
2 examples, 0 failures
Total resources: 2
Touched resources: 2
Resource coverage: 100.00%