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