UNPKG

eslint-plugin-ecmascript-compat

Version:

ESLint plugin for checking JavaScript code compatibility with target browsers and Node.js versions

93 lines (88 loc) 2.57 kB
const { RuleTester } = require('eslint'); // Browser that doesn't support any features of this version - see es-versions.md process.env.BROWSERSLIST = 'Chrome >= 53'; const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2017, }, globals: { // ES2017 global, required by es/no-atomics Atomics: 'readonly', // ES2017 global, required by es/no-shared-array-buffer SharedArrayBuffer: 'readonly', }, }); ruleTester.run('compat', require('../rule'), { valid: [ { code: 'Object.getOwnPropertyDescriptors();', options: [{ polyfills: ['Object.getOwnPropertyDescriptors'] }], }, { code: 'Object.entries();', options: [{ polyfills: ['Object.entries'] }], }, { code: 'Object.values();', options: [{ polyfills: ['Object.values'] }], }, { code: 'str.padStart();', options: [{ polyfills: ['String.prototype.padStart'] }], }, { code: 'str.padEnd();', options: [{ polyfills: ['String.prototype.padEnd'] }], }, ], invalid: [ { code: 'async function foo() {}', errors: [{ message: 'ES2017 async function declarations are forbidden.' }], }, { code: 'Atomics.add(buffer, 0, 2);', errors: [{ message: "ES2017 'Atomics' class is forbidden." }], }, { code: 'Object.getOwnPropertyDescriptors();', errors: [ { message: "ES2017 'Object.getOwnPropertyDescriptors' method is forbidden." }, ], }, { code: 'Object.entries();', errors: [{ message: "ES2017 'Object.entries' method is forbidden." }], }, { code: 'Object.values();', errors: [{ message: "ES2017 'Object.values' method is forbidden." }], }, { code: 'new SharedArrayBuffer();', errors: [{ message: "ES2017 'SharedArrayBuffer' class is forbidden." }], }, { code: 'str.padStart();', errors: [{ message: "ES2017 method 'String.prototype.padStart' is forbidden" }], }, { code: 'String.prototype.padStart;', errors: [{ message: "ES2017 method 'String.prototype.padStart' is forbidden" }], }, { code: 'str.padEnd();', errors: [{ message: "ES2017 method 'String.prototype.padEnd' is forbidden" }], }, { code: 'String.prototype.padEnd;', errors: [{ message: "ES2017 method 'String.prototype.padEnd' is forbidden" }], }, { code: 'foo(bar,);', errors: [ { message: 'ES2017 trailing commas in parameter/argument lists are forbidden.' }, ], }, ], });