Summary: This turns the bridge type into a simpler struct with always-present methods so you don't need to add additional null check to the calling logic which are hard to deal with. Reviewed By: mweststrate Differential Revision: D30248628 fbshipit-source-id: cdaee44efcbb19dcbb301099b4a7d0eb0c350e67
83 lines
3.3 KiB
TypeScript
83 lines
3.3 KiB
TypeScript
/**
|
|
* 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.
|
|
*
|
|
* @format
|
|
*/
|
|
|
|
import {
|
|
parseXcodeFromCoreSimPath,
|
|
getAllPromisesForQueryingDevices,
|
|
} from '../iOSDevice';
|
|
import configureStore from 'redux-mock-store';
|
|
import {State, createRootReducer} from '../../reducers/index';
|
|
import {getInstance} from '../../fb-stubs/Logger';
|
|
import {IOSBridge} from '../../utils/IOSBridge';
|
|
|
|
const mockStore = configureStore<State, {}>([])(
|
|
createRootReducer()(undefined, {type: 'INIT'}),
|
|
);
|
|
const logger = getInstance();
|
|
|
|
const standardCoresimulatorLog =
|
|
'username 1264 0.0 0.1 5989740 41648 ?? Ss 2:23PM 0:12.92 /Applications/Xcode_12.4.0_fb.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/libexec/mobileassetd';
|
|
|
|
const nonStandardCoresimulatorLog =
|
|
'username 1264 0.0 0.1 5989740 41648 ?? Ss 2:23PM 0:12.92 /Some/Random/Path/Xcode_12.4.0_fb.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/libexec/mobileassetd';
|
|
|
|
const nonStandardSpecialCharacterAphanumericCoresimulatorLog =
|
|
'username 1264 0.0 0.1 5989740 41648 ?? Ss 2:23PM 0:12.92 /Some_R@d0m/Path-3455355/path(2)+connection/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/libexec/mobileassetd';
|
|
|
|
test('test parseXcodeFromCoreSimPath from non standard locations', () => {
|
|
const match = parseXcodeFromCoreSimPath(nonStandardCoresimulatorLog);
|
|
expect(match && match.length > 0).toBeTruthy();
|
|
expect(
|
|
// @ts-ignore the null and non zero lenght check for match is already done above
|
|
match[0],
|
|
).toEqual('/Some/Random/Path/Xcode_12.4.0_fb.app/Contents/Developer');
|
|
});
|
|
|
|
test('test parseXcodeFromCoreSimPath from non standard alphanumeric special character locations', () => {
|
|
const match = parseXcodeFromCoreSimPath(
|
|
nonStandardSpecialCharacterAphanumericCoresimulatorLog,
|
|
);
|
|
expect(match && match.length > 0).toBeTruthy();
|
|
expect(
|
|
// @ts-ignore the null and non zero lenght check for match is already done above
|
|
match[0],
|
|
).toEqual(
|
|
'/Some_R@d0m/Path-3455355/path(2)+connection/Xcode.app/Contents/Developer',
|
|
);
|
|
});
|
|
|
|
test('test parseXcodeFromCoreSimPath from standard locations', () => {
|
|
const match = parseXcodeFromCoreSimPath(standardCoresimulatorLog);
|
|
expect(match && match.length > 0).toBeTruthy();
|
|
expect(
|
|
// @ts-ignore the null and non zero lenght check for match is already done above
|
|
match[0],
|
|
).toEqual('/Applications/Xcode_12.4.0_fb.app/Contents/Developer');
|
|
});
|
|
|
|
test('test getAllPromisesForQueryingDevices when xcode detected', () => {
|
|
const promises = getAllPromisesForQueryingDevices(
|
|
mockStore,
|
|
logger,
|
|
{} as IOSBridge,
|
|
true,
|
|
);
|
|
expect(promises.length).toEqual(3);
|
|
});
|
|
|
|
test('test getAllPromisesForQueryingDevices when xcode is not detected', () => {
|
|
const promises = getAllPromisesForQueryingDevices(
|
|
mockStore,
|
|
logger,
|
|
{} as IOSBridge,
|
|
false,
|
|
);
|
|
expect(promises.length).toEqual(1);
|
|
});
|