diff --git a/client/package-lock.json b/client/package-lock.json index 810aad45..6a51bda8 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -14,10 +14,12 @@ "dependencies": { "find": "^0.3.0", "node-pty": "^1.0.0", + "semver": "^7.6.3", "vscode-languageclient": "^9.0.1" }, "devDependencies": { "@types/find": "^0.2.4", + "@types/semver": "^7.5.8", "@types/vscode": "^1.96.0" }, "engines": { @@ -59,6 +61,12 @@ "integrity": "sha512-8cw1q8jruVOJoojgx8CimvFC4SP+sevnKOifRJTKXsngeWi/md1womzXRBv/LWNCoDEh4U51zc3r8HUAH2QyEg==", "dev": true }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, "node_modules/@types/vscode": { "version": "1.96.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.96.0.tgz", @@ -84,16 +92,6 @@ "traverse-chain": "~0.1.0" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/minimatch": { "version": "5.1.6", "license": "ISC", @@ -119,11 +117,9 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -175,10 +171,6 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" }, - "node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, "src/lib": { "name": "vscode-bitbake-lib", "version": "2.5.0", diff --git a/client/package.json b/client/package.json index a80d0fbf..fc2c934e 100644 --- a/client/package.json +++ b/client/package.json @@ -27,10 +27,12 @@ "dependencies": { "find": "^0.3.0", "node-pty": "^1.0.0", + "semver": "^7.6.3", "vscode-languageclient": "^9.0.1" }, "devDependencies": { "@types/find": "^0.2.4", + "@types/semver": "^7.5.8", "@types/vscode": "^1.96.0" }, "workspaces": [ diff --git a/client/src/__tests__/unit-tests/driver/scanner.test.ts b/client/src/__tests__/unit-tests/driver/scanner.test.ts index dcd29d84..dde4f38b 100644 --- a/client/src/__tests__/unit-tests/driver/scanner.test.ts +++ b/client/src/__tests__/unit-tests/driver/scanner.test.ts @@ -9,12 +9,11 @@ import { BitBakeProjectScanner } from '../../../driver/BitBakeProjectScanner' import { BitbakeDriver } from '../../../driver/BitbakeDriver' import { BITBAKE_TIMEOUT } from '../../../utils/ProcessUtils' import { mockVscodeEvents } from '../../utils/vscodeMock' -import { importRecipe, removeRecipe } from '../../utils/bitbake' +import { importRecipe, removeRecipe, integrationBitbakeFolder } from '../../utils/bitbake' import { logger } from '../../../lib/src/utils/OutputLogger' let bitBakeProjectScanner: BitBakeProjectScanner -const pathToBitbakeFolder = path.join(__dirname, '../../../../../integration-tests/project-folder/sources/poky/bitbake') const pathToBuildFolder = path.join(__dirname, '../../../../../integration-tests/project-folder/build') const pathToEnvScript = path.join(__dirname, '../../../../../integration-tests/project-folder/sources/poky/oe-init-build-env') const workspaceFolder = path.join(__dirname, '../../../../../integration-tests/project-folder') @@ -26,7 +25,7 @@ describe('BitBakeProjectScanner', () => { const bitbakeDriver: BitbakeDriver = new BitbakeDriver() bitbakeDriver.loadSettings( { - pathToBitbakeFolder, + pathToBitbakeFolder: integrationBitbakeFolder, pathToBuildFolder, pathToEnvScript, workingDirectory: workspaceFolder, @@ -74,6 +73,11 @@ describe('BitBakeProjectScanner', () => { jest.clearAllMocks() }, BITBAKE_TIMEOUT) + it('can get the bitbake version', async () => { + const version = bitBakeProjectScanner.scanResult._bitbakeVersion + expect(version).toMatch(/^[\d.]+$/); + }) + it('can get a list of layers', async () => { const layers = bitBakeProjectScanner.scanResult._layers // poky provides the "core", "yocto" and "yoctobsp" layers diff --git a/client/src/__tests__/unit-tests/ui/bitbake-commands.test.ts b/client/src/__tests__/unit-tests/ui/bitbake-commands.test.ts index 625b1182..5420851c 100644 --- a/client/src/__tests__/unit-tests/ui/bitbake-commands.test.ts +++ b/client/src/__tests__/unit-tests/ui/bitbake-commands.test.ts @@ -8,12 +8,14 @@ import type childProcess from 'child_process' import { BitbakeWorkspace } from '../../../ui/BitbakeWorkspace' import { BitBakeProjectScanner } from '../../../driver/BitBakeProjectScanner' import { BitbakeDriver } from '../../../driver/BitbakeDriver' -import { registerDevtoolCommands } from '../../../ui/BitbakeCommands' +import { addDevtoolDebugBuild, registerDevtoolCommands } from '../../../ui/BitbakeCommands' import { clientNotificationManager } from '../../../ui/ClientNotificationManager' import * as BitbakeTerminal from '../../../ui/BitbakeTerminal' import * as ProcessUtils from '../../../utils/ProcessUtils' import { LanguageClient } from 'vscode-languageclient/node' import { IPty } from 'node-pty' +import { BitbakeScanResult } from '../../../lib/src/types/BitbakeScanResult' +import { BitbakeSettings } from '../../../lib/src/BitbakeSettings' jest.mock('vscode') @@ -58,6 +60,7 @@ describe('Devtool ide-sdk command', () => { pathToBitbakeFolder: '', sdkImage: 'core-image-minimal' } + jest.spyOn(bitBakeProjectScanner, 'scanResult', 'get').mockReturnValue({'_bitbakeVersion': '1.0.0'} as BitbakeScanResult) const ideSDKCommand = mockExtensionContext(bitBakeProjectScanner) jest.spyOn(BitbakeTerminal, 'runBitbakeTerminalCustomCommand').mockReturnValue(undefined as unknown as Promise) @@ -75,6 +78,7 @@ describe('Devtool ide-sdk command', () => { sdkImage: 'core-image-minimal', sshTarget: 'root@192.168.0.3' } + jest.spyOn(bitBakeProjectScanner, 'scanResult', 'get').mockReturnValue({'_bitbakeVersion': '3.0.0'} as BitbakeScanResult) const ideSDKCommand = mockExtensionContext(bitBakeProjectScanner) const commandSpy = jest.spyOn(BitbakeTerminal, 'runBitbakeTerminalCustomCommand').mockReturnValue(undefined as unknown as Promise) @@ -84,4 +88,11 @@ describe('Devtool ide-sdk command', () => { await ideSDKCommand('busybox') expect(commandSpy).toHaveBeenCalledWith(expect.anything(), 'devtool ide-sdk -i code busybox core-image-minimal -t root@192.168.0.3', expect.anything()) }) + + it('should properly detect devtool modify options', async () => { + // Test addDevtoolDebugBuild + expect(await addDevtoolDebugBuild('', {_bitbakeVersion: '3.0.0'} as BitbakeScanResult, {disableDevtoolDebugBuild: false} as BitbakeSettings, undefined as unknown as BitbakeDriver)).toBe(' --debug-build') + expect(await addDevtoolDebugBuild('', {_bitbakeVersion: '3.0.0'} as BitbakeScanResult, {disableDevtoolDebugBuild: true} as BitbakeSettings, undefined as unknown as BitbakeDriver)).toBe('') + expect(await addDevtoolDebugBuild('', {_bitbakeVersion: '1.0.0'} as BitbakeScanResult, {disableDevtoolDebugBuild: false} as BitbakeSettings, undefined as unknown as BitbakeDriver)).toBe('') + }) }) diff --git a/client/src/__tests__/unit-tests/ui/bitbake-recipes-view.test.ts b/client/src/__tests__/unit-tests/ui/bitbake-recipes-view.test.ts index 66ca450a..cb4d1594 100644 --- a/client/src/__tests__/unit-tests/ui/bitbake-recipes-view.test.ts +++ b/client/src/__tests__/unit-tests/ui/bitbake-recipes-view.test.ts @@ -56,9 +56,8 @@ describe('BitbakeDriver Recipes View', () => { _layers: [], _classes: [], _confFiles: [], - _overrides: [], - _workspaces: [] - } + _overrides: [] + } as unknown as BitbakeScanResult vscode.window.registerTreeDataProvider = jest.fn().mockImplementation( async (viewId: string, treeDataProvider: vscode.TreeDataProvider): Promise => { diff --git a/client/src/__tests__/unit-tests/ui/devtool-workspaces-view.test.ts b/client/src/__tests__/unit-tests/ui/devtool-workspaces-view.test.ts index e0a79701..bea3cff3 100644 --- a/client/src/__tests__/unit-tests/ui/devtool-workspaces-view.test.ts +++ b/client/src/__tests__/unit-tests/ui/devtool-workspaces-view.test.ts @@ -35,18 +35,13 @@ describe('Devtool Worskapces View', () => { name: 'dropbear' } }], - _includes: [], - _layers: [], - _classes: [], - _overrides: [], - _confFiles: [], _workspaces: [ { name: 'dropbear', path: '/build/workspace/dropbear' } - ] - } + ], + } as BitbakeScanResult const bitBakeProjectScanner = new BitBakeProjectScanner(new BitbakeDriver()) diff --git a/client/src/__tests__/utils/bitbake.ts b/client/src/__tests__/utils/bitbake.ts index ff6aa743..98b772a7 100644 --- a/client/src/__tests__/utils/bitbake.ts +++ b/client/src/__tests__/utils/bitbake.ts @@ -6,6 +6,8 @@ import path from 'path' import fs from 'fs' +export const integrationBitbakeFolder = path.join(__dirname, '../../../../integration-tests/project-folder/sources/poky/bitbake') + /// Copy a recipe into poky export async function importRecipe (recipePath: string, pokyPath: string): Promise { const pokyDestinationPath = path.resolve(pokyPath, 'meta/recipes-core/base-files', path.basename(recipePath)) diff --git a/client/src/driver/BitBakeProjectScanner.ts b/client/src/driver/BitBakeProjectScanner.ts index 71de611e..68a6adca 100644 --- a/client/src/driver/BitBakeProjectScanner.ts +++ b/client/src/driver/BitBakeProjectScanner.ts @@ -46,7 +46,7 @@ export class BitBakeProjectScanner { private readonly _confFileExtension: string = 'conf' onChange: EventEmitter = new EventEmitter() - private _bitbakeScanResult: BitbakeScanResult = { _classes: [], _includes: [], _layers: [], _overrides: [], _recipes: [], _workspaces: [], _confFiles: [] } + private _bitbakeScanResult: BitbakeScanResult = { _classes: [], _includes: [], _layers: [], _overrides: [], _recipes: [], _workspaces: [], _confFiles: [], _bitbakeVersion: '' } private readonly _bitbakeDriver: BitbakeDriver private _languageClient: LanguageClient | undefined @@ -100,6 +100,7 @@ export class BitBakeProjectScanner { try { if (!bitbakeESDKMode) { // Has been set by sanity checking + this.scanBitbakeVersion() await this.scanAvailableLayers() this.scanForClasses() this.scanForIncludeFiles() @@ -198,6 +199,21 @@ export class BitBakeProjectScanner { this._bitbakeScanResult._confFiles = this.searchFiles(this._confFileExtension) } + private scanBitbakeVersion(): void { + const bitbakeScriptPath = this.bitbakeDriver.bitbakeSettings.pathToBitbakeFolder + '/bin/bitbake' + const bitbakeScriptContent = fs.readFileSync(bitbakeScriptPath, 'utf8') + + const versionRegex = /__version__ = "(\d+\.\d+\.\d+)"/ + const match = bitbakeScriptContent.match(versionRegex) + if (match === null) { + logger.error('Failed to find bitbake version') + throw new Error('Failed to find bitbake version in ' + bitbakeScriptPath) + } + logger.info('Bitbake version: ' + match[1]) + + this._bitbakeScanResult._bitbakeVersion = match[1] + } + public async scanAvailableLayers (): Promise { this._bitbakeScanResult._layers = new Array < LayerInfo >() this.containerMountPoint = undefined diff --git a/client/src/driver/BitbakeDriver.ts b/client/src/driver/BitbakeDriver.ts index 26f8f642..416c21c2 100644 --- a/client/src/driver/BitbakeDriver.ts +++ b/client/src/driver/BitbakeDriver.ts @@ -40,7 +40,7 @@ export class BitbakeDriver { }) } - getBuildConfig (property: keyof BitbakeBuildConfigSettings): string | NodeJS.Dict | undefined { + getBuildConfig (property: keyof BitbakeBuildConfigSettings): string | NodeJS.Dict | boolean | undefined { return getBuildSetting(this.bitbakeSettings, this.activeBuildConfiguration, property) } diff --git a/client/src/lib/src/BitbakeSettings.ts b/client/src/lib/src/BitbakeSettings.ts index b843277b..a0b9e962 100644 --- a/client/src/lib/src/BitbakeSettings.ts +++ b/client/src/lib/src/BitbakeSettings.ts @@ -12,6 +12,7 @@ export interface BitbakeBuildConfigSettings { sshTarget?: string sdkImage?: string name?: string + disableDevtoolDebugBuild?: boolean } /// Defines the context of a bitbake workspace with all information to call bitbake @@ -103,7 +104,7 @@ function expandBuildConfig (settings: Record, variables: NodeJS } } -export function getBuildSetting (settings: BitbakeSettings, buildConfiguration: string, property: keyof BitbakeBuildConfigSettings): string | NodeJS.Dict | undefined { +export function getBuildSetting (settings: BitbakeSettings, buildConfiguration: string, property: keyof BitbakeBuildConfigSettings): string | NodeJS.Dict | boolean | undefined { if (settings.buildConfigurations !== undefined) { const buildConfig = settings.buildConfigurations.find(config => config.name === buildConfiguration) if (buildConfig !== undefined) { diff --git a/client/src/lib/src/types/BitbakeScanResult.ts b/client/src/lib/src/types/BitbakeScanResult.ts index 8efdec55..e6ade4d2 100644 --- a/client/src/lib/src/types/BitbakeScanResult.ts +++ b/client/src/lib/src/types/BitbakeScanResult.ts @@ -7,7 +7,7 @@ import { type ParsedPath } from 'path' // Make sure to increment this number when the structure of the scan data changes // This will invalidate previous scan data saved for the workspace -export const SCAN_RESULT_VERSION: number = 2 +export const SCAN_RESULT_VERSION: number = 3 export interface LayerInfo { name: string @@ -39,6 +39,7 @@ export interface BitbakeScanResult { _overrides: string[] _confFiles: ElementInfo[] _workspaces: DevtoolWorkspaceInfo[] + _bitbakeVersion: string } export function scanContainsData (scanResult: BitbakeScanResult): boolean { diff --git a/client/src/ui/BitbakeCommands.ts b/client/src/ui/BitbakeCommands.ts index 7cf90840..d45dd4bc 100644 --- a/client/src/ui/BitbakeCommands.ts +++ b/client/src/ui/BitbakeCommands.ts @@ -7,6 +7,7 @@ import * as vscode from 'vscode' import fs from 'fs' +import semver from 'semver'; import { logger } from '../lib/src/utils/OutputLogger' import { type BitbakeWorkspace } from './BitbakeWorkspace' @@ -16,9 +17,9 @@ import { type BitBakeProjectScanner } from '../driver/BitBakeProjectScanner' import { extractRecipeName } from '../lib/src/utils/files' import { runBitbakeTerminal, runBitbakeTerminalCustomCommand } from './BitbakeTerminal' import { type BitbakeDriver } from '../driver/BitbakeDriver' -import { sanitizeForShell } from '../lib/src/BitbakeSettings' +import { BitbakeSettings, sanitizeForShell } from '../lib/src/BitbakeSettings' import { type BitbakeTaskDefinition, type BitbakeTaskProvider } from './BitbakeTaskProvider' -import { type DevtoolWorkspaceInfo, type LayerInfo } from '../lib/src/types/BitbakeScanResult' +import { BitbakeScanResult, type DevtoolWorkspaceInfo, type LayerInfo } from '../lib/src/types/BitbakeScanResult' import { DevtoolWorkspaceTreeItem } from './DevtoolWorkspacesView' import * as child_process from 'child_process' import { clientNotificationManager } from './ClientNotificationManager' @@ -378,11 +379,20 @@ async function rescanProject (bitBakeProjectScanner: BitBakeProjectScanner): Pro await bitBakeProjectScanner.rescanProject() } +// Exported for testing +export async function addDevtoolDebugBuild(command: string, scanResult: BitbakeScanResult, settings: BitbakeSettings, bitbakeDriver: BitbakeDriver): Promise { + if (await checkDevtoolDebugBuildAvailable(scanResult, bitbakeDriver) && !settings.disableDevtoolDebugBuild) { + command += ' --debug-build' + } + return command +} + async function devtoolModifyCommand (bitbakeWorkspace: BitbakeWorkspace, bitBakeProjectScanner: BitBakeProjectScanner, uri?: unknown): Promise { const chosenRecipe = await selectRecipe(bitbakeWorkspace, bitBakeProjectScanner, uri) if (chosenRecipe !== undefined) { logger.debug(`Command: devtool-modify: ${chosenRecipe}`) - const command = `devtool modify ${chosenRecipe}` + let command = `devtool modify ${chosenRecipe}` + command = await addDevtoolDebugBuild(command, bitBakeProjectScanner.scanResult, bitBakeProjectScanner.bitbakeDriver.bitbakeSettings, bitBakeProjectScanner.bitbakeDriver) const process = await runBitbakeTerminalCustomCommand(bitBakeProjectScanner.bitbakeDriver, command, `Bitbake: Devtool Modify: ${chosenRecipe}`) process.onExit((event) => { if (event.exitCode === 0) { @@ -432,7 +442,7 @@ async function devtoolIdeSDKCommand (bitbakeWorkspace: BitbakeWorkspace, bitBake clientNotificationManager.showSDKConfigurationError() return } - if (!await checkIdeSdkAvailable(bitbakeDriver)) { + if (!await checkIdeSdkAvailable(bitBakeProjectScanner.scanResult, bitBakeProjectScanner.bitbakeDriver)) { clientNotificationManager.showSDKUnavailableError(chosenRecipe) return } @@ -443,11 +453,28 @@ async function devtoolIdeSDKCommand (bitbakeWorkspace: BitbakeWorkspace, bitBake } } -async function checkIdeSdkAvailable (bitbakeDriver: BitbakeDriver): Promise { - const command = "devtool --help | grep 'ide-sdk'" - const process = runBitbakeTerminalCustomCommand(bitbakeDriver, command, 'Bitbake: Devtool ide-sdk: check') - const res = await finishProcessExecution(process) - return res.status === 0 +async function checkIdeSdkAvailable (scanResult: BitbakeScanResult, bitbakeDriver: BitbakeDriver): Promise { + if(!bitbakeESDKMode) { + // devtool ide-sdk appeared in Yocto version Scarthgap + return bitbakeVersionAbove(scanResult, '2.8.0') + } else { + const command = "devtool --help | grep 'ide-sdk'" + const process = runBitbakeTerminalCustomCommand(bitbakeDriver, command, 'Bitbake: Devtool ide-sdk: check') + const res = await finishProcessExecution(process) + return res.status === 0 + } +} + +async function checkDevtoolDebugBuildAvailable (scanResult: BitbakeScanResult, bitbakeDriver: BitbakeDriver): Promise { + if(!bitbakeESDKMode) { + // devtool debug-build appeared in Yocto version Walnascard + return bitbakeVersionAbove(scanResult, '2.12.0') + } else { + const command = "devtool modify --help | grep '\\-\\-debug-build'" + const process = runBitbakeTerminalCustomCommand(bitbakeDriver, command, 'Bitbake: Devtool debug-build: check') + const res = await finishProcessExecution(process) + return res.status === 0 + } } function checkIdeSdkConfiguration (bitbakeDriver: BitbakeDriver): boolean { @@ -651,3 +678,7 @@ async function devtoolCleanCommand (bitbakeWorkspace: BitbakeWorkspace, bitBakeP async function collapseActiveList (): Promise { await vscode.commands.executeCommand('list.collapseAll') } + +function bitbakeVersionAbove (scanResult: BitbakeScanResult, version: string): boolean { + return semver.gt(scanResult._bitbakeVersion, version); +} diff --git a/client/src/ui/BitbakeStatusBar.ts b/client/src/ui/BitbakeStatusBar.ts index 5301fe4a..a79003ce 100644 --- a/client/src/ui/BitbakeStatusBar.ts +++ b/client/src/ui/BitbakeStatusBar.ts @@ -11,7 +11,7 @@ import { BitBakeProjectScanner } from '../driver/BitBakeProjectScanner' import { BitbakeEnvScanner } from '../driver/BitbakeEnvScanner' export class BitbakeStatusBar { - private bitbakeScanResults: BitbakeScanResult = { _layers: [], _classes: [], _includes: [], _recipes: [], _overrides: [], _workspaces: [], _confFiles: [] } + private bitbakeScanResults: BitbakeScanResult = { _layers: [], _classes: [], _includes: [], _recipes: [], _overrides: [], _workspaces: [], _confFiles: [], _bitbakeVersion: '' } private readonly bitbakeProjectScanner: BitBakeProjectScanner readonly statusBarItem: vscode.StatusBarItem private scanInProgress = false diff --git a/package-lock.json b/package-lock.json index 067d45fb..0610d60f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5178,11 +5178,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, - "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { diff --git a/package.json b/package.json index 566cb139..34212061 100644 --- a/package.json +++ b/package.json @@ -206,6 +206,11 @@ "type": "boolean", "default": false, "description": "Turn on this setting to stop this extension from modifying the VS Code configuration of the workspace. Note that this will also disable some features related to embedded Python and Shell code." + }, + "bitbake.disableDevtoolDebugBuild": { + "type": "boolean", + "default": false, + "description": "Turn off `--debug-build` for the `bitbake.devtool-modify` command." } } }, diff --git a/server/src/BitbakeProjectScannerClient.ts b/server/src/BitbakeProjectScannerClient.ts index 02237d72..41f92e40 100644 --- a/server/src/BitbakeProjectScannerClient.ts +++ b/server/src/BitbakeProjectScannerClient.ts @@ -15,7 +15,8 @@ export class BitBakeProjectScannerClient { _recipes: [], _overrides: [], _confFiles: [], - _workspaces: [] + _workspaces: [], + _bitbakeVersion: '' } public setScanResults (scanResults: BitbakeScanResult): void { diff --git a/server/src/__tests__/completions.test.ts b/server/src/__tests__/completions.test.ts index ff058831..853a4e73 100644 --- a/server/src/__tests__/completions.test.ts +++ b/server/src/__tests__/completions.test.ts @@ -12,6 +12,7 @@ import { bitBakeProjectScannerClient } from '../BitbakeProjectScannerClient' import path from 'path' import { extractRecipeName } from '../lib/src/utils/files' import { licenseOperators } from '../completions/spdx-licenses' +import { BitbakeScanResult } from '../lib/src/types/BitbakeScanResult' /** * The onCompletion handler doesn't allow other parameters, so we can't pass the analyzer and therefore the same @@ -795,9 +796,8 @@ describe('On Completion', () => { _layers: [], _overrides: [], _recipes: [], - _confFiles: [], - _workspaces: [] - } + _confFiles: [] + } as unknown as BitbakeScanResult analyzer.analyze({ uri: FIXTURE_URI.DIRECTIVE, diff --git a/server/src/__tests__/definition.test.ts b/server/src/__tests__/definition.test.ts index 10106e02..34b005b1 100644 --- a/server/src/__tests__/definition.test.ts +++ b/server/src/__tests__/definition.test.ts @@ -10,6 +10,7 @@ import { FIXTURE_DOCUMENT, DUMMY_URI, FIXTURE_URI } from './fixtures/fixtures' import path from 'path' import { bitBakeProjectScannerClient } from '../BitbakeProjectScannerClient' import { extractRecipeName } from '../lib/src/utils/files' +import { BitbakeScanResult } from '../lib/src/types/BitbakeScanResult' describe('on definition', () => { beforeAll(async () => { @@ -55,9 +56,6 @@ describe('on definition', () => { extraInfo: 'layer: core' } ], - _layers: [], - _overrides: [], - _recipes: [], _confFiles: [ { name: parsedBitbakeConfPath.name, @@ -65,8 +63,7 @@ describe('on definition', () => { extraInfo: 'layer: core' } ], - _workspaces: [] - } + } as BitbakeScanResult analyzer.analyze({ uri: FIXTURE_URI.DIRECTIVE, @@ -201,9 +198,8 @@ describe('on definition', () => { path: parsedBarPath, extraInfo: 'layer: core' } - ], - _workspaces: [] - } + ] + } as unknown as BitbakeScanResult analyzer.analyze({ uri: DUMMY_URI, diff --git a/server/src/__tests__/hover.test.ts b/server/src/__tests__/hover.test.ts index ab0b4efd..efd55a83 100644 --- a/server/src/__tests__/hover.test.ts +++ b/server/src/__tests__/hover.test.ts @@ -11,6 +11,7 @@ import { onHoverHandler } from '../connectionHandlers/onHover' import path from 'path' import { bitBakeProjectScannerClient } from '../BitbakeProjectScannerClient' import { extractRecipeName } from '../lib/src/utils/files' +import { BitbakeScanResult } from '../lib/src/types/BitbakeScanResult' describe('on hover', () => { beforeAll(async () => { @@ -580,9 +581,8 @@ describe('on hover', () => { _layers: [], _overrides: [], _recipes: [], - _confFiles: [], - _workspaces: [] - } + _confFiles: [] + } as unknown as BitbakeScanResult analyzer.analyze({ uri: DUMMY_URI, diff --git a/server/src/__tests__/onReference.test.ts b/server/src/__tests__/onReference.test.ts index 710d58ff..d9fe012d 100644 --- a/server/src/__tests__/onReference.test.ts +++ b/server/src/__tests__/onReference.test.ts @@ -10,6 +10,7 @@ import { generateBashParser, generateBitBakeParser } from '../tree-sitter/parser import { DUMMY_URI, FIXTURE_DOCUMENT, FIXTURE_URI } from './fixtures/fixtures' import { bitBakeProjectScannerClient } from '../BitbakeProjectScannerClient' import path from 'path' +import { BitbakeScanResult } from '../lib/src/types/BitbakeScanResult' describe('onReferenceHandler', () => { beforeAll(async () => { @@ -53,18 +54,14 @@ describe('onReferenceHandler', () => { extraInfo: 'layer: core' } ], - _layers: [], - _overrides: [], - _recipes: [], _confFiles: [ { name: parsedBitbakeConfPath.name, path: parsedBitbakeConfPath, extraInfo: 'layer: core' } - ], - _workspaces: [] - } + ] + } as BitbakeScanResult analyzer.analyze({ uri: DUMMY_URI,