TestSuite: Hijack the ASSERT macros during unit tests.

Instead of aborting the program when we hit an assertion, just print a
message and keep going.

This allows us to write tests that provoke assertions on purpose.
This commit is contained in:
Andreas Kling 2019-08-02 09:23:03 +02:00
parent 31793b8f3a
commit 6560116b67
7 changed files with 22 additions and 2 deletions

View file

@ -1,5 +1,7 @@
#pragma once
#ifndef AK_TEST_SUITE
#ifdef KERNEL
# include <Kernel/Assertions.h>
#else
@ -11,6 +13,8 @@
# endif
#endif
#endif
namespace AK {
inline void not_implemented() { ASSERT(false); }

View file

@ -1,10 +1,21 @@
#pragma once
#define AK_TEST_SUITE
#include <stdio.h>
#define ASSERT(x) \
if (!(x)) { \
fprintf(stderr, "\033[33;1mASSERT\033[0m: " #x "\n"); \
}
#define ASSERT_NOT_REACHED() fprintf(stderr, "\033[31;1mASSERT_NOT_REACHED\033[0m\n");
#define RELEASE_ASSERT ASSERT
#include "AKString.h"
#include "Function.h"
#include "NonnullRefPtrVector.h"
#include <chrono>
#include <stdio.h>
namespace AK {

View file

@ -1,4 +1,5 @@
#include <AK/TestSuite.h>
#include <AK/AKString.h>
#include <AK/HashMap.h>

View file

@ -1,4 +1,5 @@
#include <AK/TestSuite.h>
#include <AK/AKString.h>
#include <AK/HashMap.h>
#include <AK/JsonArray.h>

View file

@ -1,4 +1,5 @@
#include <AK/TestSuite.h>
#include <AK/AKString.h>
#include <AK/Queue.h>

View file

@ -1,4 +1,5 @@
#include <AK/TestSuite.h>
#include <AK/AKString.h>
TEST_CASE(construct_empty)

View file

@ -1,6 +1,7 @@
#include <AK/TestSuite.h>
#include <AK/AKString.h>
#include <AK/OwnPtr.h>
#include <AK/TestSuite.h>
#include <AK/Vector.h>
TEST_CASE(construct)