From 647521f6a7b46cd8e85f33dd1e02d5e54aaf0da9 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Wed, 16 Jan 2019 17:04:29 -0800 Subject: [PATCH] [Tests] improve version detection tests. See #2128 --- package.json | 1 + tests/util/version.js | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/package.json b/package.json index 50b33bde1b..ecba483ad5 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0", "istanbul": "^0.4.5", "mocha": "^5.2.0", + "sinon": "^7.2.2", "typescript": "^3.2.2", "typescript-eslint-parser": "^20.1.1" }, diff --git a/tests/util/version.js b/tests/util/version.js index a4d7733720..62fa58af20 100644 --- a/tests/util/version.js +++ b/tests/util/version.js @@ -3,19 +3,27 @@ const path = require('path'); const assert = require('assert'); +const sinon = require('sinon'); const versionUtil = require('../../lib/util/version'); describe('Version', () => { const base = path.resolve(__dirname, '..', 'fixtures', 'version'); let cwd; + let expectedErrorArgs = []; beforeEach(() => { cwd = process.cwd(); process.chdir(base); + sinon.stub(console, 'error'); + expectedErrorArgs = []; }); afterEach(() => { process.chdir(cwd); + + var actualArgs = console.error.args; + console.error.restore(); + assert.deepEqual(actualArgs, expectedErrorArgs); }); describe('Detect version', () => { @@ -29,6 +37,26 @@ describe('Version', () => { it('assumes latest version if react is not installed', () => { assert.equal(versionUtil.testReactVersion(context, '999.999.999'), true); + + expectedErrorArgs = [ + ['Warning: React version was set to "detect" in eslint-plugin-react settings, but the "react" package is not installed. Assuming latest React version for linting.'] + ]; + }); + }); + + describe('string version', () => { + const context = {settings: {react: {version: '15.0', flowVersion: '1.2'}}}; + + it('works with react', () => { + assert.equal(versionUtil.testReactVersion(context, '0.14.0'), true); + assert.equal(versionUtil.testReactVersion(context, '15.0.0'), true); + assert.equal(versionUtil.testReactVersion(context, '16.0.0'), false); + }); + + it('works with flow', () => { + assert.equal(versionUtil.testFlowVersion(context, '1.1.0'), true); + assert.equal(versionUtil.testFlowVersion(context, '1.2.0'), true); + assert.equal(versionUtil.testFlowVersion(context, '1.3.0'), false); }); }); @@ -39,12 +67,24 @@ describe('Version', () => { assert.equal(versionUtil.testReactVersion(context, '0.14.0'), true); assert.equal(versionUtil.testReactVersion(context, '15.0.0'), true); assert.equal(versionUtil.testReactVersion(context, '16.0.0'), false); + + expectedErrorArgs = [ + ['Warning: React version specified in eslint-plugin-react-settings must be a string; got “number”'], + ['Warning: React version specified in eslint-plugin-react-settings must be a string; got “number”'], + ['Warning: React version specified in eslint-plugin-react-settings must be a string; got “number”'] + ]; }); it('works with flow', () => { assert.equal(versionUtil.testFlowVersion(context, '1.1.0'), true); assert.equal(versionUtil.testFlowVersion(context, '1.2.0'), true); assert.equal(versionUtil.testFlowVersion(context, '1.3.0'), false); + + expectedErrorArgs = [ + ['Warning: Flow version specified in eslint-plugin-react-settings must be a string; got “number”'], + ['Warning: Flow version specified in eslint-plugin-react-settings must be a string; got “number”'], + ['Warning: Flow version specified in eslint-plugin-react-settings must be a string; got “number”'] + ]; }); }); });