xref: /llvm-project/libc/test/src/assert/assert_test.cpp (revision b6bc9d72f65a5086f310f321e969d96e9a559e75)
166d00febSPaula Toth //===-- Unittests for assert ----------------------------------------------===//
2b47c9f53SAlex Brachet //
3b47c9f53SAlex Brachet // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4b47c9f53SAlex Brachet // See https://llvm.org/LICENSE.txt for license information.
5b47c9f53SAlex Brachet // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6b47c9f53SAlex Brachet //
7b47c9f53SAlex Brachet //===----------------------------------------------------------------------===//
8b47c9f53SAlex Brachet 
9b47c9f53SAlex Brachet #undef NDEBUG
10b47c9f53SAlex Brachet #include "src/assert/assert.h"
11af1315c2SSiva Chandra Reddy #include "test/UnitTest/Test.h"
12b47c9f53SAlex Brachet 
13b47c9f53SAlex Brachet extern "C" int close(int);
14b47c9f53SAlex Brachet 
TEST(LlvmLibcAssert,Enabled)151df0dbfcSMichael Jones TEST(LlvmLibcAssert, Enabled) {
16b47c9f53SAlex Brachet   // -1 matches against any signal, which is necessary for now until
17*b6bc9d72SGuillaume Chatelet   // LIBC_NAMESPACE::abort() unblocks SIGABRT. Close standard error for the
18b47c9f53SAlex Brachet   // child process so we don't print the assertion failure message.
19b47c9f53SAlex Brachet   EXPECT_DEATH(
20b47c9f53SAlex Brachet       [] {
21b47c9f53SAlex Brachet         close(2);
22b47c9f53SAlex Brachet         assert(0);
23b47c9f53SAlex Brachet       },
24c73c23f2SMichael Jones       WITH_SIGNAL(-1));
25b47c9f53SAlex Brachet }
26b47c9f53SAlex Brachet 
27b47c9f53SAlex Brachet #define NDEBUG
28b47c9f53SAlex Brachet #include "src/assert/assert.h"
29b47c9f53SAlex Brachet 
TEST(LlvmLibcAssert,Disabled)301df0dbfcSMichael Jones TEST(LlvmLibcAssert, Disabled) {
31b47c9f53SAlex Brachet   EXPECT_EXITS([] { assert(0); }, 0);
32b47c9f53SAlex Brachet }
33