mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: ## Changelog <!-- Help reviewers and the release process by writing your own changelog entry. For an example, see: https://github.com/facebook/react-native/wiki/Changelog --> This PR aims to migrate the RNTester App to `packages` directory. But is currently, open to inspect the CI issues and resolve the merge conflicts. Currently done - Working on iOS - Working on Android - Detox Tests working on iOS Need to work on - Errors generated by the CI builds [General] [Changed] - Migrated the RNTester App to the packages directory. Pull Request resolved: https://github.com/facebook/react-native/pull/29567 Test Plan: It runs on both ios and android for now and the detox iOS builds are working. Reviewed By: cpojer Differential Revision: D23034761 Pulled By: rickhanlonii fbshipit-source-id: e04bb06e1c7ef15d340206090d1575a871b9e6f5
114 lines
2.5 KiB
Objective-C
114 lines
2.5 KiB
Objective-C
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import <XCTest/XCTest.h>
|
|
|
|
#import <RCTTest/RCTTestRunner.h>
|
|
|
|
#import <React/RCTBridge.h>
|
|
#import <React/RCTBridgeModule.h>
|
|
#import <React/RCTJavaScriptExecutor.h>
|
|
#import <React/RCTUIManager.h>
|
|
#import <React/RCTViewManager.h>
|
|
|
|
@interface RCTTestViewManager : RCTViewManager
|
|
@end
|
|
|
|
@implementation RCTTestViewManager
|
|
|
|
RCT_EXPORT_MODULE()
|
|
|
|
#pragma clang diagnostic push
|
|
#pragma clang diagnostic ignored "-Wdeprecated-implementations"
|
|
|
|
- (NSArray<NSString *> *)customBubblingEventTypes
|
|
{
|
|
return @[@"foo"];
|
|
}
|
|
|
|
#pragma clang diagnostic pop
|
|
|
|
@end
|
|
|
|
|
|
@interface RCTNotificationObserverModule : NSObject <RCTBridgeModule>
|
|
|
|
@property (nonatomic, assign) BOOL didDetectViewManagerInit;
|
|
|
|
@end
|
|
|
|
@implementation RCTNotificationObserverModule
|
|
|
|
@synthesize bridge = _bridge;
|
|
|
|
RCT_EXPORT_MODULE()
|
|
|
|
- (void)setBridge:(RCTBridge *)bridge
|
|
{
|
|
_bridge = bridge;
|
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didInitViewManager:) name:RCTDidInitializeModuleNotification object:nil];
|
|
}
|
|
|
|
- (void)didInitViewManager:(NSNotification *)note
|
|
{
|
|
id<RCTBridgeModule> module = note.userInfo[@"module"];
|
|
if ([module isKindOfClass:[RCTTestViewManager class]]) {
|
|
_didDetectViewManagerInit = YES;
|
|
}
|
|
}
|
|
|
|
@end
|
|
|
|
@interface RCTModuleInitNotificationRaceTests : XCTestCase <RCTBridgeDelegate>
|
|
{
|
|
RCTBridge *_bridge;
|
|
RCTNotificationObserverModule *_notificationObserver;
|
|
}
|
|
@end
|
|
|
|
@implementation RCTModuleInitNotificationRaceTests
|
|
|
|
- (NSURL *)sourceURLForBridge:(__unused RCTBridge *)bridge
|
|
{
|
|
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
|
|
return [bundle URLForResource:@"RNTesterUnitTestsBundle" withExtension:@"js"];
|
|
}
|
|
|
|
- (NSArray *)extraModulesForBridge:(__unused RCTBridge *)bridge
|
|
{
|
|
return @[[RCTTestViewManager new], _notificationObserver];
|
|
}
|
|
|
|
- (void)setUp
|
|
{
|
|
[super setUp];
|
|
|
|
_notificationObserver = [RCTNotificationObserverModule new];
|
|
_bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:nil];
|
|
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
[[self->_bridge uiManager] constantsToExport];
|
|
});
|
|
}
|
|
|
|
- (void)tearDown
|
|
{
|
|
[super tearDown];
|
|
|
|
_notificationObserver = nil;
|
|
[_bridge invalidate];
|
|
_bridge = nil;
|
|
}
|
|
|
|
- (void)testViewManagerNotInitializedBeforeSetBridgeModule
|
|
{
|
|
RCT_RUN_RUNLOOP_WHILE(!_notificationObserver.didDetectViewManagerInit);
|
|
}
|
|
|
|
@end
|