@@ -18,146 +18,105 @@ import {
1818 PackageDependenciesProvider ,
1919 PackageNode ,
2020} from "../../../src/ui/PackageDependencyProvider" ;
21- import { executeTaskAndWaitForResult , waitForNoRunningTasks } from "../../utilities/tasks" ;
22- import { getBuildAllTask , SwiftTask } from "../../../src/tasks/SwiftTaskProvider" ;
2321import { testAssetUri } from "../../fixtures" ;
2422import { FolderContext } from "../../../src/FolderContext" ;
2523import { WorkspaceContext } from "../../../src/WorkspaceContext" ;
26- import * as sinon from "sinon" ;
2724import { Commands } from "../../../src/commands" ;
2825import { activateExtensionForSuite , folderInRootWorkspace } from "../utilities/testutilities" ;
26+ import { executeTaskAndWaitForResult , waitForNoRunningTasks } from "../../utilities/tasks" ;
27+ import { getBuildAllTask , SwiftTask } from "../../../src/tasks/SwiftTaskProvider" ;
2928
3029suite ( "Dependency Commmands Test Suite" , function ( ) {
3130 // full workflow's interaction with spm is longer than the default timeout
3231 // 60 seconds for each test should be more than enough
3332 this . timeout ( 60 * 1000 ) ;
3433
35- suite ( "spm Update Contract Tests" , function ( ) {
36- let folderContext : FolderContext ;
37- let workspaceContext : WorkspaceContext ;
38-
39- activateExtensionForSuite ( {
40- async setup ( ctx ) {
41- workspaceContext = ctx ;
42- await waitForNoRunningTasks ( ) ;
43- folderContext = await folderInRootWorkspace ( "defaultPackage" , workspaceContext ) ;
44- await workspaceContext . focusFolder ( folderContext ) ;
45- } ,
46- } ) ;
47-
48- test ( "Contract: spm update" , async function ( ) {
49- // Contract: spm update
50- const result = await vscode . commands . executeCommand ( Commands . UPDATE_DEPENDENCIES ) ;
51- expect ( result ) . to . be . true ;
52- } ) ;
34+ let defaultContext : FolderContext ;
35+ let depsContext : FolderContext ;
36+ let workspaceContext : WorkspaceContext ;
37+
38+ activateExtensionForSuite ( {
39+ async setup ( ctx ) {
40+ workspaceContext = ctx ;
41+ defaultContext = await folderInRootWorkspace ( "defaultPackage" , workspaceContext ) ;
42+ depsContext = await folderInRootWorkspace ( "dependencies" , workspaceContext ) ;
43+ await waitForNoRunningTasks ( ) ;
44+ } ,
5345 } ) ;
5446
55- suite ( "spm Resolve Contract Tests" , function ( ) {
56- let folderContext : FolderContext ;
57- let workspaceContext : WorkspaceContext ;
58-
59- activateExtensionForSuite ( {
60- async setup ( ctx ) {
61- workspaceContext = ctx ;
62- await waitForNoRunningTasks ( ) ;
63- folderContext = await folderInRootWorkspace ( "dependencies" , workspaceContext ) ;
64- await workspaceContext . focusFolder ( folderContext ) ;
65- } ,
66- } ) ;
47+ test ( "Swift: Update Package Dependencies" , async function ( ) {
48+ await workspaceContext . focusFolder ( defaultContext ) ;
49+ const result = await vscode . commands . executeCommand ( Commands . UPDATE_DEPENDENCIES ) ;
50+ expect ( result ) . to . be . true ;
51+ } ) ;
6752
68- test ( "Contract: spm resolve " , async ( ) => {
69- const result = await vscode . commands . executeCommand ( Commands . RESOLVE_DEPENDENCIES ) ;
70- expect ( result ) . to . be . true ;
71- } ) ;
53+ test ( "Swift: Resolve Package Dependencies " , async function ( ) {
54+ await workspaceContext . focusFolder ( defaultContext ) ;
55+ const result = await vscode . commands . executeCommand ( Commands . RESOLVE_DEPENDENCIES ) ;
56+ expect ( result ) . to . be . true ;
7257 } ) ;
7358
74- suite ( "Full Work Flow Test Suite" , function ( ) {
75- let folderContext : FolderContext ;
76- let workspaceContext : WorkspaceContext ;
77- let tasks : SwiftTask ;
59+ suite ( "Swift: Use Local Dependency" , function ( ) {
7860 let treeProvider : PackageDependenciesProvider ;
79- let item : PackageNode ;
80-
81- activateExtensionForSuite ( {
82- async setup ( ctx ) {
83- // FIXME: Disable this test suite as this is dependent on external git dependency
84- // and introduces flakinesss when run in the CI setting. The spm command only
85- // runs if the dependency is remote, which make faking difficult.
86- // For enabling the test in the future, we would need to set up the environment
87- // into a pre-resolved state, so spm does not need to visit remote git url.
88- this . skip ( ) ;
89- // Check before each test case start:
90- // Expect to fail without setting up local version
91- workspaceContext = ctx ;
92- await waitForNoRunningTasks ( ) ;
93- folderContext = await folderInRootWorkspace ( "dependencies" , workspaceContext ) ;
94- await workspaceContext . focusFolder ( folderContext ) ;
95-
96- tasks = ( await getBuildAllTask ( folderContext ) ) as SwiftTask ;
97- const { exitCode, output } = await executeTaskAndWaitForResult ( tasks ) ;
98- expect ( exitCode , `${ output } ` ) . to . not . equal ( 0 ) ;
99- expect ( output ) . to . include ( "PackageLib" ) ;
100- expect ( output ) . to . include ( "required" ) ;
101-
102- treeProvider = new PackageDependenciesProvider ( workspaceContext ) ;
103-
104- const items = await treeProvider . getChildren ( ) ;
105- item = items . find ( n => n . name === "swift-markdown" ) as PackageNode ;
106- } ,
107- async teardown ( ) {
108- treeProvider ?. dispose ( ) ;
109- } ,
61+
62+ setup ( async ( ) => {
63+ await workspaceContext . focusFolder ( depsContext ) ;
64+ await executeTaskAndWaitForResult ( ( await getBuildAllTask ( depsContext ) ) as SwiftTask ) ;
65+ treeProvider = new PackageDependenciesProvider ( workspaceContext ) ;
11066 } ) ;
11167
112- async function useLocalDependencyTest ( ) {
113- // Contract: spm edit with user supplied local version of dependency
114- const windowMock = sinon . stub ( vscode . window , "showOpenDialog" ) ;
115- windowMock . resolves ( [ testAssetUri ( "Swift-Markdown" ) ] ) ;
116- let result = await vscode . commands . executeCommand ( Commands . USE_LOCAL_DEPENDENCY , item ) ;
117- expect ( result ) . to . be . true ;
118- windowMock . restore ( ) ;
68+ teardown ( ( ) => {
69+ treeProvider ?. dispose ( ) ;
70+ } ) ;
11971
120- // Make sure new dependencies resolve before building
121- result = await vscode . commands . executeCommand ( Commands . RESOLVE_DEPENDENCIES ) ;
72+ async function getDependency ( ) {
73+ const items = await treeProvider . getChildren ( ) ;
74+ return items . find ( n => n . name === "swift-markdown" ) as PackageNode ;
75+ }
76+
77+ async function useLocalDependencyTest ( ) {
78+ // spm edit with user supplied local version of dependency
79+ const item = await getDependency ( ) ;
80+ const localDep = testAssetUri ( "swift-markdown" ) ;
81+ const result = await vscode . commands . executeCommand (
82+ Commands . USE_LOCAL_DEPENDENCY ,
83+ item ,
84+ localDep
85+ ) ;
12286 expect ( result ) . to . be . true ;
12387
124- // This will now pass as we have the required library
125- const { exitCode, output } = await executeTaskAndWaitForResult ( tasks ) ;
126- expect ( exitCode , `${ output } ` ) . to . equal ( 0 ) ;
127- expect ( output ) . to . include ( "defaultpackage" ) ;
128- expect ( output ) . to . include ( "not used by any target" ) ;
88+ // Make sure using local
89+ expect ( ( await getDependency ( ) ) . type ) . to . equal ( "editing" ) ;
12990 }
13091
131- async function assertDependencyNoLongerExists ( ) {
132- // Expect to fail again now dependency is missing
133- const { exitCode, output } = await executeTaskAndWaitForResult ( tasks ) ;
134- expect ( exitCode , `${ output } ` ) . to . not . equal ( 0 ) ;
135- expect ( output ) . to . include ( "PackageLib" ) ;
136- expect ( output ) . to . include ( "required" ) ;
92+ async function assertUsingRemote ( ) {
93+ expect ( ( await getDependency ( ) ) . type ) . to . equal ( "remote" ) ;
13794 }
13895
139- test ( "Use local dependency - Reset " , async function ( ) {
96+ test ( "Swift: Reset Package Dependencies " , async function ( ) {
14097 // spm reset after using local dependency is broken on windows
14198 if ( process . platform === "win32" ) {
14299 this . skip ( ) ;
143100 }
144101 await useLocalDependencyTest ( ) ;
145102
146- // Contract: spm reset
103+ // spm reset
147104 const result = await vscode . commands . executeCommand ( Commands . RESET_PACKAGE ) ;
148105 expect ( result ) . to . be . true ;
149106
150- await assertDependencyNoLongerExists ( ) ;
107+ await assertUsingRemote ( ) ;
151108 } ) ;
152109
153- test ( "Use local dependency - Add to workspace - Unedit " , async ( ) => {
110+ test ( "Swift: Revert To Original Version " , async ( ) => {
154111 await useLocalDependencyTest ( ) ;
155112
156- // Contract: spm unedit
157- const result = await vscode . commands . executeCommand ( Commands . UNEDIT_DEPENDENCY , item ) ;
113+ const result = await vscode . commands . executeCommand (
114+ Commands . UNEDIT_DEPENDENCY ,
115+ await getDependency ( )
116+ ) ;
158117 expect ( result ) . to . be . true ;
159118
160- await assertDependencyNoLongerExists ( ) ;
119+ await assertUsingRemote ( ) ;
161120 } ) ;
162121 } ) ;
163122} ) ;
0 commit comments