diff --git a/react-packager/src/JSTransformer/worker/__tests__/worker-test.js b/react-packager/src/JSTransformer/worker/__tests__/worker-test.js index 7b7e7f17..8fb6de27 100644 --- a/react-packager/src/JSTransformer/worker/__tests__/worker-test.js +++ b/react-packager/src/JSTransformer/worker/__tests__/worker-test.js @@ -21,6 +21,7 @@ describe('code transformation worker:', () => { let extractDependencies, transform; beforeEach(() => { + jest.resetModules(); ({transformCode} = require('..')); extractDependencies = require('../extract-dependencies').mockReturnValue({}); @@ -58,18 +59,22 @@ describe('code transformation worker:', () => { }); }); - it('removes the leading assignment to `module.exports` before passing on the result if the file is a JSON file, even if minified', done => { - const result = { - code: 'p.exports={a:1,b:2}', - }; - transform.mockImplementation((_, callback) => - callback(null, result)); + it( + 'removes the leading assignment to `module.exports` before passing ' + + 'on the result if the file is a JSON file, even if minified', + done => { + const result = { + code: 'p.exports={a:1,b:2}', + }; + transform.mockImplementation((_, callback) => + callback(null, result)); - transformCode(transform, 'aribtrary/file.json', 'b', {}, (_, data) => { - expect(data.code).toBe('{a:1,b:2}'); - done(); - }); - }); + transformCode(transform, 'aribtrary/file.json', 'b', {}, (_, data) => { + expect(data.code).toBe('{a:1,b:2}'); + done(); + }); + } + ); it('removes shebang when present', done => { const shebang = '#!/usr/bin/env node'; @@ -110,35 +115,51 @@ describe('code transformation worker:', () => { }); }); - it('uses `dependencies` and `dependencyOffsets` provided by `extractDependencies` for the result', done => { - const dependencyData = { - dependencies: ['arbitrary', 'list', 'of', 'dependencies'], - dependencyOffsets: [12, 119, 185, 328, 471], - }; - extractDependencies.mockReturnValue(dependencyData); + it( + 'uses `dependencies` and `dependencyOffsets` ' + + 'provided by `extractDependencies` for the result', + done => { + const dependencyData = { + dependencies: ['arbitrary', 'list', 'of', 'dependencies'], + dependencyOffsets: [12, 119, 185, 328, 471], + }; + extractDependencies.mockReturnValue(dependencyData); - transformCode(transform, 'filename', 'code', {}, (_, data) => { - expect(data).toEqual(objectContaining(dependencyData)); - done(); - }); - }); + transformCode(transform, 'filename', 'code', {}, (_, data) => { + expect(data).toEqual(objectContaining(dependencyData)); + done(); + }); + } + ); it('does not extract requires if files are marked as "extern"', done => { - transformCode(transform, 'filename', 'code', {extern: true}, (_, {dependencies, dependencyOffsets}) => { - expect(extractDependencies).not.toBeCalled(); - expect(dependencies).toEqual([]); - expect(dependencyOffsets).toEqual([]); - done(); - }); + transformCode( + transform, + 'filename', + 'code', + {extern: true}, + (_, {dependencies, dependencyOffsets}) => { + expect(extractDependencies).not.toBeCalled(); + expect(dependencies).toEqual([]); + expect(dependencyOffsets).toEqual([]); + done(); + } + ); }); it('does not extract requires of JSON files', done => { - transformCode(transform, 'arbitrary.json', '{"arbitrary":"json"}', {}, (_, {dependencies, dependencyOffsets}) => { - expect(extractDependencies).not.toBeCalled(); - expect(dependencies).toEqual([]); - expect(dependencyOffsets).toEqual([]); - done(); - }); + transformCode( + transform, + 'arbitrary.json', + '{"arbitrary":"json"}', + {}, + (_, {dependencies, dependencyOffsets}) => { + expect(extractDependencies).not.toBeCalled(); + expect(dependencies).toEqual([]); + expect(dependencyOffsets).toEqual([]); + done(); + } + ); }); }); diff --git a/react-packager/src/Server/__tests__/Server-test.js b/react-packager/src/Server/__tests__/Server-test.js index c5037909..c2546ffd 100644 --- a/react-packager/src/Server/__tests__/Server-test.js +++ b/react-packager/src/Server/__tests__/Server-test.js @@ -26,6 +26,7 @@ let FileWatcher; describe('processRequest', () => { let SourceMapConsumer, Bundler, Server, AssetServer, Promise; beforeEach(() => { + jest.resetModules(); SourceMapConsumer = require('source-map').SourceMapConsumer; Bundler = require('../../Bundler'); Server = require('../'); @@ -253,52 +254,55 @@ describe('processRequest', () => { jest.runAllTicks(); }); - it('does not rebuild the bundles that contain a file when that file is changed, even when hot loading is enabled', () => { - const bundleFunc = jest.fn(); - bundleFunc - .mockReturnValueOnce( - Promise.resolve({ - getSource: () => 'this is the first source', - getSourceMap: () => {}, - getEtag: () => () => 'this is an etag', - }) - ) - .mockReturnValue( - Promise.resolve({ - getSource: () => 'this is the rebuilt source', - getSourceMap: () => {}, - getEtag: () => () => 'this is an etag', - }) - ); + it( + 'does not rebuild the bundles that contain a file ' + + 'when that file is changed, even when hot loading is enabled', + () => { + const bundleFunc = jest.fn(); + bundleFunc + .mockReturnValueOnce( + Promise.resolve({ + getSource: () => 'this is the first source', + getSourceMap: () => {}, + getEtag: () => () => 'this is an etag', + }) + ) + .mockReturnValue( + Promise.resolve({ + getSource: () => 'this is the rebuilt source', + getSourceMap: () => {}, + getEtag: () => () => 'this is an etag', + }) + ); - Bundler.prototype.bundle = bundleFunc; + Bundler.prototype.bundle = bundleFunc; - server = new Server(options); - server.setHMRFileChangeListener(() => {}); + server = new Server(options); + server.setHMRFileChangeListener(() => {}); - requestHandler = server.processRequest.bind(server); + requestHandler = server.processRequest.bind(server); - makeRequest(requestHandler, 'mybundle.bundle?runModule=true') - .done(response => { - expect(response.body).toEqual('this is the first source'); - expect(bundleFunc.mock.calls.length).toBe(1); - }); + makeRequest(requestHandler, 'mybundle.bundle?runModule=true') + .done(response => { + expect(response.body).toEqual('this is the first source'); + expect(bundleFunc.mock.calls.length).toBe(1); + }); - jest.runAllTicks(); + jest.runAllTicks(); - triggerFileChange('all','path/file.js', options.projectRoots[0]); - jest.runAllTimers(); - jest.runAllTicks(); + triggerFileChange('all','path/file.js', options.projectRoots[0]); + jest.runAllTimers(); + jest.runAllTicks(); - expect(bundleFunc.mock.calls.length).toBe(1); - server.setHMRFileChangeListener(null); + expect(bundleFunc.mock.calls.length).toBe(1); + server.setHMRFileChangeListener(null); - makeRequest(requestHandler, 'mybundle.bundle?runModule=true') - .done(response => { - expect(response.body).toEqual('this is the rebuilt source'); - expect(bundleFunc.mock.calls.length).toBe(2); - }); - jest.runAllTicks(); + makeRequest(requestHandler, 'mybundle.bundle?runModule=true') + .done(response => { + expect(response.body).toEqual('this is the rebuilt source'); + expect(bundleFunc.mock.calls.length).toBe(2); + }); + jest.runAllTicks(); }); }); @@ -382,7 +386,10 @@ describe('processRequest', () => { server.processRequest(req, res); jest.runAllTimers(); - expect(AssetServer.prototype.get).toBeCalledWith('imgs/主页/logo.png', undefined); + expect(AssetServer.prototype.get).toBeCalledWith( + 'imgs/\u{4E3B}\u{9875}/logo.png', + undefined + ); expect(res.setHeader).toBeCalledWith('Cache-Control', 'max-age=31536000'); expect(res.end).toBeCalledWith('i am image'); }); diff --git a/react-packager/src/node-haste/FileWatcher/__tests__/FileWatcher-test.js b/react-packager/src/node-haste/FileWatcher/__tests__/FileWatcher-test.js index a87a92a6..03f2ad03 100644 --- a/react-packager/src/node-haste/FileWatcher/__tests__/FileWatcher-test.js +++ b/react-packager/src/node-haste/FileWatcher/__tests__/FileWatcher-test.js @@ -22,6 +22,7 @@ describe('FileWatcher', () => { let config; beforeEach(() => { + jest.resetModules(); const sane = require('sane'); WatchmanWatcher = sane.WatchmanWatcher; WatchmanWatcher.prototype.once.mockImplementation( diff --git a/react-packager/src/node-haste/__tests__/DependencyGraph-test.js b/react-packager/src/node-haste/__tests__/DependencyGraph-test.js index bf3ec649..eac88cdd 100644 --- a/react-packager/src/node-haste/__tests__/DependencyGraph-test.js +++ b/react-packager/src/node-haste/__tests__/DependencyGraph-test.js @@ -40,6 +40,8 @@ describe('DependencyGraph', function() { } beforeEach(function() { + jest.resetModules(); + Module = require('../Module'); const fileWatcher = { on: function() { @@ -245,7 +247,7 @@ describe('DependencyGraph', function() { ...defaults, roots: [root], }); - return getOrderedDependenciesAsJSON(dgraph, '/root/index.js', null, false).then(function(deps) { + return getOrderedDependenciesAsJSON(dgraph, '/root/index.js', null, false).then((deps) => { expect(deps) .toEqual([ { @@ -1918,7 +1920,7 @@ describe('DependencyGraph', function() { }); }); - pit('should support browser mapping of a package to a file ("' + fieldName + '")', function() { + pit('should support browser mapping of a package to a file ("' + fieldName + '")', () => { var root = '/root'; setMockFileSystem({ 'root': { @@ -2337,7 +2339,8 @@ describe('DependencyGraph', function() { 'node-package-c': 'rn-package-c', }, }), - 'index.js': 'require("node-package-a"); require("node-package-b"); require("node-package-c");', + 'index.js': + 'require("node-package-a"); require("node-package-b"); require("node-package-c");', 'node_modules': { 'node-package-a': { 'package.json': JSON.stringify({ @@ -2510,50 +2513,53 @@ describe('DependencyGraph', function() { }); }); - pit('should only use `extraNodeModules` after checking all possible filesystem locations', () => { - const root = '/root'; - setMockFileSystem({ - [root.slice(1)]: { - 'index.js': 'require("bar")', - 'node_modules': { 'bar.js': '' }, - 'provides-bar': { 'index.js': '' }, - }, - }); + pit( + 'should only use `extraNodeModules` after checking all possible filesystem locations', + () => { + const root = '/root'; + setMockFileSystem({ + [root.slice(1)]: { + 'index.js': 'require("bar")', + 'node_modules': { 'bar.js': '' }, + 'provides-bar': { 'index.js': '' }, + }, + }); - var dgraph = new DependencyGraph({ - ...defaults, - roots: [root], - extraNodeModules: { - 'bar': root + '/provides-bar', - }, - }); + var dgraph = new DependencyGraph({ + ...defaults, + roots: [root], + extraNodeModules: { + 'bar': root + '/provides-bar', + }, + }); - return getOrderedDependenciesAsJSON(dgraph, '/root/index.js').then(deps => { - expect(deps) - .toEqual([ - { - id: '/root/index.js', - path: '/root/index.js', - dependencies: ['bar'], - isAsset: false, - isAsset_DEPRECATED: false, - isJSON: false, - isPolyfill: false, - resolution: undefined, - }, - { - id: '/root/node_modules/bar.js', - path: '/root/node_modules/bar.js', - dependencies: [], - isAsset: false, - isAsset_DEPRECATED: false, - isJSON: false, - isPolyfill: false, - resolution: undefined, - }, - ]); - }); - }); + return getOrderedDependenciesAsJSON(dgraph, '/root/index.js').then(deps => { + expect(deps) + .toEqual([ + { + id: '/root/index.js', + path: '/root/index.js', + dependencies: ['bar'], + isAsset: false, + isAsset_DEPRECATED: false, + isJSON: false, + isPolyfill: false, + resolution: undefined, + }, + { + id: '/root/node_modules/bar.js', + path: '/root/node_modules/bar.js', + dependencies: [], + isAsset: false, + isAsset_DEPRECATED: false, + isJSON: false, + isPolyfill: false, + resolution: undefined, + }, + ]); + }); + } + ); pit('should be able to resolve paths within `extraNodeModules`', () => { const root = '/root'; diff --git a/react-packager/src/node-haste/__tests__/fastpath-test.js b/react-packager/src/node-haste/__tests__/fastpath-test.js index b1a89e26..bf91b107 100644 --- a/react-packager/src/node-haste/__tests__/fastpath-test.js +++ b/react-packager/src/node-haste/__tests__/fastpath-test.js @@ -1,3 +1,12 @@ +/** + * Copyright (c) 2013-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. + */ + // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -50,6 +59,7 @@ describe('fast-path', () => { }; beforeEach(function() { + jest.resetModules(); process.platform = 'linux'; });