Как я могу сделать такой же рабочий код без совпадения в ServerSpec - PullRequest
0 голосов
/ 21 февраля 2020
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 строку. Как я могу сделать такой же рабочий код без совпадения?

1 Ответ

0 голосов
/ 21 февраля 2020

В документах обратите внимание, что:

Вместо contain можно использовать its(:content) и любые стандартные средства сравнения rspe c. Совпадение 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, позволяющего Вы говорите, что одна строка идет в файле за другой.

...