CTest で特定のテストを sudo 経由で実行する


スーパーユーザー権限が前提の機能をテストしたいときに。
元ネタはここ。

前準備として次の内容のスクリプトを作って chmod で実行可能にしておく。
場所は ${CMAKE_SOURCE_DIR}/cmake/sudo.sh あたりに。

#!/bin/sh

/usr/bin/sudo $*

で、 CTest の設定時に次のようにする。

add_executable(my-test
    main.cpp
)
add_test(
    NAME MyTest
    COMMAND ${CMAKE_SOURCE_DIR}/cmake/sudo.sh $<TARGET_FILE:my-test>
)

こうすると ctest したときに sudo 経由で実行してくれる。
sudoers でパスワードを要求するようにしてるともちろんパスワード聞かれるので都度いれるかたちで。