From 20bb526d2c0c3f5dbb626f690c5a33a22cc0c789 Mon Sep 17 00:00:00 2001 From: Kartik Budhiraja Date: Sun, 13 Oct 2019 00:47:42 -0400 Subject: [PATCH] Tests for extending ESlint (#7519) --- test/fixtures/extending-eslint-javscript/.env | 1 + .../extend-eslint-config.js | 5 +++ .../extending-eslint-javscript/index.test.js | 11 +++++++ .../extending-eslint-javscript/package.json | 22 +++++++++++++ .../extending-eslint-javscript/src/App.js | 14 ++++++++ .../extending-eslint-javscript/src/index.js | 5 +++ .../extending-eslint-typescript/index.test.js | 10 ++++++ .../extending-eslint-typescript/package.json | 32 +++++++++++++++++++ .../extending-eslint-typescript/src/App.tsx | 14 ++++++++ .../extending-eslint-typescript/src/index.tsx | 5 +++ 10 files changed, 119 insertions(+) create mode 100644 test/fixtures/extending-eslint-javscript/.env create mode 100644 test/fixtures/extending-eslint-javscript/extend-eslint-config.js create mode 100644 test/fixtures/extending-eslint-javscript/index.test.js create mode 100644 test/fixtures/extending-eslint-javscript/package.json create mode 100644 test/fixtures/extending-eslint-javscript/src/App.js create mode 100644 test/fixtures/extending-eslint-javscript/src/index.js create mode 100644 test/fixtures/extending-eslint-typescript/index.test.js create mode 100644 test/fixtures/extending-eslint-typescript/package.json create mode 100644 test/fixtures/extending-eslint-typescript/src/App.tsx create mode 100644 test/fixtures/extending-eslint-typescript/src/index.tsx diff --git a/test/fixtures/extending-eslint-javscript/.env b/test/fixtures/extending-eslint-javscript/.env new file mode 100644 index 00000000000..3ccb8fff3ef --- /dev/null +++ b/test/fixtures/extending-eslint-javscript/.env @@ -0,0 +1 @@ +EXTEND_ESLINT=true \ No newline at end of file diff --git a/test/fixtures/extending-eslint-javscript/extend-eslint-config.js b/test/fixtures/extending-eslint-javscript/extend-eslint-config.js new file mode 100644 index 00000000000..f2a2ba4aee7 --- /dev/null +++ b/test/fixtures/extending-eslint-javscript/extend-eslint-config.js @@ -0,0 +1,5 @@ +module.exports = { + rules: { + 'no-useless-constructor': 'error', + }, +}; diff --git a/test/fixtures/extending-eslint-javscript/index.test.js b/test/fixtures/extending-eslint-javscript/index.test.js new file mode 100644 index 00000000000..8ba2eb8f562 --- /dev/null +++ b/test/fixtures/extending-eslint-javscript/index.test.js @@ -0,0 +1,11 @@ +const testSetup = require('../__shared__/test-setup'); + +test('extended eslint error should break the development', async () => { + const { fulfilled } = await testSetup.scripts.start({ smoke: true }); + expect(fulfilled).toBe(false); +}); + +test('extended eslint error should break the build in production', async () => { + const { fulfilled } = await testSetup.scripts.build(); + expect(fulfilled).toBe(false); +}); diff --git a/test/fixtures/extending-eslint-javscript/package.json b/test/fixtures/extending-eslint-javscript/package.json new file mode 100644 index 00000000000..a71fc565b45 --- /dev/null +++ b/test/fixtures/extending-eslint-javscript/package.json @@ -0,0 +1,22 @@ +{ + "eslintConfig": { + "extends": [ + "react-app", + "./extend-eslint-config.js" + ] + }, + "dependencies": { + "react": "latest", + "react-dom": "latest", + "eslint-config-react-app": "latest", + "@typescript-eslint/eslint-plugin": "2.x", + "@typescript-eslint/parser": "2.x", + "babel-eslint": "10.x", + "eslint": "6.x", + "eslint-plugin-flowtype": "3.x", + "eslint-plugin-import": "2.x", + "eslint-plugin-jsx-a11y": "6.x", + "eslint-plugin-react": "7.x", + "eslint-plugin-react-hooks": "1.x" + } +} \ No newline at end of file diff --git a/test/fixtures/extending-eslint-javscript/src/App.js b/test/fixtures/extending-eslint-javscript/src/App.js new file mode 100644 index 00000000000..014529b3979 --- /dev/null +++ b/test/fixtures/extending-eslint-javscript/src/App.js @@ -0,0 +1,14 @@ +import React, { Component } from 'react'; + +class App extends Component { + // Should cause the build to fail due to extended eslint rule change + constructor(props) { + super(props); + } + + render() { + return
Hello
; + } +} + +export default App; diff --git a/test/fixtures/extending-eslint-javscript/src/index.js b/test/fixtures/extending-eslint-javscript/src/index.js new file mode 100644 index 00000000000..b597a44232c --- /dev/null +++ b/test/fixtures/extending-eslint-javscript/src/index.js @@ -0,0 +1,5 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './App'; + +ReactDOM.render(, document.getElementById('root')); diff --git a/test/fixtures/extending-eslint-typescript/index.test.js b/test/fixtures/extending-eslint-typescript/index.test.js new file mode 100644 index 00000000000..fe5a94870e8 --- /dev/null +++ b/test/fixtures/extending-eslint-typescript/index.test.js @@ -0,0 +1,10 @@ +const testSetup = require('../__shared__/test-setup'); + +test('extending eslint typescript in development', async () => { + const { fulfilled } = await testSetup.scripts.start({ smoke: true }); + expect(fulfilled).toBe(false); +}); +test('extending eslint typescript in production', async () => { + const { fulfilled } = await testSetup.scripts.build(); + expect(fulfilled).toBe(false); +}); diff --git a/test/fixtures/extending-eslint-typescript/package.json b/test/fixtures/extending-eslint-typescript/package.json new file mode 100644 index 00000000000..39aae868b83 --- /dev/null +++ b/test/fixtures/extending-eslint-typescript/package.json @@ -0,0 +1,32 @@ +{ + "eslintConfig": { + "overrides": [ + { + "files": [ + "**/*.ts?(x)" + ], + "rules": { + "@typescript-eslint/no-useless-constructor'": "error" + } + } + ] + }, + "dependencies": { + "typescript": "3.1.3", + "@types/react": "*", + "@types/react-dom": "*", + "@types/jest": "*", + "react": "*", + "react-dom": "*", + "eslint-config-react-app": "latest", + "@typescript-eslint/eslint-plugin": "2.x", + "@typescript-eslint/parser": "2.x", + "babel-eslint": "10.x", + "eslint": "6.x", + "eslint-plugin-flowtype": "3.x", + "eslint-plugin-import": "2.x", + "eslint-plugin-jsx-a11y": "6.x", + "eslint-plugin-react": "7.x", + "eslint-plugin-react-hooks": "1.x" + } +} \ No newline at end of file diff --git a/test/fixtures/extending-eslint-typescript/src/App.tsx b/test/fixtures/extending-eslint-typescript/src/App.tsx new file mode 100644 index 00000000000..b363999c8f4 --- /dev/null +++ b/test/fixtures/extending-eslint-typescript/src/App.tsx @@ -0,0 +1,14 @@ +import * as React from 'react'; + + +class App extends React.Component { + constructor(props:any) { + super(props) + } + + render() { + return
; + } +} + +export default App; diff --git a/test/fixtures/extending-eslint-typescript/src/index.tsx b/test/fixtures/extending-eslint-typescript/src/index.tsx new file mode 100644 index 00000000000..bea6ed52237 --- /dev/null +++ b/test/fixtures/extending-eslint-typescript/src/index.tsx @@ -0,0 +1,5 @@ +import * as React from 'react'; +import * as ReactDOM from 'react-dom'; +import App from './App'; + +ReactDOM.render(, document.getElementById('root'));