From 46e563eb871fbb850c8f7acc07ef99e40a6a2817 Mon Sep 17 00:00:00 2001 From: Minsu Lee Date: Thu, 22 Oct 2026 05:58:30 +0900 Subject: [PATCH] test(lsp): skip dart integration tests when dart cannot run Replace the Bun.which('dart') skip guard with canRunDart(), which runs `dart --version` and requires exit code 0. A version-manager shim (mise) can resolve on PATH without being able to run, which made the suite fail instead of skip. Refs #127 --- .../lsp/test/integration/dart.integration.test.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/lsp/test/integration/dart.integration.test.ts b/packages/lsp/test/integration/dart.integration.test.ts index 4cc6ec0..7f4cdaa 100644 --- a/packages/lsp/test/integration/dart.integration.test.ts +++ b/packages/lsp/test/integration/dart.integration.test.ts @@ -15,8 +15,18 @@ const DART_PROJECT_PATH = path.join(import.meta.dir, '../fixtures/dart-project') const MAIN_DART_PATH = path.join(DART_PROJECT_PATH, 'lib/main.dart') const HELPER_DART_PATH = path.join(DART_PROJECT_PATH, 'lib/helper.dart') -// Check if Dart is available -const isDartAvailable = Bun.which('dart') !== null +// Check that Dart actually runs: a version-manager shim (e.g. mise) can resolve on PATH +// while exiting non-zero because no SDK version is configured. +function canRunDart(): boolean { + try { + return Bun.spawnSync(['dart', '--version'], { stdout: 'ignore', stderr: 'ignore' }).exitCode === 0 + } + catch { + return false + } +} + +const isDartAvailable = canRunDart() describe.skipIf(!isDartAvailable)('DartServer Integration', () => { let manager: LSPManager