0
describe file('/etc/checkfiles/server.cfg') do
  its(:content) {
    should contain("\/usr\/lib64\/nagios\/plugins\/check_procs -w 150 -c 200")
      .after(/command\[check_total_procs\]\=/)
  }
end

我正在使用包含此代码的匹配器,但它将被淘汰。“server.cfg”中有这么多行,我只想检查 1 行。如何在不包含匹配器的情况下制作相同的工作代码?

4

1 回答 1

0

文档指出:

而不是contain,您可以使用its(:content)和 任何标准的 rspec 匹配器。匹配器contain将被淘汰。

我倾向于说维护者可能没有正确考虑此更改,您可能会向他建议实际上不应弃用此功能。

尽管如此,使用正则表达式很容易解决这个问题:

describe file('/etc/checkfiles/server.cfg') do
  its(:content) {
    should match /command\[check_total_procs].*check_procs -w 150 -c 200/m
  }
end

使用多行正则表达式的关键见解//m,允许您说一个字符串在文件中一个接一个地出现。

于 2020-02-21T15:13:37.423 回答