diff --git a/Userland/Tests/Kernel/TestKernelPledge.cpp b/Userland/Tests/Kernel/TestKernelPledge.cpp new file mode 100644 index 0000000000..02f9ce6f9c --- /dev/null +++ b/Userland/Tests/Kernel/TestKernelPledge.cpp @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2018-2021, the SerenityOS developers. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include + +TEST_CASE(test_nonexistent_pledge) +{ + auto res = pledge("testing123", "notthere"); + if (res >= 0) + FAIL("Pledging on existent promises should fail."); +} + +TEST_CASE(test_pledge_failures) +{ + auto res = pledge("stdio unix rpath", "stdio"); + if (res < 0) + FAIL("Initial pledge is expected to work."); + + res = pledge("stdio unix", "stdio unix"); + if (res >= 0) + FAIL("Additional execpromise \"unix\" should have failed"); + + res = pledge("stdio", "stdio"); + if (res < 0) + FAIL("Reducing promises is expected to work."); +} diff --git a/Userland/Tests/Kernel/pledge-test-failures.cpp b/Userland/Tests/Kernel/pledge-test-failures.cpp deleted file mode 100644 index e09e04f758..0000000000 --- a/Userland/Tests/Kernel/pledge-test-failures.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2018-2020, the SerenityOS developers. - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#include -#include - -int main() -{ - int res = pledge("stdio unix rpath", "stdio"); - if (res < 0) { - perror("pledge"); - return 1; - } - - res = pledge("stdio unix", "stdio unix"); - if (res >= 0) { - fprintf(stderr, "second pledge should have failed\n"); - return 1; - } - - res = pledge("stdio rpath", "stdio"); - if (res < 0) { - perror("pledge"); - return 1; - } - - printf("PASS\n"); - return 0; -}