From a1cfbfb7bb553fcef1d8fc25f0dda07abcddc3c5 Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Wed, 22 Mar 2017 20:35:18 -0700 Subject: [PATCH 01/12] Wire up testing and linting --- .eslintrc | 36 ++++++++++++++++++++++++++++++++++++ .gitignore | 1 + package.json | 15 ++++++++++++++- 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 .eslintrc diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..f18841f3 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,36 @@ +{ + "parser": "babel-eslint", + + "env": { + "browser": true, + "node": true + }, + + "parserOptions": { + "ecmaFeatures": { + "jsx": true + } + }, + + "extends": ["eslint:recommended", "plugin:react/recommended"], + + "plugins": [ + "react" + ], + + "rules": { + "semi": [2, "never"], + "strict": 0, + "quotes": 1, + "no-unused-vars": 1, + "no-multi-spaces": 1, + "camelcase": 1, + "no-use-before-define": [2,"nofunc"], + "no-underscore-dangle": 0, + "no-unused-expressions": 1, + "comma-dangle": 0, + "no-console": ["error", { allow: ["warn", "error"] }], + "react/jsx-no-bind": 1, + "react/display-name": 0 + } +} diff --git a/.gitignore b/.gitignore index e5ab13fd..3930fdf4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules .deps_check .DS_Store npm-debug.log +.eslintcache diff --git a/package.json b/package.json index 1849e3ee..6beb495e 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,13 @@ "deps-license": "license-checker --production --csv --out $npm_package_config_deps_check_dir/licenses.csv && license-checker --development --csv --out $npm_package_config_deps_check_dir/licenses-dev.csv", "deps-size": "webpack -p --config webpack.check.js --json | webpack-bundle-size-analyzer >| $npm_package_config_deps_check_dir/sizes.txt", "deps-check": "npm run deps-license && npm run deps-size", - "just-test-in-node": "mocha --recursive --compilers js:babel-core/register test/core" + "lint": "eslint --cache --ext '.js,.jsx' src/js test", + "lint-errors": "eslint --cache --quiet --ext '.js,.jsx' src/js test", + "lint-fix": "eslint --cache --ext '.js,.jsx' src/js test --fix", + "test": "npm run lint-errors && npm run just-test-in-node", + "test-in-node": "npm run lint-errors && npm run just-test-in-node", + "just-test": "karma start --config karma.conf.js", + "just-test-in-node": "mocha --recursive --compilers js:babel-core/register test/core test/components" }, "dependencies": { "brace": "0.7.0", @@ -84,11 +90,18 @@ "css-loader": "0.22.0", "deep-extend": "^0.4.1", "deepmerge": "^1.3.2", + "eslint": "^2.13.1", + "eslint-plugin-react": "^4.3.0", "extract-text-webpack-plugin": "0.8.2", "file-loader": "0.8.4", "html-webpack-plugin": "^2.28.0", "imports-loader": "0.6.5", "json-loader": "0.5.3", + "karma": "^0.13.22", + "karma-chrome-launcher": "^0.2.3", + "karma-mocha": "^0.2.2", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "1.8.0", "less": "2.5.3", "less-loader": "2.2.1", "license-checker": "^8.0.4", From 664e44d3d995630e3e6a365c1df49ccdf740bd89 Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Wed, 22 Mar 2017 20:39:30 -0700 Subject: [PATCH 02/12] Use correct eslint paths --- .eslintrc | 3 ++- package.json | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.eslintrc b/.eslintrc index f18841f3..c0528525 100644 --- a/.eslintrc +++ b/.eslintrc @@ -3,7 +3,8 @@ "env": { "browser": true, - "node": true + "node": true, + "es6": true }, "parserOptions": { diff --git a/package.json b/package.json index 6beb495e..3be3775d 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,9 @@ "deps-license": "license-checker --production --csv --out $npm_package_config_deps_check_dir/licenses.csv && license-checker --development --csv --out $npm_package_config_deps_check_dir/licenses-dev.csv", "deps-size": "webpack -p --config webpack.check.js --json | webpack-bundle-size-analyzer >| $npm_package_config_deps_check_dir/sizes.txt", "deps-check": "npm run deps-license && npm run deps-size", - "lint": "eslint --cache --ext '.js,.jsx' src/js test", - "lint-errors": "eslint --cache --quiet --ext '.js,.jsx' src/js test", - "lint-fix": "eslint --cache --ext '.js,.jsx' src/js test --fix", + "lint": "eslint --cache --ext '.js,.jsx' src test", + "lint-errors": "eslint --cache --quiet --ext '.js,.jsx' src test", + "lint-fix": "eslint --cache --ext '.js,.jsx' src test --fix", "test": "npm run lint-errors && npm run just-test-in-node", "test-in-node": "npm run lint-errors && npm run just-test-in-node", "just-test": "karma start --config karma.conf.js", From f195d01184df2055121d2019a7e37479d6dee89f Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Wed, 22 Mar 2017 20:40:05 -0700 Subject: [PATCH 03/12] Autofix ESLint problems --- src/core/components/content-type.jsx | 2 +- src/core/components/models.jsx | 4 +-- .../components/online-validator-badge.jsx | 2 +- src/core/components/response.jsx | 2 +- src/core/index.js | 2 +- .../components/split-pane-mode.jsx | 8 ++--- src/core/utils.js | 10 +++--- src/plugins/topbar/index.js | 2 +- src/standalone/index.js | 4 +-- src/standalone/layout.jsx | 2 +- test/core/curlify.js | 32 +++++++++---------- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/core/components/content-type.jsx b/src/core/components/content-type.jsx index 0d6727e8..1afffd33 100644 --- a/src/core/components/content-type.jsx +++ b/src/core/components/content-type.jsx @@ -1,6 +1,6 @@ import React, { PropTypes } from "react" import ImPropTypes from "react-immutable-proptypes" -import { fromJS } from 'immutable' +import { fromJS } from "immutable" const noop = ()=>{} diff --git a/src/core/components/models.jsx b/src/core/components/models.jsx index 3dfe1c1a..f3348262 100644 --- a/src/core/components/models.jsx +++ b/src/core/components/models.jsx @@ -10,7 +10,7 @@ export default class Models extends Component { render(){ let { specSelectors, getComponent, layoutSelectors, layoutActions } = this.props let definitions = specSelectors.definitions() - let showModels = layoutSelectors.isShown('models', true) + let showModels = layoutSelectors.isShown("models", true) const Model = getComponent("model") const Collapse = getComponent("Collapse") @@ -18,7 +18,7 @@ export default class Models extends Component { if (!definitions.size) return null return
-

layoutActions.show('models', !showModels)}> +

layoutActions.show("models", !showModels)}> Models diff --git a/src/core/components/online-validator-badge.jsx b/src/core/components/online-validator-badge.jsx index 79c6f55c..292e1a74 100644 --- a/src/core/components/online-validator-badge.jsx +++ b/src/core/components/online-validator-badge.jsx @@ -31,7 +31,7 @@ export default class OnlineValidatorBadge extends React.Component { return null } - return ( + return ( Online validator badge diff --git a/src/core/components/response.jsx b/src/core/components/response.jsx index 67b19285..3ac62f19 100644 --- a/src/core/components/response.jsx +++ b/src/core/components/response.jsx @@ -1,5 +1,5 @@ import React, { PropTypes } from "react" -import { fromJS } from 'immutable' +import { fromJS } from "immutable" import { getSampleSchema } from "core/utils" const getExampleComponent = ( sampleResponse, examples, HighlightCode ) => { diff --git a/src/core/index.js b/src/core/index.js index 48a63fae..322c65f2 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -79,7 +79,7 @@ module.exports = function SwaggerUI(opts) { if(!queryConfig.url && typeof mergedConfig.spec === "object" && Object.keys(mergedConfig.spec).length) { system.specActions.updateUrl("") - system.specActions.updateLoadingStatus("success"); + system.specActions.updateLoadingStatus("success") system.specActions.updateSpec(JSON.stringify(mergedConfig.spec)) } else if(system.specActions.download && mergedConfig.url) { system.specActions.updateUrl(mergedConfig.url) diff --git a/src/core/plugins/split-pane-mode/components/split-pane-mode.jsx b/src/core/plugins/split-pane-mode/components/split-pane-mode.jsx index 91665b2b..74190445 100644 --- a/src/core/plugins/split-pane-mode/components/split-pane-mode.jsx +++ b/src/core/plugins/split-pane-mode/components/split-pane-mode.jsx @@ -57,14 +57,14 @@ export default class SplitPaneMode extends React.Component { const mode = layoutSelectors.whatMode(MODE_KEY) const left = mode === MODE_RIGHT ?