diff --git a/.circleci/config.yml b/.circleci/config.yml index 4b00c42135d9..cb4fb65c20cb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -27,7 +27,7 @@ jobs: - restore-cache: *restore-cache - run: yarn --no-progress --frozen-lockfile - save-cache: *save-cache - - run: yarn lint --format junit -o reports/junit/js-lint-results.xml && yarn lint-es5-build --format junit -o reports/junit/js-es5-lint-results.xml && yarn lint:md:ci && yarn check-copyright-headers + - run: yarn lint --format junit -o reports/junit/js-lint-results.xml && yarn lint-es5-build --format junit -o reports/junit/js-es5-lint-results.xml && yarn lint:prettier:ci && yarn check-copyright-headers - store_test_results: path: reports/junit diff --git a/.editorconfig b/.editorconfig index a124324a1532..63a501ede3a9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,11 +1,19 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org +# +# Some of these options are also respected by Prettier + root = true [*] indent_style = space indent_size = 2 + +end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true -[{*.md,*.snap}] +[*.{md,snap}] trim_trailing_whitespace = false diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e6072e0ac8d..3a39c5e145e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,7 @@ - `[docs]` Fix MockFunctions example that was using toContain instead of toContainEqual ([#8765](https://github.com/facebook/jest/pull/8765)) - `[*]` Make sure copyright header comment includes license ([#8783](https://github.com/facebook/jest/pull/8783)) - `[docs]` Fix WatchPlugins `jestHooks.shouldRunTestSuite` example that receives an object ([#8784](https://github.com/facebook/jest/pull/8784)) +- `[*]` Enforce LF line endings ([#8809](https://github.com/facebook/jest/pull/8809)) ### Performance diff --git a/package.json b/package.json index 1d5fa1644a6f..4cb7378f3ac4 100644 --- a/package.json +++ b/package.json @@ -86,8 +86,8 @@ "jest-coverage": "yarn jest --coverage", "lint": "eslint . --cache --report-unused-disable-directives --ext js,jsx,ts,tsx,md", "lint-es5-build": "eslint --no-eslintrc --no-ignore --env=browser packages/*/build-es5", - "lint:md": "yarn --silent lint:md:ci --fix", - "lint:md:ci": "prettylint '**/*.{md,yml,yaml}' --ignore-path .gitignore", + "lint:prettier": "yarn --silent lint:prettier:ci --fix", + "lint:prettier:ci": "prettylint '**/*.{md,yml,yaml}' --ignore-path .gitignore", "postinstall": "opencollective postinstall && yarn build", "publish": "yarn build-clean && yarn build && lerna publish --silent", "test-ci-es5-build-in-browser": "karma start --single-run", diff --git a/packages/expect/src/__tests__/__arbitraries__/sharedSettings.ts b/packages/expect/src/__tests__/__arbitraries__/sharedSettings.ts index ed8092112bf5..c9c85274bfd4 100644 --- a/packages/expect/src/__tests__/__arbitraries__/sharedSettings.ts +++ b/packages/expect/src/__tests__/__arbitraries__/sharedSettings.ts @@ -1,24 +1,24 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - -import fc from 'fast-check'; - -// settings for anything arbitrary -export const anythingSettings = { - key: fc.oneof(fc.string(), fc.constantFrom('k1', 'k2', 'k3')), - maxDepth: 2, // Limit object depth (default: 2) - maxKeys: 5, // Limit number of keys per object (default: 5) - withBoxedValues: true, - // Issue #7975 have to be fixed before enabling the generation of Map - withMap: false, - // Issue #7975 have to be fixed before enabling the generation of Set - withSet: false, -}; - -// assertion settings -export const assertSettings = {}; // eg.: {numRuns: 10000} +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import fc from 'fast-check'; + +// settings for anything arbitrary +export const anythingSettings = { + key: fc.oneof(fc.string(), fc.constantFrom('k1', 'k2', 'k3')), + maxDepth: 2, // Limit object depth (default: 2) + maxKeys: 5, // Limit number of keys per object (default: 5) + withBoxedValues: true, + // Issue #7975 have to be fixed before enabling the generation of Map + withMap: false, + // Issue #7975 have to be fixed before enabling the generation of Set + withSet: false, +}; + +// assertion settings +export const assertSettings = {}; // eg.: {numRuns: 10000} diff --git a/packages/expect/src/__tests__/matchers-toContain.property.test.ts b/packages/expect/src/__tests__/matchers-toContain.property.test.ts index 29e9b4c1d4e5..6cdcf3a907e0 100644 --- a/packages/expect/src/__tests__/matchers-toContain.property.test.ts +++ b/packages/expect/src/__tests__/matchers-toContain.property.test.ts @@ -1,48 +1,48 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - -import fc from 'fast-check'; -import { - anythingSettings, - assertSettings, -} from './__arbitraries__/sharedSettings'; - -describe('toContain', () => { - it('should always find the value when inside the array', () => { - fc.assert( - fc.property( - fc.array(fc.anything(anythingSettings)), - fc.array(fc.anything(anythingSettings)), - fc.anything(anythingSettings).filter(v => !Number.isNaN(v)), - (startValues, endValues, v) => { - // Given: startValues, endValues arrays and v value (not NaN) - expect([...startValues, v, ...endValues]).toContain(v); - }, - ), - assertSettings, - ); - }); - - it('should not find the value if it has been cloned into the array', () => { - fc.assert( - fc.property( - fc.array(fc.anything(anythingSettings)), - fc.array(fc.anything(anythingSettings)), - fc.dedup(fc.anything(anythingSettings), 2), - (startValues, endValues, [a, b]) => { - // Given: startValues, endValues arrays - // and [a, b] equal, but not the same values - // with `typeof a === 'object && a !== null` - fc.pre(typeof a === 'object' && a !== null); - expect([...startValues, a, ...endValues]).not.toContain(b); - }, - ), - assertSettings, - ); - }); -}); +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import fc from 'fast-check'; +import { + anythingSettings, + assertSettings, +} from './__arbitraries__/sharedSettings'; + +describe('toContain', () => { + it('should always find the value when inside the array', () => { + fc.assert( + fc.property( + fc.array(fc.anything(anythingSettings)), + fc.array(fc.anything(anythingSettings)), + fc.anything(anythingSettings).filter(v => !Number.isNaN(v)), + (startValues, endValues, v) => { + // Given: startValues, endValues arrays and v value (not NaN) + expect([...startValues, v, ...endValues]).toContain(v); + }, + ), + assertSettings, + ); + }); + + it('should not find the value if it has been cloned into the array', () => { + fc.assert( + fc.property( + fc.array(fc.anything(anythingSettings)), + fc.array(fc.anything(anythingSettings)), + fc.dedup(fc.anything(anythingSettings), 2), + (startValues, endValues, [a, b]) => { + // Given: startValues, endValues arrays + // and [a, b] equal, but not the same values + // with `typeof a === 'object && a !== null` + fc.pre(typeof a === 'object' && a !== null); + expect([...startValues, a, ...endValues]).not.toContain(b); + }, + ), + assertSettings, + ); + }); +}); diff --git a/packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts b/packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts index ab6145a645f7..33edfed6a40c 100644 --- a/packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts +++ b/packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts @@ -1,46 +1,46 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - -import fc from 'fast-check'; -import { - anythingSettings, - assertSettings, -} from './__arbitraries__/sharedSettings'; - -describe('toContainEqual', () => { - it('should always find the value when inside the array', () => { - fc.assert( - fc.property( - fc.array(fc.anything(anythingSettings)), - fc.array(fc.anything(anythingSettings)), - fc.anything(anythingSettings), - (startValues, endValues, v) => { - // Given: startValues, endValues arrays and v any value - expect([...startValues, v, ...endValues]).toContainEqual(v); - }, - ), - assertSettings, - ); - }); - - it('should always find the value when cloned inside the array', () => { - fc.assert( - fc.property( - fc.array(fc.anything(anythingSettings)), - fc.array(fc.anything(anythingSettings)), - fc.dedup(fc.anything(anythingSettings), 2), - (startValues, endValues, [a, b]) => { - // Given: startValues, endValues arrays - // and [a, b] identical values - expect([...startValues, a, ...endValues]).toContainEqual(b); - }, - ), - assertSettings, - ); - }); -}); +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import fc from 'fast-check'; +import { + anythingSettings, + assertSettings, +} from './__arbitraries__/sharedSettings'; + +describe('toContainEqual', () => { + it('should always find the value when inside the array', () => { + fc.assert( + fc.property( + fc.array(fc.anything(anythingSettings)), + fc.array(fc.anything(anythingSettings)), + fc.anything(anythingSettings), + (startValues, endValues, v) => { + // Given: startValues, endValues arrays and v any value + expect([...startValues, v, ...endValues]).toContainEqual(v); + }, + ), + assertSettings, + ); + }); + + it('should always find the value when cloned inside the array', () => { + fc.assert( + fc.property( + fc.array(fc.anything(anythingSettings)), + fc.array(fc.anything(anythingSettings)), + fc.dedup(fc.anything(anythingSettings), 2), + (startValues, endValues, [a, b]) => { + // Given: startValues, endValues arrays + // and [a, b] identical values + expect([...startValues, a, ...endValues]).toContainEqual(b); + }, + ), + assertSettings, + ); + }); +}); diff --git a/packages/expect/src/__tests__/matchers-toEqual.property.test.ts b/packages/expect/src/__tests__/matchers-toEqual.property.test.ts index ca7d88ef7390..3ebefa5f3bd0 100644 --- a/packages/expect/src/__tests__/matchers-toEqual.property.test.ts +++ b/packages/expect/src/__tests__/matchers-toEqual.property.test.ts @@ -1,58 +1,58 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - -import fc from 'fast-check'; -import { - anythingSettings, - assertSettings, -} from './__arbitraries__/sharedSettings'; - -describe('toEqual', () => { - it('should be reflexive', () => { - fc.assert( - fc.property(fc.dedup(fc.anything(anythingSettings), 2), ([a, b]) => { - // Given: a and b identical values - expect(a).toEqual(b); - }), - assertSettings, - ); - }); - - it('should be symmetric', () => { - const safeExpectEqual = (a, b) => { - try { - expect(a).toEqual(b); - return true; - } catch (err) { - return false; - } - }; - fc.assert( - fc.property( - fc.anything(anythingSettings), - fc.anything(anythingSettings), - (a, b) => { - // Given: a and b values - // Assert: We expect `expect(a).toEqual(b)` - // to be equivalent to `expect(b).toEqual(a)` - expect(safeExpectEqual(a, b)).toBe(safeExpectEqual(b, a)); - }, - ), - { - ...assertSettings, - examples: [ - [0, 5e-324], // Issue #7941 - // [ - // new Set([false, true]), - // new Set([new Boolean(true), new Boolean(true)]), - // ], // Issue #7975 - ], - }, - ); - }); -}); +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import fc from 'fast-check'; +import { + anythingSettings, + assertSettings, +} from './__arbitraries__/sharedSettings'; + +describe('toEqual', () => { + it('should be reflexive', () => { + fc.assert( + fc.property(fc.dedup(fc.anything(anythingSettings), 2), ([a, b]) => { + // Given: a and b identical values + expect(a).toEqual(b); + }), + assertSettings, + ); + }); + + it('should be symmetric', () => { + const safeExpectEqual = (a, b) => { + try { + expect(a).toEqual(b); + return true; + } catch (err) { + return false; + } + }; + fc.assert( + fc.property( + fc.anything(anythingSettings), + fc.anything(anythingSettings), + (a, b) => { + // Given: a and b values + // Assert: We expect `expect(a).toEqual(b)` + // to be equivalent to `expect(b).toEqual(a)` + expect(safeExpectEqual(a, b)).toBe(safeExpectEqual(b, a)); + }, + ), + { + ...assertSettings, + examples: [ + [0, 5e-324], // Issue #7941 + // [ + // new Set([false, true]), + // new Set([new Boolean(true), new Boolean(true)]), + // ], // Issue #7975 + ], + }, + ); + }); +}); diff --git a/packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts b/packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts index 70dcd4e5cd1b..82b776cb175f 100644 --- a/packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts +++ b/packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts @@ -1,49 +1,49 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - -import fc from 'fast-check'; -import { - anythingSettings, - assertSettings, -} from './__arbitraries__/sharedSettings'; - -describe('toStrictEqual', () => { - it('should be reflexive', () => { - fc.assert( - fc.property(fc.dedup(fc.anything(anythingSettings), 2), ([a, b]) => { - // Given: a and b identical values - expect(a).toStrictEqual(b); - }), - assertSettings, - ); - }); - - it('should be symmetric', () => { - const safeExpectStrictEqual = (a, b) => { - try { - expect(a).toStrictEqual(b); - return true; - } catch (err) { - return false; - } - }; - fc.assert( - fc.property( - fc.anything(anythingSettings), - fc.anything(anythingSettings), - (a, b) => { - // Given: a and b values - // Assert: We expect `expect(a).toStrictEqual(b)` - // to be equivalent to `expect(b).toStrictEqual(a)` - expect(safeExpectStrictEqual(a, b)).toBe(safeExpectStrictEqual(b, a)); - }, - ), - assertSettings, - ); - }); -}); +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import fc from 'fast-check'; +import { + anythingSettings, + assertSettings, +} from './__arbitraries__/sharedSettings'; + +describe('toStrictEqual', () => { + it('should be reflexive', () => { + fc.assert( + fc.property(fc.dedup(fc.anything(anythingSettings), 2), ([a, b]) => { + // Given: a and b identical values + expect(a).toStrictEqual(b); + }), + assertSettings, + ); + }); + + it('should be symmetric', () => { + const safeExpectStrictEqual = (a, b) => { + try { + expect(a).toStrictEqual(b); + return true; + } catch (err) { + return false; + } + }; + fc.assert( + fc.property( + fc.anything(anythingSettings), + fc.anything(anythingSettings), + (a, b) => { + // Given: a and b values + // Assert: We expect `expect(a).toStrictEqual(b)` + // to be equivalent to `expect(b).toStrictEqual(a)` + expect(safeExpectStrictEqual(a, b)).toBe(safeExpectStrictEqual(b, a)); + }, + ), + assertSettings, + ); + }); +});