mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
fa3a67e251
Summary: This installs the 2.0 version of node-haste, removes the DependencyResolver and fixes up all the tests. Reviewed By: davidaurelio Differential Revision: D2943416 fb-gh-sync-id: aa83d436a33f910d12ed4cc6e2ad8d5742c123a5 shipit-source-id: aa83d436a33f910d12ed4cc6e2ad8d5742c123a5
83 lines
2.9 KiB
JavaScript
83 lines
2.9 KiB
JavaScript
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
'use strict';
|
|
|
|
jest.setMock('uglify-js')
|
|
.mock('child_process')
|
|
.dontMock('underscore')
|
|
.dontMock('../');
|
|
|
|
var SocketInterface = require('../');
|
|
var SocketClient = require('../SocketClient');
|
|
var childProcess = require('child_process');
|
|
var fs = require('fs');
|
|
|
|
describe('SocketInterface', () => {
|
|
describe('getOrCreateSocketFor', () => {
|
|
pit('creates socket path by hashing options', () => {
|
|
fs.existsSync = jest.genMockFn().mockImpl(() => true);
|
|
fs.unlinkSync = jest.genMockFn();
|
|
let callback;
|
|
|
|
childProcess.spawn.mockImpl(() => ({
|
|
on: (event, cb) => callback = cb,
|
|
send: (message) => {
|
|
setImmediate(() => callback({ type: 'createdServer' }));
|
|
},
|
|
unref: () => undefined,
|
|
disconnect: () => undefined,
|
|
}));
|
|
|
|
// Check that given two equivelant server options, we end up with the same
|
|
// socket path.
|
|
const options1 = { projectRoots: ['/root'], transformModulePath: '/root/foo' };
|
|
const options2 = { transformModulePath: '/root/foo', projectRoots: ['/root'] };
|
|
const options3 = { projectRoots: ['/root', '/root2'] };
|
|
|
|
return SocketInterface.getOrCreateSocketFor(options1).then(() => {
|
|
expect(SocketClient.create).toBeCalled();
|
|
return SocketInterface.getOrCreateSocketFor(options2).then(() => {
|
|
expect(SocketClient.create.mock.calls.length).toBe(2);
|
|
expect(SocketClient.create.mock.calls[0]).toEqual(SocketClient.create.mock.calls[1]);
|
|
return SocketInterface.getOrCreateSocketFor(options3).then(() => {
|
|
expect(SocketClient.create.mock.calls.length).toBe(3);
|
|
expect(SocketClient.create.mock.calls[1]).not.toEqual(SocketClient.create.mock.calls[2]);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
pit('should fork a server', () => {
|
|
fs.existsSync = jest.genMockFn().mockImpl(() => false);
|
|
fs.unlinkSync = jest.genMockFn();
|
|
let sockPath;
|
|
let callback;
|
|
|
|
childProcess.spawn.mockImpl(() => ({
|
|
on: (event, cb) => callback = cb,
|
|
send: (message) => {
|
|
expect(message.type).toBe('createSocketServer');
|
|
expect(message.data.options).toEqual({ projectRoots: ['/root'] });
|
|
expect(message.data.sockPath).toContain('react-packager');
|
|
sockPath = message.data.sockPath;
|
|
|
|
setImmediate(() => callback({ type: 'createdServer' }));
|
|
},
|
|
unref: () => undefined,
|
|
disconnect: () => undefined,
|
|
}));
|
|
|
|
return SocketInterface.getOrCreateSocketFor({ projectRoots: ['/root'] })
|
|
.then(() => {
|
|
expect(SocketClient.create).toBeCalledWith(sockPath);
|
|
});
|
|
});
|
|
});
|
|
});
|