From 9c2d1fcddfac807266150e666f0b908ef3fa7b19 Mon Sep 17 00:00:00 2001 From: "Timo M. Staudinger" Date: Fri, 25 Jan 2019 16:45:33 -0500 Subject: [PATCH 1/6] Check out and create new files with Unix style LF line endings By default, files will be checked out and created with CRLF line endings under Windows. This is rejected by the repository's ESLint rules. --- .editorconfig | 6 ++++++ .gitattributes | 1 + 2 files changed, 7 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000000..988c43c4419 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,6 @@ +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000000..94f480de94e --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf \ No newline at end of file From 0fe03f84d2adf34125f2e1fbac7af8cf4f0d17d9 Mon Sep 17 00:00:00 2001 From: "Timo M. Staudinger" Date: Mon, 28 Jan 2019 11:40:44 -0500 Subject: [PATCH 2/6] Fix react-tokens test utilities for Windows --- packages/patternfly-4/react-tokens/build/generateTokens.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/patternfly-4/react-tokens/build/generateTokens.test.js b/packages/patternfly-4/react-tokens/build/generateTokens.test.js index ea9413b6d15..69026948bb9 100644 --- a/packages/patternfly-4/react-tokens/build/generateTokens.test.js +++ b/packages/patternfly-4/react-tokens/build/generateTokens.test.js @@ -55,7 +55,7 @@ test('keeps variable reference if computing fails', () => { function getOutputs() { return outputFileSyncMock.mock.calls.reduce((acc, call) => { const [filePath, content] = call; - const splitPath = filePath.split('/'); + const splitPath = filePath.split(/[/\\]/); const name = splitPath.slice(-2).join('/'); return { ...acc, From 1877201ebc33efcac05f4321aea39d2a863c523b Mon Sep 17 00:00:00 2001 From: "Timo M. Staudinger" Date: Mon, 28 Jan 2019 13:30:09 -0500 Subject: [PATCH 3/6] Apply correct line endings to expected codemod outputs during testing --- package.json | 2 +- .../transforms/pf3-pf4.button.test.js | 24 +++++++++++++++++-- packages/react-codemods/transforms/pf3-pf4.js | 2 +- .../react-codemods/transforms/pf3-pf4.test.js | 24 +++++++++++++++++-- yarn.lock | 5 ++++ 5 files changed, 51 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 893ba73f8c7..1bcf05a558a 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "minimist": "^1.2.0", "npmlog": "^4.1.2", "plop": "^2.0.0", - "prettier": "^1.14.2", + "prettier": "^1.16.1", "prettier-eslint": "^8.8.1", "prop-types": "^15.6.1", "raf": "^3.4.0", diff --git a/packages/react-codemods/transforms/pf3-pf4.button.test.js b/packages/react-codemods/transforms/pf3-pf4.button.test.js index fb48dc3ef48..8b85ef15409 100644 --- a/packages/react-codemods/transforms/pf3-pf4.button.test.js +++ b/packages/react-codemods/transforms/pf3-pf4.button.test.js @@ -1,9 +1,29 @@ +import { EOL as SYSTEM_EOL } from 'os'; import prettier from 'prettier'; import { defineInlineTest } from 'jscodeshift/dist/testUtils'; import transform from './pf3-pf4'; -const prettierConfig = prettier.resolveConfig.sync(process.cwd()); -const pretty = src => prettier.format(src, { parser: 'babylon', ...prettierConfig }); +/** + * Codemod outputs should follow the EOL pattern of the target codebase, not + * Patternfly's. Patternfly currently enforces LF as line ending, independent of + * the OS building the codebase. + * + * JSCodeShift produces OS-dependent line endings however, LF for Unix based + * systems, and CRLF for Windows based ones. This is also likely what most + * projects would like to see the codemod prduce. + * + * To make sure we both adhere to Patternfly's conventions, and compare the + * correct OS-specific line endings during the test cases' assertions, we store + * expected values with LF line endings, and convert them into the OS-specific + * ones at runtime using prettier. + */ +const PRETTIER_EOL = SYSTEM_EOL === '\r\n' ? 'crlf' : 'cr'; +const prettierConfig = { + ...prettier.resolveConfig.sync(process.cwd()), + parser: 'babel', + endOfLine: PRETTIER_EOL +}; +const pretty = src => prettier.format(src, prettierConfig); global.console.log = jest.fn(); diff --git a/packages/react-codemods/transforms/pf3-pf4.js b/packages/react-codemods/transforms/pf3-pf4.js index ce02db52dce..22c5b820cee 100644 --- a/packages/react-codemods/transforms/pf3-pf4.js +++ b/packages/react-codemods/transforms/pf3-pf4.js @@ -149,7 +149,7 @@ module.exports = (file, api, options) => { return prettier ? prettier.format(transformedSource, { - parser: 'babylon', + parser: 'babel', ...prettier.resolveConfig.sync(process.cwd()) }) : transformedSource; diff --git a/packages/react-codemods/transforms/pf3-pf4.test.js b/packages/react-codemods/transforms/pf3-pf4.test.js index bf792d9247f..209e9c40af6 100644 --- a/packages/react-codemods/transforms/pf3-pf4.test.js +++ b/packages/react-codemods/transforms/pf3-pf4.test.js @@ -1,9 +1,29 @@ +import { EOL as SYSTEM_EOL } from 'os'; import prettier from 'prettier'; import { defineInlineTest, runInlineTest } from 'jscodeshift/dist/testUtils'; import transform from './pf3-pf4'; -const prettierConfig = prettier.resolveConfig.sync(process.cwd()); -const pretty = src => prettier.format(src, { parser: 'babylon', ...prettierConfig }); +/** + * Codemod outputs should follow the EOL pattern of the target codebase, not + * Patternfly's. Patternfly currently enforces LF as line ending, independent of + * the OS building the codebase. + * + * JSCodeShift produces OS-dependent line endings however, LF for Unix based + * systems, and CRLF for Windows based ones. This is also likely what most + * projects would like to see the codemod prduce. + * + * To make sure we both adhere to Patternfly's conventions, and compare the + * correct OS-specific line endings during the test cases' assertions, we store + * expected values with LF line endings, and convert them into the OS-specific + * ones at runtime using prettier. + */ +const PRETTIER_EOL = SYSTEM_EOL === '\r\n' ? 'crlf' : 'cr'; +const prettierConfig = { + ...prettier.resolveConfig.sync(process.cwd()), + parser: 'babel', + endOfLine: PRETTIER_EOL +}; +const pretty = src => prettier.format(src, prettierConfig); global.console.log = jest.fn(); diff --git a/yarn.lock b/yarn.lock index 00656d08e19..6307665e57f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16189,6 +16189,11 @@ prettier@^1.14.2: version "1.14.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.2.tgz#0ac1c6e1a90baa22a62925f41963c841983282f9" +prettier@^1.16.1: + version "1.16.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.1.tgz#534c2c9d7853f8845e5e078384e71973bd74089f" + integrity sha512-XXUITwIkGb3CPJ2hforHah/zTINRyie5006Jd2HKy2qz7snEJXl0KLfsJZW/wst9g6R2rFvqba3VpNYdu1hDcA== + pretty-bytes@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" From 84c5eb7384dba5c7e15a2dd4d2a66dc29c01071a Mon Sep 17 00:00:00 2001 From: "Timo M. Staudinger" Date: Mon, 28 Jan 2019 16:16:56 -0500 Subject: [PATCH 4/6] Generate correct style sheet import statements during react-core build --- packages/patternfly-4/react-styles/src/build/util.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/patternfly-4/react-styles/src/build/util.js b/packages/patternfly-4/react-styles/src/build/util.js index 92c4dbbef36..5ecd47c03e3 100644 --- a/packages/patternfly-4/react-styles/src/build/util.js +++ b/packages/patternfly-4/react-styles/src/build/util.js @@ -40,7 +40,7 @@ export function writeCSSJSFile(rootPath, originalPath, destinationPath, contents export function getRelativeImportPath(from, to) { const parsedTo = path.parse(to); - const newImportPath = path.normalize(path.join(relative(from, parsedTo.dir), parsedTo.base).replace(/\\/g, '')); + const newImportPath = path.normalize(path.join(relative(from, parsedTo.dir), parsedTo.base)); return newImportPath.startsWith('.') ? newImportPath : `./${newImportPath}`; } From f23d5ca44f83db8dcd3d1103ec2a7a885107b48a Mon Sep 17 00:00:00 2001 From: "Timo M. Staudinger" Date: Fri, 1 Feb 2019 11:37:15 -0500 Subject: [PATCH 5/6] Fix formatting of Patternfly 3 packages --- .../CatalogTileViewCategory.js | 25 +++++----- .../Filter/__mocks__/mockFilterExample.js | 43 +++++++++-------- .../LoginCardSocialColumns.js | 13 +++-- .../__mocks__/mockClientPaginationTable.js | 8 ++-- .../Toolbar/__mocks__/mockToolbarExample.js | 47 +++++++++---------- .../VerticalNav/VerticalNavItemHelper.js | 35 +++++++------- .../Wizard/Stories/WizardExample.js | 26 +++++----- .../src/AccessConsoles/AccessConsoles.js | 35 +++++++------- 8 files changed, 111 insertions(+), 121 deletions(-) diff --git a/packages/patternfly-3/patternfly-react-extensions/src/components/CatalogTileView/CatalogTileViewCategory.js b/packages/patternfly-3/patternfly-react-extensions/src/components/CatalogTileView/CatalogTileViewCategory.js index b60d59eae03..d47f4536712 100644 --- a/packages/patternfly-3/patternfly-react-extensions/src/components/CatalogTileView/CatalogTileViewCategory.js +++ b/packages/patternfly-3/patternfly-react-extensions/src/components/CatalogTileView/CatalogTileViewCategory.js @@ -93,19 +93,18 @@ class CatalogTileViewCategory extends React.Component {
{title} - {!viewAll && - numShown < totalItems && ( - - - - )} + {!viewAll && numShown < totalItems && ( + + + + )}
{catalogTiles} diff --git a/packages/patternfly-3/patternfly-react/src/components/Filter/__mocks__/mockFilterExample.js b/packages/patternfly-3/patternfly-react/src/components/Filter/__mocks__/mockFilterExample.js index 37a0215c3b1..e33e8215394 100644 --- a/packages/patternfly-3/patternfly-react/src/components/Filter/__mocks__/mockFilterExample.js +++ b/packages/patternfly-3/patternfly-react/src/components/Filter/__mocks__/mockFilterExample.js @@ -277,28 +277,27 @@ export class MockFilterExample extends React.Component { {this.renderInput()}
- {activeFilters && - activeFilters.length > 0 && ( - - Active Filters: - - {activeFilters.map((item, index) => ( - - {item.label} - - ))} - - { - e.preventDefault(); - this.clearFilters(); - }} - > - Clear All Filters - - - )} + {activeFilters && activeFilters.length > 0 && ( + + Active Filters: + + {activeFilters.map((item, index) => ( + + {item.label} + + ))} + + { + e.preventDefault(); + this.clearFilters(); + }} + > + Clear All Filters + + + )}
); } diff --git a/packages/patternfly-3/patternfly-react/src/components/LoginPage/components/LoginCardComponents/LoginCardSocialColumns.js b/packages/patternfly-3/patternfly-react/src/components/LoginPage/components/LoginCardComponents/LoginCardSocialColumns.js index 7fcbed9e832..bbe1af21522 100644 --- a/packages/patternfly-3/patternfly-react/src/components/LoginPage/components/LoginCardComponents/LoginCardSocialColumns.js +++ b/packages/patternfly-3/patternfly-react/src/components/LoginPage/components/LoginCardComponents/LoginCardSocialColumns.js @@ -60,13 +60,12 @@ class LoginCardSocialColumns extends React.Component { return null; } const { expend, width } = this.state; - const expendButton = width > 768 && - links.length > numberOfButtonsToShow && ( - - ); + const expendButton = width > 768 && links.length > numberOfButtonsToShow && ( + + ); const doubleColumn = links.length > 4 ? 'login-pf-social-double-col' : ''; const moreItems = expend || width < 768 ? this.getHiddenListItems() : null; diff --git a/packages/patternfly-3/patternfly-react/src/components/Table/__mocks__/mockClientPaginationTable.js b/packages/patternfly-3/patternfly-react/src/components/Table/__mocks__/mockClientPaginationTable.js index f6bd77726c2..ad836bea4ab 100644 --- a/packages/patternfly-3/patternfly-react/src/components/Table/__mocks__/mockClientPaginationTable.js +++ b/packages/patternfly-3/patternfly-react/src/components/Table/__mocks__/mockClientPaginationTable.js @@ -295,8 +295,8 @@ export class MockClientPaginationTable extends React.Component { if (checked) { const updatedSelections = [...new Set([...currentRows.map(r => r.id), ...selectedRows])]; - const updatedRows = rows.map( - r => (updatedSelections.indexOf(r.id) > -1 ? MockClientPaginationTable.selectRow(r) : r) + const updatedRows = rows.map(r => + updatedSelections.indexOf(r.id) > -1 ? MockClientPaginationTable.selectRow(r) : r ); this.setState({ // important: you must update rows to force a re-render and trigger onRow hook @@ -307,8 +307,8 @@ export class MockClientPaginationTable extends React.Component { } else { const ids = currentRows.map(r => r.id); const updatedSelections = selectedRows.filter(r => !(ids.indexOf(r) > -1)); - const updatedRows = rows.map( - r => (updatedSelections.indexOf(r.id) > -1 ? r : MockClientPaginationTable.deselectRow(r)) + const updatedRows = rows.map(r => + updatedSelections.indexOf(r.id) > -1 ? r : MockClientPaginationTable.deselectRow(r) ); this.setState({ rows: updatedRows, diff --git a/packages/patternfly-3/patternfly-react/src/components/Toolbar/__mocks__/mockToolbarExample.js b/packages/patternfly-3/patternfly-react/src/components/Toolbar/__mocks__/mockToolbarExample.js index de22f88636c..8fb4f02a42f 100644 --- a/packages/patternfly-3/patternfly-react/src/components/Toolbar/__mocks__/mockToolbarExample.js +++ b/packages/patternfly-3/patternfly-react/src/components/Toolbar/__mocks__/mockToolbarExample.js @@ -318,30 +318,29 @@ export class MockToolbarExample extends React.Component {
40 Results
))} - {activeFilters && - activeFilters.length > 0 && ( - -
40 Results
- Active Filters: - - {activeFilters.map((item, index) => ( - - label= - {item.label} - - ))} - - { - e.preventDefault(); - this.clearFilters(); - }} - > - Clear All Filters - -
- )} + {activeFilters && activeFilters.length > 0 && ( + +
40 Results
+ Active Filters: + + {activeFilters.map((item, index) => ( + + label= + {item.label} + + ))} + + { + e.preventDefault(); + this.clearFilters(); + }} + > + Clear All Filters + +
+ )} ); } diff --git a/packages/patternfly-3/patternfly-react/src/components/VerticalNav/VerticalNavItemHelper.js b/packages/patternfly-3/patternfly-react/src/components/VerticalNav/VerticalNavItemHelper.js index 75afa3f1631..895476faa8a 100644 --- a/packages/patternfly-3/patternfly-react/src/components/VerticalNav/VerticalNavItemHelper.js +++ b/packages/patternfly-3/patternfly-react/src/components/VerticalNav/VerticalNavItemHelper.js @@ -280,25 +280,24 @@ class BaseVerticalNavItemHelper extends React.Component { {title} {showBadges && childBadgeComponents &&
{childBadgeComponents}
} - {childItemComponents && - childItemComponents.length > 0 && ( -
-
- {(pinnableMenus || isMobile) && ( - - )} - {title} -
- - {childItemComponents} - + {childItemComponents && childItemComponents.length > 0 && ( + + )} ); diff --git a/packages/patternfly-3/patternfly-react/src/components/Wizard/Stories/WizardExample.js b/packages/patternfly-3/patternfly-react/src/components/Wizard/Stories/WizardExample.js index b2005704448..cde44b59d2f 100644 --- a/packages/patternfly-3/patternfly-react/src/components/Wizard/Stories/WizardExample.js +++ b/packages/patternfly-3/patternfly-react/src/components/Wizard/Stories/WizardExample.js @@ -60,20 +60,18 @@ export class WizardExample extends MockWizardBase { )} - {activeStepIndex === 2 && - activeSubStepIndex === 0 && ( - - )} - {activeStepIndex === 2 && - activeSubStepIndex === 1 && ( - - )} + {activeStepIndex === 2 && activeSubStepIndex === 0 && ( + + )} + {activeStepIndex === 2 && activeSubStepIndex === 1 && ( + + )}
diff --git a/packages/patternfly-3/react-console/src/AccessConsoles/AccessConsoles.js b/packages/patternfly-3/react-console/src/AccessConsoles/AccessConsoles.js index c0169a045a9..3775838f958 100644 --- a/packages/patternfly-3/react-console/src/AccessConsoles/AccessConsoles.js +++ b/packages/patternfly-3/react-console/src/AccessConsoles/AccessConsoles.js @@ -59,14 +59,12 @@ class AccessConsoles extends React.Component { getConsoleForType(type) { // To keep connection, render all consoles but hide those unused - return React.Children.map( - this.props.children, - child => - this.state.keptConnection[getChildTypeName(child)] ? ( - - ) : null + return React.Children.map(this.props.children, child => + this.state.keptConnection[getChildTypeName(child)] ? ( + + ) : null ); } @@ -105,17 +103,16 @@ class AccessConsoles extends React.Component { )} - {this.state.type !== NONE_TYPE && - this.state.type !== DESKTOP_VIEWER_CONSOLE_TYPE && ( - this.onChangeDisconnectBySwitchClick(e.target)} - > - {this.props.textDisconnectByChange} - - )} + {this.state.type !== NONE_TYPE && this.state.type !== DESKTOP_VIEWER_CONSOLE_TYPE && ( + this.onChangeDisconnectBySwitchClick(e.target)} + > + {this.props.textDisconnectByChange} + + )} From 3f517e968f30c572c4233c97e33ac231ead7a718 Mon Sep 17 00:00:00 2001 From: redallen Date: Mon, 11 Mar 2019 15:00:35 -0400 Subject: [PATCH 6/6] bump yarn.lock --- yarn.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 2d03a700463..8f1a9310329 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16699,7 +16699,7 @@ prettier@^1.14.2: version "1.14.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.2.tgz#0ac1c6e1a90baa22a62925f41963c841983282f9" -prettier@^1.16.0: +prettier@^1.16.0, prettier@^1.16.1: version "1.16.4" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717"