如何覆盖chefspecs资源以编程方式添加到run_context

时间:2015-04-24 17:31:58

标签: ruby rspec chef chefspec

我的配方中有以下代码,它运行返回用户的bash脚本(root除外)。每行1个用户。

ruby_block "Delete users" do
   action  :run
   block do
      users = Mixlib::ShellOut.new("whatever command with lines containing users").run_command.stdout
      users.each_line do |user|
         ex = Chef::Resource::Execute.new("Removing User: #{user}", run_context)
         ex.command "remove user"
         ex.run_action(:run)
      end
   end
end

现在我设法模仿shell Here,但我无法弄清楚为什么以及是否有可能期望这些资源。例如,如果命令返回

user1
user2

然后以下工作

allow(shellout).to receive("whatever command with lines containing users").and_return("user1")
expect(chef_run).to run_ruby_block('Delete users')

但如果我添加以下

expect(chef_run).to run_execute('Removing User: user1')

它会失败,而我无法涵盖的任何资源都没有。 (我正在使用Chef :: Coverage所以我知道)。 感谢

0 个答案:

没有答案