UNPKG

chrome-devtools-frontend

Version:
120 lines (110 loc) 3.24 kB
// Copyright 2021 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import rule from '../lib/l10n-no-unused-message.ts'; import {RuleTester} from './utils/RuleTester.ts'; const exampleWithJSDoc = ` const UIStrings = { /** * @description Some random string */ foo: 'bar', } as const;`; const exampleWithJSDocNoComma = ` const UIStrings = { /** * @description Some random string */ foo: 'bar' } as const;`; const exampleWithSiblings = ` const UIStrings = { /** comment 1 */ foo1: 'foo1', /** comment 2 */ foo2: 'foo2', /** comment 3 */ foo3: 'foo3', } as const; const someVar = UIStrings.foo2;`; const outputWithSiblings = ` const UIStrings = { /** comment 2 */ foo2: 'foo2', } as const; const someVar = UIStrings.foo2;`; const exampleWithSiblings2 = ` const UIStrings = { /** comment 1 */ foo1: 'foo1', /** comment 2 */ foo2: 'foo2', /** comment 3 */ foo3: 'foo3', } as const; const someVar = [UIStrings.foo1, UIStrings.foo3];`; const outputWithSiblings2 = ` const UIStrings = { /** comment 1 */ foo1: 'foo1', /** comment 3 */ foo3: 'foo3', } as const; const someVar = [UIStrings.foo1, UIStrings.foo3];`; new RuleTester().run('l10n-no-unused-message', rule, { valid: [ { code: 'export const UIStrings = { foo: \'bar\' } as const;', filename: 'front_end/module/ModuleUIStrings.ts', }, { code: 'export const UIStrings = { foo: \'bar\' } as const;', filename: 'front_end/module/ModuleUIStrings.js', }, { code: 'const UIStrings = {foo: \'bar\' } as const; let someVariable = UIStrings.foo;', filename: 'front_end/module/test.ts', }, { code: 'const UIStrings = {foo: \'bar\' } as const;', // Emulate Window path filename: 'front_end\\models\\trace\\insights\\Cache.ts', }, ], invalid: [ { // Check that trailing comma is handled. code: 'const UIStrings = {\n foo: \'bar\',\n} as const;', filename: 'front_end/module/test.ts', errors: [{messageId: 'unusedMessage'}], output: 'const UIStrings = {\n} as const;', }, { code: 'const UIStrings = {\n foo: \'bar\'\n} as const;', filename: 'front_end/module/test.ts', errors: [{messageId: 'unusedMessage'}], output: 'const UIStrings = {\n} as const;', }, { // Check that the JSDoc before the property is also removed. code: exampleWithJSDoc, filename: 'front_end/module/test.ts', errors: [{messageId: 'unusedMessage'}], output: '\nconst UIStrings = {\n} as const;', }, { code: exampleWithJSDocNoComma, filename: 'front_end/module/test.ts', errors: [{messageId: 'unusedMessage'}], output: '\nconst UIStrings = {\n} as const;', }, { code: exampleWithSiblings, filename: 'front_end/module/test.ts', errors: [{messageId: 'unusedMessage'}, {messageId: 'unusedMessage'}], output: outputWithSiblings, }, { code: exampleWithSiblings2, filename: 'front_end/module/test.ts', errors: [{messageId: 'unusedMessage'}], output: outputWithSiblings2, }, ], });