Respond on exceptions thrown when on main thread

Summary: Changes FlipperPerformBlockOnMainThread to take a responder, and respond with an error if an exception is caught.

Reviewed By: passy

Differential Revision: D14066982

fbshipit-source-id: 70135bf58171684bcd013c66d9deec366aed36f5
This commit is contained in:
John Knox
2019-02-14 06:21:28 -08:00
committed by Facebook Github Bot
parent c0b5f10693
commit 9b6db1f482
4 changed files with 95 additions and 18 deletions

View File

@@ -0,0 +1,62 @@
/*
* Copyright (c) 2018-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the LICENSE
* file in the root directory of this source tree.
*
*/
#import <XCTest/XCTest.h>
#if FB_SONARKIT_ENABLED
#import <FlipperKit/FlipperPlugin.h>
#import <FlipperKit/FlipperClient.h>
#import <FlipperKit/FlipperClient+Testing.h>
#import <FlipperKit/FlipperConnection.h>
#import <FlipperKitTestUtils/BlockBasedSonarPlugin.h>
#import <FlipperKitTestUtils/FlipperResponderMock.h>
#import <FlipperTestLib/FlipperConnectionManagerMock.h>
#import <FlipperTestLib/FlipperPluginMock.h>
#import <folly/json.h>
#import <vector>
#import "FlipperPlugin.h"
@interface FlipperUtilTests : XCTestCase
@end
@implementation FlipperUtilTests {
FlipperResponderMock *responder;
}
- (void)setUp {
responder = [FlipperResponderMock new];
}
- (void)testPerformOnMainThreadSuccess {
FlipperPerformBlockOnMainThread(^{}, responder);
NSAssert([responder.successes count] == 0, @"No successes are output");
NSAssert([responder.errors count] == 0, @"No errors are output");
}
- (void)testPerformOnMainThreadStdException {
FlipperPerformBlockOnMainThread(^{
throw new std::exception();
}, responder);
NSAssert([responder.successes count] == 0, @"No successes are output");
NSAssert([responder.errors count] == 1, @"1 error is output");
}
- (void)testPerformOnMainThreadNSException {
FlipperPerformBlockOnMainThread(^{
NSArray *a = [NSArray init];
[a objectAtIndex:1];
}, responder);
NSAssert([responder.successes count] == 0, @"No successes are output");
NSAssert([responder.errors count] == 1, @"1 error is output");
}
@end
#endif