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 JonesTEST(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 JonesTEST(LlvmLibcAssert, Disabled) { 31b47c9f53SAlex Brachet EXPECT_EXITS([] { assert(0); }, 0); 32b47c9f53SAlex Brachet } 33