Skip to content

Commit a34ea14

Browse files
committed
fix(vscode): force lsp to be single worker)
1 parent 82cdde0 commit a34ea14

File tree

3 files changed

+26
-6
lines changed

3 files changed

+26
-6
lines changed

sqlmesh/lsp/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def __init__(
105105
:param server_name: Name for the language server.
106106
:param version: Version string.
107107
"""
108-
self.server = LanguageServer(server_name, version)
108+
self.server = LanguageServer(server_name, version, max_workers=1)
109109
self.context_class = context_class
110110
self.context_state: ContextState = NoContext()
111111
self.workspace_folders: t.List[Path] = []

vscode/extension/playwright.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { defineConfig } from '@playwright/test'
2+
import * as process from 'node:process'
23

34
export default defineConfig({
45
testDir: 'tests',
56
timeout: 60_000,
67
// TODO: When stable, allow retries in CI
78
retries: process.env.CI ? 2 : 0,
8-
workers: 4,
9+
workers: process.env.CI ? 2 : 4,
910
reporter: [['html', { outputFolder: 'playwright-report' }], ['list']],
1011
projects: [
1112
{

vscode/extension/tests/quickfix.spec.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import path from 'path'
33
import os from 'os'
44
import {
55
openProblemsView,
6+
saveFile,
67
SUSHI_SOURCE_PATH,
78
waitForLoadedSQLMesh,
89
} from './utils'
@@ -80,11 +81,29 @@ test('noselectstar quickfix', async ({ page, sharedCodeServer }) => {
8081
.first()
8182
.click()
8283

83-
// Wait for the quick fix to be applied
84-
await page.waitForTimeout(2_000)
84+
await saveFile(page)
8585

86-
// Assert that the model no longer contains SELECT * but SELECT id, customer_id, waiter_id, start_ts, end_ts, event_date
87-
const readUpdatedFile = (await fs.readFile(modelPath)).toString('utf8')
86+
// Wait for the quick fix to be applied and verify the change
87+
const startTime = Date.now()
88+
let readUpdatedFile = ''
89+
let fileUpdated = false
90+
91+
while (Date.now() - startTime < 20_000 && !fileUpdated) {
92+
readUpdatedFile = (await fs.readFile(modelPath)).toString('utf8')
93+
if (
94+
!readUpdatedFile.includes('SELECT *') &&
95+
readUpdatedFile.includes(
96+
'SELECT id, customer_id, waiter_id, start_ts, end_ts, event_date',
97+
)
98+
) {
99+
fileUpdated = true
100+
break
101+
}
102+
await page.waitForTimeout(500) // Short pause between checks
103+
}
104+
105+
// Assert that the model was properly updated
106+
expect(fileUpdated).toBeTruthy()
88107
expect(readUpdatedFile).not.toContain('SELECT *')
89108
expect(readUpdatedFile).toContain(
90109
'SELECT id, customer_id, waiter_id, start_ts, end_ts, event_date',

0 commit comments

Comments
 (0)