2016-06-13 1 views
3

Мое требование состоит в том, что мне нужно запустить утилиту, установленную другим пользователем, и я должен проверить вывод, возвращенный с этого сеанса, и проверить его. Пример:Как использовать Serverspec для проверки утилиты, установленной у другого пользователя?

  • Я установил Java, как srijava пользователя
  • Сейчас в Serverspec я написал команду, чтобы проверить версию Java (Предположим, что java -version работает только в этом пользователя, а не как корень).
  • если я использую su srijava, то я не получаю вывод, возвращенный обратно в корневую сессию, и тест завершается с ошибкой.
  • Если я бегу без su srijava тогда моя утилита выдаст ошибку , что пользователь не SriJava

Код с su:

describe command('su srijava ; cd /app/java; ./java --version') do 
    its(:stdout) { should contain('1.7') } 
end 

код без su:

describe command('cd /app/java; ./java --version') do 
    its(:stdout) { should contain('1.7') } 
end 

ответ

1
describe command("su -c '/app/java/java --version' srijava") do 
    its(:stdout) { should contain('1.7') } 
end 

FYI вы используете RSpec 2 и скоро устареваете синтаксис Serverspec для вашего помощника. Рассмотрите вопрос о будущей изоляции с помощью:

describe command("su -c '/app/java/java --version' srijava") do 
    its(:stdout) { is_expected.to match(/1\.7/) } 
end 
+0

Если приемник не является устаревшим, AFAIK, это 'object.should', который был взломан. – coderanger

+0

@coderanger Я ничего не говорил об устаревших вещах. Что вы имеете в виду? –

+0

Вы сказали «Rspec 2» и «устарели», я думаю, потому что вы путаете две формы использования 'should'. Получатель-приемник по-прежнему присутствует в Rspec 3 и не устарел (и используется во всех примерах Serverspec). Таким образом, вы должны удалить эту часть ответа, поскольку она неверна :) – coderanger

Смежные вопросы