Testando vários hosts com o mesmo teste usando serverspec

9

A seção Dicas avançadas do site Serverspec mostra um exemplo de teste de vários hosts com o mesmo conjunto de testes. Eu criei um exemplo próprio ( link ), mas há problemas.

O primeiro problema é que os testes param na primeira falha, em vez de prosseguir no lote e manter um registro. A segunda é que a saída de falha não indica em qual host a falha ocorreu. O que posso fazer para corrigir esses problemas e produzir um relatório final para todos os hosts?

    
por Neil H Watson 21.05.2015 в 14:50
fonte

1 resposta

2

Para o primeiro problema, ServerSpec por padrão executará todos os seus testes. No entanto, como você tem um loop que executa uma tarefa Rake para cada ambiente, o primeiro ambiente a ter uma falha faz com que a tarefa falhe e, portanto, uma exceção é gerada e o restante de suas tarefas não é executado.

Eu bifurquei sua essência e atualizei a tarefa Rake para cercá-la com um começo / rescue .

...
begin
  desc "Run serverspec to #{host}"
  RSpec::Core::RakeTask.new(host) do |t|
    ENV['TARGET_HOST'] = host
    t.pattern = "spec/base,cfengine3/*_spec.rb"
  end
rescue
end
...

Para o segundo problema, não parece que o ServerSpec mostrará em qual ambiente os testes estão sendo executados. Mas, como o Gist atualizado mostra que o host é definido no spec_helper.rb , podemos usá-lo para adicione uma configuração de RSpec que configura um after(:each) e gera apenas os erros host . As alterações de código relevantes estão em um fork da essência , mas basicamente você ' Você só precisará do snippet abaixo em spec_helper.rb :

RSpec.configure do |c|
  c.after(:each) do |example|
    if example.exception
       puts "Failed on #{host_run_on}"
    end
  end
end
    
por Arthur Maltson 25.05.2015 / 04:57
fonte