GNU make: инвертировать успех подпроцесса? - PullRequest
5 голосов
/ 10 октября 2009

У меня есть файл make для скриптовой системы, с большим количеством тестов, которые должны пройти. Каждый тест - это отдельный вызов скриптового приложения:

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

Что хорошо. У меня также есть несколько подобных тестов, которые должны вернуть неудачу. Я знаю, что - будет игнорировать статус возврата, но должно быть что-то простое, чтобы инвертировать статус возврата, чтобы я мог запустить

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

Ответы [ 2 ]

8 голосов
/ 10 октября 2009

Используйте команду !.

echo This returns success
! echo This returns failure
1 голос
/ 10 ноября 2010

Предположим, вы хотите убедиться, что состояние выхода "bin / kin test5.kin" равно 5. Затем просто напишите это:

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

Более подробные тесты см. В «справочном тесте» и «тесте человека».

Примечание. Я стараюсь избегать восклицательных знаков, поскольку обычно их невозможно скопировать / вставить в интерактивную оболочку (поскольку она ищет историю).

...