首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在chef inspec中实现跳过条件

在chef inspec中实现跳过条件
EN

Stack Overflow用户
提问于 2021-08-21 05:34:39
回答 1查看 289关注 0票数 0

我正在尝试达到这样的条件:如果组存在于服务器中,它应该通过&如果不存在,它应该跳过,并且不应该显示为失败

代码语言:javascript
复制
describe.one do 
  describe 'testgroup'  do 
    expect(bash("ipa group-show testgroup").exit_status).to eq 0 
    it { should exist }
  end 

  describe 'testgroup' do 
    expect(bash("ipa group-show testgroup").exit_status).to_not eq 0 
    it { should_not exist }
  end
end 

使用以下命令执行后:

代码语言:javascript
复制
# inspec exec testgroup_test.rb

它抛出错误输出如下:

代码语言:javascript
复制
undefined method 'bash' for Rspec::ExampleGroups (No method Error). 

请指教,如何在inspec中实现这样的条件测试。

EN

回答 1

Stack Overflow用户

发布于 2021-08-21 10:29:14

要在解决特定于环境的测试之前首先解决错误消息,测试命令结果的正确方法是使用command resource

让我们考虑一个例子,当我想要在命令成功执行时通过测试,否则失败:

代码语言:javascript
复制
describe command('ipa group-show testgroup') do
  its('exit_status') { should eq 0 }
end

现在,假设我们有两个环境- "dev“和"qa”。我们可以使用inputs有条件地执行测试。

举个例子:我们可以定义一个名为env的输入。在"dev“环境中,此命令可能不需要成功。而在"qa“中,它应该成功。

代码语言:javascript
复制
# In "dev" any return code from command is ok
if input('env') == 'dev'
  control "ipa-group-dev" do
    describe command('ipa group-show testgroup') do
      its('exit_status') { should be >= 0 }
    end
  end
end

# In "qa" this command must succeed
if input('env') == 'qa'
  control "ipa-group-qa" do
    describe command('ipa group-show testgroup') do
      its('exit_status') { should eq 0 }
    end
  end
end

我们可以通过将env的值作为输入来运行测试,例如:

代码语言:javascript
复制
inspec exec testgroup_test.rb --input env=dev
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68870405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档