GNU Make: Invertendo o sucesso do subprocesso?
Pergunta
Eu tenho um arquivo para um sistema com script, com muitos testes que devem passar. Cada teste é uma chamada separada para o aplicativo de script:
#----------------------------------------------------------------------------
# run test scripts in the module::test
#----------------------------------------------------------------------------
scripted_tests: bin/kin modules/test/actor_equality.kin modules/test/actor_fibre.kin ...
bin/kin modules/test/actor_equality.kin
bin/kin modules/test/actor_fibre.kin
...
O que é bom. Eu também tenho alguns testes semelhantes que devem retornar a falha. eu sei que -
irá ignorar o status de retorno, mas deve haver algo simples para inverter o status de retorno para que eu possa executar
#----------------------------------------------------------------------------
# run test scripts in the module::test::errors
#----------------------------------------------------------------------------
inverse_tests: bin/kin modules/test/error/bad_function.kin ...
not bin/kin modules/test/error/bad_function.kin
...
Solução
Use o !
comando.
echo This returns success
! echo This returns failure
Outras dicas
Suponha que você queira ter certeza de que o status de saída de "Bin/Kin Test5.kin" é 5. Então escreva isso:
run-test5:
bin/kin test5.bin; test $$? = 5
Para testes mais elaborados, consulte 'Teste de ajuda' e 'teste de homem'.
NOTA: Costumo evitar marcas de exclamação, porque é normalmente impossível copiá -las/colá -las em um shell interativo (uma vez que pesquisa a história).