1313//===----------------------------------------------------------------------===//
1414
1515import { expect } from "chai" ;
16+ import { beforeEach , afterEach } from "mocha" ;
1617import * as vscode from "vscode" ;
1718import * as path from "path" ;
1819import { ProjectPanelProvider , PackageNode , FileNode } from "../../../src/ui/ProjectPanelProvider" ;
1920import { executeTaskAndWaitForResult , waitForNoRunningTasks } from "../../utilities/tasks" ;
2021import { getBuildAllTask , SwiftTask } from "../../../src/tasks/SwiftTaskProvider" ;
2122import { testAssetPath } from "../../fixtures" ;
22- import { activateExtensionForSuite , folderInRootWorkspace } from "../utilities/testutilities" ;
23+ import {
24+ activateExtensionForSuite ,
25+ folderInRootWorkspace ,
26+ updateSettings ,
27+ } from "../utilities/testutilities" ;
2328import contextKeys from "../../../src/contextKeys" ;
29+ import { SwiftToolchain } from "../../../src/toolchain/toolchain" ;
30+ import { getLLDBLibPath } from "../../../src/debugger/lldb" ;
2431
2532suite ( "ProjectPanelProvider Test Suite" , function ( ) {
2633 let treeProvider : ProjectPanelProvider ;
@@ -30,8 +37,10 @@ suite("ProjectPanelProvider Test Suite", function () {
3037 async setup ( ctx ) {
3138 const workspaceContext = ctx ;
3239 await waitForNoRunningTasks ( ) ;
33- await folderInRootWorkspace ( "defaultPackage" , workspaceContext ) ;
3440 const folderContext = await folderInRootWorkspace ( "targets" , workspaceContext ) ;
41+ await vscode . workspace . openTextDocument (
42+ path . join ( folderContext . folder . fsPath , "Package.swift" )
43+ ) ;
3544 await executeTaskAndWaitForResult ( ( await getBuildAllTask ( folderContext ) ) as SwiftTask ) ;
3645 await folderContext . loadSwiftPlugins ( ) ;
3746 treeProvider = new ProjectPanelProvider ( workspaceContext ) ;
@@ -44,6 +53,36 @@ suite("ProjectPanelProvider Test Suite", function () {
4453 testAssets : [ "targets" ] ,
4554 } ) ;
4655
56+ async function getLLDBDebugAdapterPath ( ) {
57+ switch ( process . platform ) {
58+ case "linux" :
59+ return "/usr/lib/liblldb.so" ;
60+ case "win32" :
61+ return await ( await SwiftToolchain . create ( ) ) . getLLDBDebugAdapter ( ) ;
62+ default :
63+ return getLLDBLibPath ( await SwiftToolchain . create ( ) ) ;
64+ }
65+ }
66+
67+ let resetSettings : ( ( ) => Promise < void > ) | undefined ;
68+ beforeEach ( async function ( ) {
69+ const lldbPath = {
70+ "lldb.library" : await getLLDBDebugAdapterPath ( ) ,
71+ "lldb.launch.expressions" : "native" ,
72+ } ;
73+
74+ resetSettings = await updateSettings ( {
75+ "swift.debugger.useDebugAdapterFromToolchain" : false ,
76+ ...lldbPath ,
77+ } ) ;
78+ } ) ;
79+
80+ afterEach ( async ( ) => {
81+ if ( resetSettings ) {
82+ await resetSettings ( ) ;
83+ }
84+ } ) ;
85+
4786 test ( "Includes top level nodes" , async ( ) => {
4887 const commands = await treeProvider . getChildren ( ) ;
4988 const commandNames = commands . map ( n => n . name ) ;
@@ -79,8 +118,12 @@ suite("ProjectPanelProvider Test Suite", function () {
79118
80119 test ( "Executes a task" , async ( ) => {
81120 const tasks = await getHeaderChildren ( "Tasks" ) ;
82- const task = tasks . find ( n => n . name === "Build All (targets)" ) ;
83- expect ( task ) . to . not . be . undefined ;
121+ const taskName = "Build All (targets)" ;
122+ const task = tasks . find ( n => n . name === taskName ) ;
123+ expect (
124+ task ,
125+ `Expected to find task called ${ taskName } , but instead items were ${ tasks . map ( n => n . name ) } `
126+ ) . to . not . be . undefined ;
84127 const treeItem = task ?. toTreeItem ( ) ;
85128 expect ( treeItem ?. command ) . to . not . be . undefined ;
86129 expect ( treeItem ?. command ?. arguments ) . to . not . be . undefined ;
0 commit comments