Skip to content

Commit

Permalink
Chore: Add shebang to embedded bash documents
Browse files Browse the repository at this point in the history
  • Loading branch information
idillon-sfl committed Dec 16, 2023
1 parent eb81f87 commit 7be7268
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 8 deletions.
27 changes: 19 additions & 8 deletions integration-tests/src/tests/diagnostics.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,37 +6,48 @@
import * as assert from 'assert'
import * as vscode from 'vscode'
import path from 'path'
import { afterEach } from 'mocha'

suite('Bitbake Diagnostics Test Suite', () => {
const filePath = path.resolve(__dirname, '../../project-folder/sources/meta-fixtures/diagnostics.bb')
const docUri = vscode.Uri.parse(`file://${filePath}`)

let disposables: vscode.Disposable[] = []

suiteSetup(async function (this: Mocha.Context) {
this.timeout(100000)
const vscodeBitbake = vscode.extensions.getExtension('yocto-project.yocto-bitbake')
if (vscodeBitbake === undefined) {
assert.fail('Bitbake extension is not available')
}
await vscodeBitbake.activate()
await vscode.workspace.openTextDocument(docUri)
})

afterEach(function () {
for (const disposable of disposables) {
disposable.dispose()
}
disposables = []
})

test('Diagnostics', async () => {
await new Promise<vscode.Diagnostic[]>((resolve, reject) => {
void vscode.workspace.openTextDocument(docUri)
await new Promise<vscode.Diagnostic[]>((resolve) => {
let nbChanges = 0
vscode.languages.onDidChangeDiagnostics((e) => {
const disposable = vscode.languages.onDidChangeDiagnostics((e) => {
if (e.uris.some((uri) => uri.toString() === docUri.toString())) {
nbChanges++
}
const diagnostics = vscode.languages.getDiagnostics(docUri)
if (diagnostics.length > 0) {
if (nbChanges === 3) {
resolve(diagnostics)
}
if (nbChanges > 2) {
reject(new Error('Waited too long for diagnostics'))
}
nbChanges++
})
disposables.push(disposable)
}).then((diagnostics) => {
assert.strictEqual(diagnostics.length, 1)
assert.strictEqual(diagnostics[0].source, 'Pylance')
assert.deepEqual(diagnostics[0].range, new vscode.Range(1, 4, 1, 9))
}).catch((err) => {
assert.fail(err)
})
Expand Down
22 changes: 22 additions & 0 deletions server/src/__tests__/embedded-languages.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,28 @@ import { generateParser } from '../tree-sitter/parser'
import { TextDocument } from 'vscode-languageserver-textdocument'
import { type EmbeddedLanguageType } from '../lib/src/types/embedded-languages'
import { imports } from '../embedded-languages/python-support'
import { shebang } from '../embedded-languages/bash-support'

describe('Create basic embedded bash documents', () => {
beforeAll(async () => {
if (!analyzer.hasParser()) {
const parser = await generateParser()
analyzer.initialize(parser)
}
analyzer.resetAnalyzedDocuments()
})

test.each([
[
'basic',
'foo(){\nBAR=""\n}',
`${shebang}foo(){\nBAR=""\n}`
]
])('%s', async (description, input, result) => {
const embeddedContent = await createEmbeddedContent(input, 'bash')
expect(embeddedContent).toEqual(result)
})
})

describe('Create various basic embedded python documents', () => {
beforeAll(async () => {
Expand Down
3 changes: 3 additions & 0 deletions server/src/embedded-languages/bash-support.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import * as TreeSitterUtils from '../tree-sitter/utils'
import { initEmbeddedLanguageDoc, insertTextIntoEmbeddedLanguageDoc } from './utils'
import { type EmbeddedLanguageDoc } from '../lib/src/types/embedded-languages'

export const shebang = '#!/bin/sh\n'

export const generateBashEmbeddedLanguageDoc = (analyzedDocument: AnalyzedDocument): EmbeddedLanguageDoc => {
const embeddedLanguageDoc = initEmbeddedLanguageDoc(analyzedDocument.document, 'bash')
TreeSitterUtils.forEach(analyzedDocument.tree.rootNode, (node) => {
Expand All @@ -21,5 +23,6 @@ export const generateBashEmbeddedLanguageDoc = (analyzedDocument: AnalyzedDocume
return false
}
})
insertTextIntoEmbeddedLanguageDoc(embeddedLanguageDoc, 0, 0, shebang)
return embeddedLanguageDoc
}

0 comments on commit 7be7268

Please sign in to comment.