| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import {assert} from 'chai'; |
| import path from 'node:path'; |
| |
| import {devtoolsPlugin, esbuildPlugin} from '../devtools_plugin.js'; |
| |
| describe('devtools_plugin can compute paths with', () => { |
| it('same directory import', () => { |
| assert.deepEqual( |
| devtoolsPlugin('./AnotherFile.js', 'front_end/core/sdk/FirstFile.js'), |
| { |
| id: path.join('front_end', 'core', 'sdk', 'AnotherFile.js'), |
| external: false, |
| }, |
| ); |
| }); |
| |
| it('different directory import', () => { |
| assert.deepEqual( |
| devtoolsPlugin('../common/common.js', 'front_end/core/sdk/FirstFile.js'), |
| { |
| id: path.join('front_end', 'core', 'common', 'common.js'), |
| external: true, |
| }, |
| ); |
| }); |
| |
| it('node built-in modules', () => { |
| assert.deepEqual(devtoolsPlugin('fs', 'scripts/some-script.js'), { |
| id: 'fs', |
| external: true, |
| }); |
| }); |
| |
| it('importing generated files', () => { |
| assert.strictEqual( |
| devtoolsPlugin( |
| '../../generated/Protocol.js', |
| 'front_end/core/sdk/FirstFile.js', |
| ), |
| null, |
| ); |
| }); |
| |
| it('importing lighthouse files', () => { |
| assert.deepEqual( |
| devtoolsPlugin( |
| './front_end/third_party/lighthouse/lighthouse-dt-bundle.js', |
| 'front_end/core/sdk/FirstFile.js', |
| ), |
| { |
| id: path.join( |
| 'front_end', |
| 'core', |
| 'sdk', |
| 'front_end', |
| 'third_party', |
| 'lighthouse', |
| 'lighthouse-dt-bundle.js', |
| ), |
| external: true, |
| }, |
| ); |
| }); |
| }); |
| |
| describe('esbuild_plugin can compute paths with', () => { |
| const srcdir = import.meta.dirname; |
| const outdir = path.join(srcdir, 'out'); |
| const plugin = esbuildPlugin(outdir); |
| it('same directory import', () => { |
| assert.deepEqual( |
| plugin({ |
| path: './AnotherFile.js', |
| importer: path.join(srcdir, 'front_end/core/sdk/FirstFile.js'), |
| }), |
| {path: path.join(srcdir, 'front_end', 'core', 'sdk', 'AnotherFile.js')}, |
| ); |
| }); |
| |
| it('different directory import', () => { |
| assert.deepEqual( |
| plugin({ |
| path: '../common/common.js', |
| importer: path.join(srcdir, 'front_end/core/sdk/FirstFile.js'), |
| }), |
| { |
| path: './' + path.join('..', 'front_end', 'core', 'common', 'common.js'), |
| external: true, |
| }, |
| ); |
| }); |
| |
| it('node built-in modules', () => { |
| assert.deepEqual( |
| plugin({ |
| path: 'fs', |
| importer: path.join(srcdir, 'scripts/some-script.js'), |
| }), |
| {path: 'fs', external: true}, |
| ); |
| }); |
| |
| it('codemirror modules', () => { |
| assert.deepEqual( |
| plugin({ |
| path: '../../lib/codemirror', |
| importer: path.join(srcdir, 'scripts/some-script.js'), |
| }), |
| {path: '../../lib/codemirror', external: true}, |
| ); |
| }); |
| |
| it('importing generated files', () => { |
| assert.strictEqual( |
| plugin({ |
| path: '../../generated/Protocol.js', |
| importer: path.join(srcdir, 'front_end/core/sdk/FirstFile.js'), |
| }), |
| null, |
| ); |
| }); |
| |
| it('importing lighthouse files', () => { |
| assert.deepEqual( |
| plugin({ |
| path: './front_end/third_party/lighthouse/lighthouse-dt-bundle.js', |
| importer: path.join(srcdir, 'front_end/core/sdk/FirstFile.js'), |
| }), |
| { |
| path: './' + |
| path.join( |
| '..', |
| 'front_end', |
| 'core', |
| 'sdk', |
| 'front_end', |
| 'third_party', |
| 'lighthouse', |
| 'lighthouse-dt-bundle.js', |
| ), |
| external: true, |
| }, |
| ); |
| }); |
| }); |