2009-10-09 7 views
5

Ho un file make per un sistema con script, con molti test che dovrebbero passare. Ogni test è una chiamata separata all'applicazione scripting:Marca GNU: invertendo il processo secondario con successo?

#---------------------------------------------------------------------------- 
# 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 
    ... 

Che va bene. Ho anche alcuni test simili che dovrebbero restituire il fallimento. So che - ignorerà lo stato di ritorno, ma ci deve essere qualcosa di semplice per invertire lo stato di ritorno in modo da poter correre

#---------------------------------------------------------------------------- 
# 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 
    ... 

risposta

8

utilizzare il comando !.

echo This returns success 
! echo This returns failure 
+1

In particolare, è "! Bin/kin" piuttosto che "! Bin/kin", che ho provato e ha ricevuto un errore –

+0

Molto utile quando si utilizza grep per verificare la presenza di un messaggio di errore nell'output del log di compilazione. '! grep output.log -i "msg di errore" ' – shuckc

1

Si supponga di voler fare in modo che lo stato di uscita di "bin/parente test5.kin" è 5. Poi basta scrivere questo:

run-test5: 
    bin/kin test5.bin; test $$? = 5 

Per più elaborati test vedere 'aiuto di prova' e "test uomo".

Nota: tendo ad evitare i punti esclamativi perché è in genere impossibile copiarli/incollarli in una shell interattiva (poiché ricerca la cronologia).

Problemi correlati