/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @emails react-core */ 'use strict'; const rule = require('../warning-args'); const {RuleTester} = require('eslint'); const ruleTester = new RuleTester(); ruleTester.run('eslint-rules/warning-args', rule, { valid: [ "console.error('hello, world');", "console.error('expected %s, got %s', 42, 24);", 'arbitraryFunction(a, b)', ], invalid: [ { code: 'console.error(null);', errors: [ { message: 'The first argument to console.error must be a string literal', }, ], }, { code: 'console.warn(null);', errors: [ { message: 'The first argument to console.warn must be a string literal', }, ], }, { code: 'var g = 5; console.error(g);', errors: [ { message: 'The first argument to console.error must be a string literal', }, ], }, { code: "console.error('expected %s, got %s');", errors: [ { message: 'Expected 3 arguments in call to console.error based on the number of ' + '"%s" substitutions, but got 1', }, ], }, { code: "console.error('foo is a bar under foobar', 'junk argument');", errors: [ { message: 'Expected 1 arguments in call to console.error based on the number of ' + '"%s" substitutions, but got 2', }, ], }, { code: "console.error('error!');", errors: [ { message: 'The console.error format should be able to uniquely identify this ' + 'warning. Please, use a more descriptive format than: error!', }, ], }, { code: "console.error('%s %s, %s %s: %s (%s)', 1, 2, 3, 4, 5, 6);", errors: [ { message: 'The console.error format should be able to uniquely identify this ' + 'warning. Please, use a more descriptive format than: ' + '%s %s, %s %s: %s (%s)', }, ], }, ], });