Skip to content

Commit

Permalink
Merge branch 'master' into ignore-root-dir-in-babel-jest-cache
Browse files Browse the repository at this point in the history
  • Loading branch information
SimenB committed Feb 22, 2019
2 parents 3dd058f + 4ea66e2 commit ba8e8bb
Show file tree
Hide file tree
Showing 14 changed files with 280 additions and 37 deletions.
5 changes: 3 additions & 2 deletions CHANGELOG.md
Expand Up @@ -4,6 +4,7 @@

- `[expect]`: Improve report when matcher fails, part 7 ([#7866](https://github.com/facebook/jest/pull/7866))
- `[expect]`: Improve report when matcher fails, part 8 ([#7876](https://github.com/facebook/jest/pull/7876))
- `[expect]`: Improve report when matcher fails, part 9 ([#7940](https://github.com/facebook/jest/pull/7940))
- `[pretty-format]` Support `React.memo` ([#7891](https://github.com/facebook/jest/pull/7891))
- `[jest-config]` Print error information on preset normalization error ([#7935](https://github.com/facebook/jest/pull/7935))
- `[babel-jest]` Ignore `rootDir` to determine the cache key of transformed files ([#7947](https://github.com/facebook/jest/pull/7947))
Expand All @@ -22,7 +23,7 @@

### Chore & Maintenance

- `[*]`: Setup building, linting and testing of TypeScript ([#7808](https://github.com/facebook/jest/pull/7808), [#7855](https://github.com/facebook/jest/pull/7855))
- `[*]`: Setup building, linting and testing of TypeScript ([#7808](https://github.com/facebook/jest/pull/7808), [#7855](https://github.com/facebook/jest/pull/7855), [#7951](https://github.com/facebook/jest/pull/7951))
- `[pretty-format]`: Migrate to TypeScript ([#7809](https://github.com/facebook/jest/pull/7809))
- `[diff-sequences]`: Migrate to Typescript ([#7820](https://github.com/facebook/jest/pull/7820))
- `[jest-get-type]`: Migrate to TypeScript ([#7818](https://github.com/facebook/jest/pull/7818))
Expand All @@ -39,7 +40,7 @@
- `[jest-watcher]`: Migrate to TypeScript ([#7843](https://github.com/facebook/jest/pull/7843))
- `[jest-mock]`: Migrate to TypeScript ([#7847](https://github.com/facebook/jest/pull/7847), [#7850](https://github.com/facebook/jest/pull/7850))
- `[jest-worker]`: Migrate to TypeScript ([#7853](https://github.com/facebook/jest/pull/7853))
- `[jest-haste-map]`: Migrate to TypeScript ([#7854](https://github.com/facebook/jest/pull/7854))
- `[jest-haste-map]`: Migrate to TypeScript ([#7854](https://github.com/facebook/jest/pull/7854), [#7951](https://github.com/facebook/jest/pull/7951))
- `[docs]`: Fix image paths in SnapshotTesting.md for current and version 24 ([#7872](https://github.com/facebook/jest/pull/7872))
- `[babel-jest]`: Migrate to TypeScript ([#7862](https://github.com/facebook/jest/pull/7862))
- `[jest-resolve]`: Migrate to TypeScript ([#7871](https://github.com/facebook/jest/pull/7871))
Expand Down
1 change: 1 addition & 0 deletions babel.config.js
Expand Up @@ -9,6 +9,7 @@ module.exports = {
},
{
plugins: [
'babel-plugin-typescript-strip-namespaces',
require.resolve(
'./scripts/babel-plugin-jest-replace-ts-export-assignment.js'
),
Expand Down
1 change: 1 addition & 0 deletions package.json
Expand Up @@ -19,6 +19,7 @@
"ansi-styles": "^3.2.0",
"babel-eslint": "^9.0.0",
"babel-loader": "^8.0.5",
"babel-plugin-typescript-strip-namespaces": "^1.1.0",
"camelcase": "^5.0.0",
"chalk": "^2.0.1",
"codecov": "^3.0.0",
Expand Down
52 changes: 52 additions & 0 deletions packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap
Expand Up @@ -563,6 +563,58 @@ Expected difference: < <green>0.005</>
Received difference: <red>0.005000099999999952</>"
`;

exports[`.toBeCloseTo() throws: Matcher error promise empty isNot false received 1`] = `
"<dim>expect(</><red>received</><dim>).</>toBeCloseTo<dim>(</><green>expected</><dim>, </><green>precision</><dim>)</>

<bold>Matcher error</>: <red>received</> value must be a number

Received has type: string
Received has value: <red>\\"\\"</>"
`;

exports[`.toBeCloseTo() throws: Matcher error promise empty isNot true expected 1`] = `
"<dim>expect(</><red>received</><dim>).</>not<dim>.</>toBeCloseTo<dim>(</><green>expected</><dim>)</>

<bold>Matcher error</>: <green>expected</> value must be a number

Expected has value: <green>undefined</>"
`;

exports[`.toBeCloseTo() throws: Matcher error promise rejects isNot false expected 1`] = `
"<dim>expect(</><red>received</><dim>).</>rejects<dim>.</>toBeCloseTo<dim>(</><green>expected</><dim>)</>

<bold>Matcher error</>: <green>expected</> value must be a number

Expected has type: string
Expected has value: <green>\\"0\\"</>"
`;

exports[`.toBeCloseTo() throws: Matcher error promise rejects isNot true received 1`] = `
"<dim>expect(</><red>received</><dim>).</>rejects<dim>.</>not<dim>.</>toBeCloseTo<dim>(</><green>expected</><dim>)</>

<bold>Matcher error</>: <red>received</> value must be a number

Received has type: symbol
Received has value: <red>Symbol(0.1)</>"
`;

exports[`.toBeCloseTo() throws: Matcher error promise resolves isNot false received 1`] = `
"<dim>expect(</><red>received</><dim>).</>resolves<dim>.</>toBeCloseTo<dim>(</><green>expected</><dim>, </><green>precision</><dim>)</>

<bold>Matcher error</>: <red>received</> value must be a number

Received has type: boolean
Received has value: <red>false</>"
`;

exports[`.toBeCloseTo() throws: Matcher error promise resolves isNot true expected 1`] = `
"<dim>expect(</><red>received</><dim>).</>resolves<dim>.</>not<dim>.</>toBeCloseTo<dim>(</><green>expected</><dim>, </><green>precision</><dim>)</>

<bold>Matcher error</>: <green>expected</> value must be a number

Expected has value: <green>null</>"
`;

exports[`.toBeDefined(), .toBeUndefined() '"a"' is defined 1`] = `
"<dim>expect(</><red>received</><dim>).</>not<dim>.</>toBeDefined<dim>()</>

Expand Down
53 changes: 53 additions & 0 deletions packages/expect/src/__tests__/matchers.test.js
Expand Up @@ -1006,6 +1006,59 @@ describe('.toBeCloseTo()', () => {
).toThrowErrorMatchingSnapshot();
});
});

describe('throws: Matcher error', () => {
test('promise empty isNot false received', () => {
const precision = 3;
const expected = 0;
const received = '';
expect(() => {
jestExpect(received).toBeCloseTo(expected, precision);
}).toThrowErrorMatchingSnapshot();
});

test('promise empty isNot true expected', () => {
const received = 0.1;
// expected is undefined
expect(() => {
jestExpect(received).not.toBeCloseTo();
}).toThrowErrorMatchingSnapshot();
});

test('promise rejects isNot false expected', () => {
const expected = '0';
const received = Promise.reject(0.01);
return expect(
jestExpect(received).rejects.toBeCloseTo(expected),
).rejects.toThrowErrorMatchingSnapshot();
});

test('promise rejects isNot true received', () => {
const expected = 0;
const received = Promise.reject(Symbol('0.1'));
return expect(
jestExpect(received).rejects.not.toBeCloseTo(expected),
).rejects.toThrowErrorMatchingSnapshot();
});

test('promise resolves isNot false received', () => {
const precision = 3;
const expected = 0;
const received = Promise.resolve(false);
return expect(
jestExpect(received).resolves.toBeCloseTo(expected, precision),
).rejects.toThrowErrorMatchingSnapshot();
});

test('promise resolves isNot true expected', () => {
const precision = 3;
const expected = null;
const received = Promise.resolve(0.1);
expect(
jestExpect(received).resolves.not.toBeCloseTo(expected, precision),
).rejects.toThrowErrorMatchingSnapshot();
});
});
});

describe('.toMatch()', () => {
Expand Down
13 changes: 6 additions & 7 deletions packages/expect/src/matchers.ts
Expand Up @@ -93,13 +93,12 @@ const matchers: MatchersObject = {
precision: number = 2,
) {
const secondArgument = arguments.length === 3 ? 'precision' : undefined;
const isNot = this.isNot;
const options: MatcherHintOptions = {
isNot,
isNot: this.isNot,
promise: this.promise,
secondArgument,
};
ensureNumbers(received, expected, '.toBeCloseTo');
ensureNumbers(received, expected, 'toBeCloseTo', options);

let pass = false;
let expectedDiff = 0;
Expand Down Expand Up @@ -180,7 +179,7 @@ const matchers: MatchersObject = {
isNot,
promise: this.promise,
};
ensureNumbers(received, expected, '.toBeGreaterThan');
ensureNumbers(received, expected, 'toBeGreaterThan', options);

const pass = received > expected;

Expand All @@ -203,7 +202,7 @@ const matchers: MatchersObject = {
isNot,
promise: this.promise,
};
ensureNumbers(received, expected, '.toBeGreaterThanOrEqual');
ensureNumbers(received, expected, 'toBeGreaterThanOrEqual', options);

const pass = received >= expected;

Expand Down Expand Up @@ -266,7 +265,7 @@ const matchers: MatchersObject = {
isNot,
promise: this.promise,
};
ensureNumbers(received, expected, '.toBeLessThan');
ensureNumbers(received, expected, 'toBeLessThan', options);

const pass = received < expected;

Expand All @@ -285,7 +284,7 @@ const matchers: MatchersObject = {
isNot,
promise: this.promise,
};
ensureNumbers(received, expected, '.toBeLessThanOrEqual');
ensureNumbers(received, expected, 'toBeLessThanOrEqual', options);

const pass = received <= expected;

Expand Down
13 changes: 8 additions & 5 deletions packages/jest-haste-map/src/index.ts
Expand Up @@ -98,9 +98,12 @@ type Watcher = {

type WorkerInterface = {worker: typeof worker; getSha1: typeof getSha1};

export type ModuleMap = HasteModuleMap;
export type SerializableModuleMap = HasteSerializableModuleMap;
export type FS = HasteFS;
// TODO: Ditch namespace when this module exports ESM
namespace HasteMap {
export type ModuleMap = HasteModuleMap;
export type SerializableModuleMap = HasteSerializableModuleMap;
export type FS = HasteFS;
}

const CHANGE_INTERVAL = 30;
const MAX_WAIT_TIME = 240000;
Expand Down Expand Up @@ -368,7 +371,7 @@ class HasteMap extends EventEmitter {
return hasteMap;
}

readModuleMap(): ModuleMap {
readModuleMap(): HasteModuleMap {
const data = this.read();
return new HasteModuleMap({
duplicates: data.duplicates,
Expand Down Expand Up @@ -1079,4 +1082,4 @@ function copyMap<K, V>(input: Map<K, V>): Map<K, V> {
HasteMap.H = H;
HasteMap.ModuleMap = HasteModuleMap;

module.exports = HasteMap;
export = HasteMap;
Expand Up @@ -18,24 +18,76 @@ Expected has type: object
Expected has value: <green>{\\"a\\": 1}</>"
`;
exports[`.ensureNumbers() throws error when expected is not a number 1`] = `
"<dim>expect(</><red>received</><dim>)[.not]This matcher(</><green>expected</><dim>)</>
exports[`.ensureNumbers() throws error when expected is not a number (backward compatibility) 1`] = `
"<dim>expect(</><red>received</><dim>)[.not].toBeCloseTo(</><green>expected</><dim>)</>
<bold>Matcher error</>: <green>expected</> value must be a number
Expected has type: string
Expected has value: <green>\\"not_a_number\\"</>"
`;
exports[`.ensureNumbers() throws error when received is not a number 1`] = `
"<dim>expect(</><red>received</><dim>)[.not]This matcher(</><green>expected</><dim>)</>
exports[`.ensureNumbers() throws error when received is not a number (backward compatibility) 1`] = `
"<dim>expect(</><red>received</><dim>)[.not].toBeCloseTo(</><green>expected</><dim>)</>
<bold>Matcher error</>: <red>received</> value must be a number
Received has type: string
Received has value: <red>\\"not_a_number\\"</>"
`;
exports[`.ensureNumbers() with options promise empty isNot false received 1`] = `
"<dim>expect(</><red>received</><dim>).</>toBeCloseTo<dim>(</><green>expected</><dim>, </><green>precision</><dim>)</>
<bold>Matcher error</>: <red>received</> value must be a number
Received has type: string
Received has value: <red>\\"\\"</>"
`;
exports[`.ensureNumbers() with options promise empty isNot true expected 1`] = `
"<dim>expect(</><red>received</><dim>).</>not<dim>.</>toBeCloseTo<dim>(</><green>expected</><dim>)</>
<bold>Matcher error</>: <green>expected</> value must be a number
Expected has value: <green>undefined</>"
`;
exports[`.ensureNumbers() with options promise rejects isNot false expected 1`] = `
"<dim>expect(</><red>received</><dim>).</>rejects<dim>.</>toBeCloseTo<dim>(</><green>expected</><dim>)</>
<bold>Matcher error</>: <green>expected</> value must be a number
Expected has type: string
Expected has value: <green>\\"0\\"</>"
`;
exports[`.ensureNumbers() with options promise rejects isNot true received 1`] = `
"<dim>expect(</><red>received</><dim>).</>rejects<dim>.</>not<dim>.</>toBeCloseTo<dim>(</><green>expected</><dim>)</>
<bold>Matcher error</>: <red>received</> value must be a number
Received has type: symbol
Received has value: <red>Symbol(0.1)</>"
`;
exports[`.ensureNumbers() with options promise resolves isNot false received 1`] = `
"<dim>expect(</><red>received</><dim>).</>resolves<dim>.</>toBeCloseTo<dim>(</><green>expected</><dim>)</>
<bold>Matcher error</>: <red>received</> value must be a number
Received has type: boolean
Received has value: <red>false</>"
`;
exports[`.ensureNumbers() with options promise resolves isNot true expected 1`] = `
"<dim>expect(</><red>received</><dim>).</>resolves<dim>.</>not<dim>.</>toBeCloseTo<dim>(</><green>expected</><dim>)</>
<bold>Matcher error</>: <green>expected</> value must be a number
Expected has value: <green>null</>"
`;
exports[`.stringify() reduces maxDepth if stringifying very large objects 1`] = `"{\\"a\\": 1, \\"b\\": [Object]}"`;
exports[`.stringify() reduces maxDepth if stringifying very large objects 2`] = `"{\\"a\\": 1, \\"b\\": {\\"0\\": \\"test\\", \\"1\\": \\"test\\", \\"2\\": \\"test\\", \\"3\\": \\"test\\", \\"4\\": \\"test\\", \\"5\\": \\"test\\", \\"6\\": \\"test\\", \\"7\\": \\"test\\", \\"8\\": \\"test\\", \\"9\\": \\"test\\"}}"`;
Expand Down

0 comments on commit ba8e8bb

Please sign in to comment.