Overview
| Comment: | OFBlockTests: Exclude miscompiled tests on Win32 |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
10977992a87319a41822747fc5e6aaad |
| User & Date: | js on 2023-01-08 21:43:29 |
| Other Links: | manifest | tags |
Context
|
2023-01-10
| ||
| 14:09 | configure: Remove unnecessary AC_PROG_EGREP (check-in: 3bc5fc9461 user: js tags: trunk) | |
|
2023-01-08
| ||
| 21:43 | OFBlockTests: Exclude miscompiled tests on Win32 (check-in: 10977992a8 user: js tags: trunk) | |
|
2023-01-07
| ||
| 17:08 | OFDDPSocketTests: Handle EPROTONOSUPPORT (check-in: 9cc4481663 user: js tags: trunk) | |
Changes
Modified tests/OFBlockTests.m from [ce69ca37e0] to [0ba4bbb116].
| ︙ | ︙ | |||
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
extern struct objc_class _NSConcreteMallocBlock;
#elif defined(OF_APPLE_RUNTIME)
extern void *_NSConcreteStackBlock;
extern void *_NSConcreteGlobalBlock;
extern void *_NSConcreteMallocBlock;
#endif
static void (^globalBlock)(void) = ^ {};
static int
(^returnStackBlock(void))(void)
{
__block int i = 42;
return [Block_copy(^ int { return ++i; }) autorelease];
| > > > | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
extern struct objc_class _NSConcreteMallocBlock;
#elif defined(OF_APPLE_RUNTIME)
extern void *_NSConcreteStackBlock;
extern void *_NSConcreteGlobalBlock;
extern void *_NSConcreteMallocBlock;
#endif
/* Clang on Win32 generates broken code that crashes for global blocks. */
#if !defined(OF_WINDOWS) || !defined(OF_X86) || !defined(__clang__)
static void (^globalBlock)(void) = ^ {};
#endif
static int
(^returnStackBlock(void))(void)
{
__block int i = 42;
return [Block_copy(^ int { return ++i; }) autorelease];
|
| ︙ | ︙ | |||
65 66 67 68 69 70 71 |
void (^mallocBlock)(void);
int (^voidBlock)(void);
TEST(@"Class of stack block",
(Class)&_NSConcreteStackBlock == objc_getClass("OFStackBlock") &&
[stackBlock isKindOfClass: [OFBlock class]])
| | < < < < > > > > | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 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 |
void (^mallocBlock)(void);
int (^voidBlock)(void);
TEST(@"Class of stack block",
(Class)&_NSConcreteStackBlock == objc_getClass("OFStackBlock") &&
[stackBlock isKindOfClass: [OFBlock class]])
#if !defined(OF_WINDOWS) || !defined(OF_X86) || !defined(__clang__)
TEST(@"Class of global block",
(Class)&_NSConcreteGlobalBlock == objc_getClass("OFGlobalBlock") &&
[globalBlock isKindOfClass: [OFBlock class]])
#endif
TEST(@"Class of a malloc block",
(Class)&_NSConcreteMallocBlock == objc_getClass("OFMallocBlock"))
TEST(@"Copying a stack block",
(mallocBlock = [[stackBlock copy] autorelease]) &&
[mallocBlock class] == objc_getClass("OFMallocBlock") &&
[mallocBlock isKindOfClass: [OFBlock class]])
TEST(@"Copying a stack block and referencing its variable",
forwardTest() == 5)
TEST(@"Copying a stack block and using its copied variable",
(voidBlock = returnStackBlock()) && voidBlock() == 43 &&
voidBlock() == 44 && voidBlock() == 45)
#if !defined(OF_WINDOWS) || !defined(OF_X86) || !defined(__clang__)
TEST(@"Copying a global block",
(id)globalBlock == [[globalBlock copy] autorelease])
#endif
#ifndef __clang_analyzer__
TEST(@"Copying a malloc block",
(id)mallocBlock == [mallocBlock copy] &&
[mallocBlock retainCount] == 2)
#endif
TEST(@"Autorelease a stack block", R([stackBlock autorelease]))
#if !defined(OF_WINDOWS) || !defined(OF_X86) || !defined(__clang__)
TEST(@"Autorelease a global block", R([globalBlock autorelease]))
#endif
#ifndef __clang_analyzer__
TEST(@"Autorelease a malloc block", R([mallocBlock autorelease]))
#endif
objc_autoreleasePoolPop(pool);
}
@end
|