Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
steps:
- attach_workspace:
at: ~/react-native-cli
- run: yarn test
- run: yarn test:ci
- store_artifacts:
path: coverage
destination: coverage
Expand Down
1 change: 1 addition & 0 deletions e2e/jest.config.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
module.exports = {
testEnvironment: 'node',
testPathIgnorePatterns: ['<rootDir>/(?:.+?)/__tests__/'],
setupFiles: ['./testSetup.js'],
};
1 change: 1 addition & 0 deletions e2e/testSetup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
jest.setTimeout(60000);
4 changes: 4 additions & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
testEnvironment: 'node',
projects: ['<rootDir>/packages/*', '<rootDir>/e2e'],
};
11 changes: 3 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"build-clean": "rm -rf ./packages/*/build",
"watch": "node ./scripts/watch.js",
"test": "jest",
"test:ci": "jest -i",
"lint": "eslint . --cache --report-unused-disable-directives",
"flow-check": "flow check",
"postinstall": "yarn build-clean && yarn build",
Expand All @@ -20,23 +21,17 @@
"@babel/preset-env": "^7.0.0",
"@babel/preset-flow": "^7.0.0",
"@react-native-community/eslint-config": "^0.0.3",
"babel-jest": "^24.5.0",
"babel-jest": "^24.6.0",
"chalk": "^2.4.2",
"eslint": "^5.10.0",
"execa": "^1.0.0",
"flow-bin": "^0.95.1",
"flow-typed": "^2.5.1",
"glob": "^7.1.3",
"jest": "^24.5.0",
"jest": "^24.6.0",
"lerna": "^3.13.1",
"micromatch": "^3.1.10",
"mkdirp": "^0.5.1",
"string-length": "^2.0.0"
},
"jest": {
"projects": [
"packages/*",
"e2e"
]
}
}
2 changes: 1 addition & 1 deletion packages/cli/src/commands/info/__tests__/info.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,6 @@ test('prints output without arguments', async () => {
// TODO: move to e2e tests and adjust expectations to include npm packages
expect(output).toContain('System:');
expect(output).toContain('Binaries:');
});
}, 20000);

test.todo('prints output with --packages');
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ project(':test').projectDir = new File(rootProject.projectDir, '../node_modules/

// Simulate Windows environment on POSIX filesystem
// TODO: scope this test to Windows-only once we setup CI on Windows
it('includes project with correct path on Windows', () => {
// as changing path to be windows-specific breaks global path mock
it.skip('includes project with correct path on Windows', () => {
jest.resetModules();
jest.doMock('path', () => {
const path = jest.requireActual('path');
Expand Down
18 changes: 13 additions & 5 deletions packages/cli/src/commands/upgrade/__tests__/upgrade.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import execa from 'execa';
import path from 'path';
import fs from 'fs';
import snapshotDiff from 'snapshot-diff';
import stripAnsi from 'strip-ansi';
import upgrade from '../upgrade';
import {fetch} from '../helpers';
import logger from '../../../tools/logger';
Expand Down Expand Up @@ -74,7 +75,7 @@ const samplePatch = jest
let logs = [];
const mockPushLog = (...args) =>
logs.push(args.map(x => (Array.isArray(x) ? x.join(' ') : x)).join(' '));
const flushOutput = () => logs.join('\n');
const flushOutput = () => stripAnsi(logs.join('\n'));

beforeEach(() => {
jest.clearAllMocks();
Expand All @@ -85,6 +86,13 @@ beforeEach(() => {
logs = [];
});

afterEach(() => {
// $FlowFixMe
fs.writeFileSync = jest.requireMock('fs').writeFileSync;
// $FlowFixMe
fs.unlinkSync = jest.requireMock('fs').unlinkSync;
});

test('uses latest version of react-native when none passed', async () => {
await upgrade.func([], ctx, opts);
expect(execa).toBeCalledWith('npm', ['info', 'react-native', 'version']);
Expand Down Expand Up @@ -184,14 +192,14 @@ test('cleans up if patching fails,', async () => {
$ execa git apply --check tmp-upgrade-rn.patch --exclude=package.json -p2 --3way
info Applying diff (excluding: package.json, .flowconfig)...
$ execa git apply tmp-upgrade-rn.patch --exclude=package.json --exclude=.flowconfig -p2 --3way
error: .flowconfig: does not exist in index
error: .flowconfig: does not exist in index
error Automatically applying diff failed
[fs] unlink tmp-upgrade-rn.patch
$ execa git status -s
error Patch failed to apply for unknown reason. Please fall back to manual way of upgrading
info You may find these resources helpful:
• Release notes: https://github.com/facebook/react-native/releases/tag/v0.58.4
• Comparison between versions: https://github.com/react-native-community/rn-diff-purge/compare/version/0.57.8..version/0.58.4
• Git diff: https://github.com/react-native-community/rn-diff-purge/compare/version/0.57.8..version/0.58.4.diff"
• Release notes: https://github.com/facebook/react-native/releases/tag/v0.58.4
• Comparison between versions: https://github.com/react-native-community/rn-diff-purge/compare/version/0.57.8..version/0.58.4
• Git diff: https://github.com/react-native-community/rn-diff-purge/compare/version/0.57.8..version/0.58.4.diff"
`);
});
6 changes: 5 additions & 1 deletion packages/cli/src/tools/__tests__/PackageManager-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ const PROJECT_ROOT = '/some/dir';
beforeEach(() => {
jest.spyOn(ChildProcess, 'execSync').mockImplementation(() => {});
});
afterEach(() => {
(ChildProcess.execSync: any).mockRestore();
});

describe('yarn', () => {
beforeEach(() => {
Expand Down Expand Up @@ -99,7 +102,8 @@ it('should use npm if project is not using yarn', () => {
});

it('should use yarn if project is using yarn', () => {
jest.spyOn(yarn, 'isProjectUsingYarn').mockImplementation(() => false);
jest.spyOn(yarn, 'getYarnVersionIfAvailable').mockImplementation(() => true);
jest.spyOn(yarn, 'isProjectUsingYarn').mockImplementation(() => true);

PackageManager.setProjectDir(PROJECT_ROOT);
PackageManager.install(PACKAGES);
Expand Down
4 changes: 4 additions & 0 deletions packages/cli/src/tools/__tests__/makeCommand-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ jest.setMock('child_process', {

const {makeCommand} = require('../getHooks');

afterAll(() => {
jest.restoreAllMocks();
});

describe('makeCommand', () => {
const command = makeCommand('echo');

Expand Down
2 changes: 2 additions & 0 deletions packages/cli/testSetup.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
// @flow
jest.mock('./src/tools/logger');

jest.setTimeout(20000);
Loading