Overview
| Comment: | ObjFWTest: Add OTAssert() |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | objfwtest |
| Files: | files | file ages | folders |
| SHA3-256: |
5cd1585ae158abecf3e1485b3b852e0e |
| User & Date: | js on 2024-02-06 23:01:44 |
| Other Links: | branch diff | manifest | tags |
Context
|
2024-02-10
| ||
| 00:27 | Build ObjFWTest only as a static library (check-in: 1cd17a28dd user: js tags: objfwtest) | |
|
2024-02-06
| ||
| 23:01 | ObjFWTest: Add OTAssert() (check-in: 5cd1585ae1 user: js tags: objfwtest) | |
| 21:27 | Fix compiling ObjFWTest as .framework on macOS (check-in: e96d4372a0 user: js tags: objfwtest) | |
Changes
Modified src/test/Makefile from [20281734c6] to [7573a19b66].
1 2 3 4 5 6 7 8 9 10 11 |
include ../../extra.mk
DISTCLEAN = Info.plist
SHARED_LIB = ${OBJFWTEST_SHARED_LIB}
STATIC_LIB = ${OBJFWTEST_STATIC_LIB}
FRAMEWORK = ${OBJFWTEST_FRAMEWORK}
LIB_MAJOR = ${OBJFWTEST_LIB_MAJOR}
LIB_MINOR = ${OBJFWTEST_LIB_MINOR}
LIB_PATCH = ${OBJFWTEST_LIB_PATCH}
| > | | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
include ../../extra.mk
DISTCLEAN = Info.plist
SHARED_LIB = ${OBJFWTEST_SHARED_LIB}
STATIC_LIB = ${OBJFWTEST_STATIC_LIB}
FRAMEWORK = ${OBJFWTEST_FRAMEWORK}
LIB_MAJOR = ${OBJFWTEST_LIB_MAJOR}
LIB_MINOR = ${OBJFWTEST_LIB_MINOR}
LIB_PATCH = ${OBJFWTEST_LIB_PATCH}
SRCS = OTAssert.m \
OTTestCase.m
INCLUDES := ${SRCS:.m=.h} \
ObjFWTest.h
SRCS += OTAppDelegate.m \
OTAssertionFailedException.m
includesubdir = ObjFWTest
include ../../buildsys.mk
CPPFLAGS += -I. \
-I.. \
|
| ︙ | ︙ |
Modified src/test/OTAppDelegate.m from [36e6efa285] to [d77755a8a2].
| ︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#import "OTAppDelegate.h"
#import "OFSet.h"
#import "OFValue.h"
#import "OTTestCase.h"
OF_APPLICATION_DELEGATE(OTAppDelegate)
@implementation OTAppDelegate
- (OFSet OF_GENERIC(Class) *)testClasses
{
Class *classes = objc_copyClassList(NULL);
OFMutableSet *testClasses;
| > > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#import "OTAppDelegate.h"
#import "OFSet.h"
#import "OFValue.h"
#import "OTTestCase.h"
#import "OTAssertionFailedException.h"
OF_APPLICATION_DELEGATE(OTAppDelegate)
@implementation OTAppDelegate
- (OFSet OF_GENERIC(Class) *)testClasses
{
Class *classes = objc_copyClassList(NULL);
OFMutableSet *testClasses;
|
| ︙ | ︙ | |||
84 85 86 87 88 89 90 |
for (Class class in testClasses) {
for (OFValue *test in [self testsInClass: class]) {
void *pool = objc_autoreleasePoolPush();
OTTestCase *instance =
[[[class alloc] init] autorelease];
| > | | > > > > > > > > > | > > > > > > | 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
for (Class class in testClasses) {
for (OFValue *test in [self testsInClass: class]) {
void *pool = objc_autoreleasePoolPush();
OTTestCase *instance =
[[[class alloc] init] autorelease];
@try {
[instance setUp];
[instance performSelector: test.pointerValue];
} @catch (OTAssertionFailedException *e) {
/*
* If an assertion during -[setUp], don't run
* the test.
* If an assertion fails during a test, abort
* the test.
*/
}
@try {
[instance tearDown];
} @catch (OTAssertionFailedException *e) {
/*
* If an assertion fails during -[tearDown],
* abort the tear down.
*/
}
objc_autoreleasePoolPop(pool);
}
}
[OFApplication terminate];
}
@end
|
Added src/test/OTAssert.h version [43ca8fc8fa].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/*
* Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#define OTAssert(cond, ...) \
OTAssertImpl(self, _cmd, cond, @#cond, @__FILE__, __LINE__, \
## __VA_ARGS__, nil)
#define OTAssertTrue(cond, ...) OTAssert(cond == true, ## __VA_ARGS__)
#define OTAssertFalse(cond, ...) OTAssert(cond == false, ## __VA_ARGS__)
#define OTAssertEqual(a, b, ...) OTAssert(a == b, ## __VA_ARGS__)
#define OTAssertNotEqual(a, b, ...) OTAssert(a != b, ## __VA_ARGS__)
#define OTAssertEqualObjects(a, b, ...) OTAssert([a isEqual: b], ## __VA_ARGS__)
#define OTAssertNotEqualObjects(a, b, ...) \
OTAssert(![a isEqual: b], ## __VA_ARGS__)
#ifdef __cplusplus
extern "C" {
#endif
extern void OTAssertImpl(id testCase, SEL test, bool condition, OFString *check,
OFString *file, size_t line, ...);
#ifdef __cplusplus
}
#endif
|
Added src/test/OTAssert.m version [8c54d0fe0f].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
/*
* Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
#import "OFColor.h"
#import "OFStdIOStream.h"
#import "OFString.h"
#import "OTAssertionFailedException.h"
void
OTAssertImpl(id testCase, SEL test, bool condition, OFString *check,
OFString *file, size_t line, ...)
{
void *pool;
va_list arguments;
OFConstantString *format;
OFString *message = nil;
if (condition)
return;
pool = objc_autoreleasePoolPush();
va_start(arguments, line);
format = va_arg(arguments, OFConstantString *);
if (format != nil)
message = [[[OFString alloc]
initWithFormat: format
arguments: arguments] autorelease];
va_end(arguments);
[OFStdErr setForegroundColor: [OFColor red]];
[OFStdErr writeFormat: @"-[%@ %s]: Condition failed: %@%@%@\n",
[testCase className], sel_getName(test),
check, (message != nil ? @": " : @""),
(message != nil ? message : @"")];
[OFStdErr reset];
objc_autoreleasePoolPop(pool);
@throw [OTAssertionFailedException exception];
}
|
Added src/test/OTAssertionFailedException.h version [ae3f64510c].
> > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /* * Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #import "OFException.h" @interface OTAssertionFailedException: OFException @end |
Added src/test/OTAssertionFailedException.m version [f90fe6b716].
> > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* * Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #include "config.h" #import "OTAssertionFailedException.h" @implementation OTAssertionFailedException @end |
Modified src/test/OTTestCase.h from [65a29e60d8] to [2add704de5].
| ︙ | ︙ | |||
17 18 19 20 21 22 23 | # import "OFObject.h" #else # import <ObjFW/OFObject.h> #endif OF_ASSUME_NONNULL_BEGIN | < < < | 17 18 19 20 21 22 23 24 25 26 27 28 29 | # import "OFObject.h" #else # import <ObjFW/OFObject.h> #endif OF_ASSUME_NONNULL_BEGIN @interface OTTestCase: OFObject - (void)setUp; - (void)tearDown; @end OF_ASSUME_NONNULL_END |
Modified src/test/ObjFWTest.h from [92263f43ba] to [c6fa64803a].
| ︙ | ︙ | |||
10 11 12 13 14 15 16 | * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #import "OTTestCase.h" | > | 10 11 12 13 14 15 16 17 | * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #import "OTTestCase.h" #import "OTAssert.h" |