@@ -18,146 +18,105 @@ import {
18
18
PackageDependenciesProvider ,
19
19
PackageNode ,
20
20
} from "../../../src/ui/PackageDependencyProvider" ;
21
- import { executeTaskAndWaitForResult , waitForNoRunningTasks } from "../../utilities/tasks" ;
22
- import { getBuildAllTask , SwiftTask } from "../../../src/tasks/SwiftTaskProvider" ;
23
21
import { testAssetUri } from "../../fixtures" ;
24
22
import { FolderContext } from "../../../src/FolderContext" ;
25
23
import { WorkspaceContext } from "../../../src/WorkspaceContext" ;
26
- import * as sinon from "sinon" ;
27
24
import { Commands } from "../../../src/commands" ;
28
25
import { activateExtensionForSuite , folderInRootWorkspace } from "../utilities/testutilities" ;
26
+ import { executeTaskAndWaitForResult , waitForNoRunningTasks } from "../../utilities/tasks" ;
27
+ import { getBuildAllTask , SwiftTask } from "../../../src/tasks/SwiftTaskProvider" ;
29
28
30
29
suite ( "Dependency Commmands Test Suite" , function ( ) {
31
30
// full workflow's interaction with spm is longer than the default timeout
32
31
// 60 seconds for each test should be more than enough
33
32
this . timeout ( 60 * 1000 ) ;
34
33
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
+ } ,
53
45
} ) ;
54
46
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
+ } ) ;
67
52
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 ;
72
57
} ) ;
73
58
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 ( ) {
78
60
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 ) ;
110
66
} ) ;
111
67
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
+ } ) ;
119
71
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
+ ) ;
122
86
expect ( result ) . to . be . true ;
123
87
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" ) ;
129
90
}
130
91
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" ) ;
137
94
}
138
95
139
- test ( "Use local dependency - Reset " , async function ( ) {
96
+ test ( "Swift: Reset Package Dependencies " , async function ( ) {
140
97
// spm reset after using local dependency is broken on windows
141
98
if ( process . platform === "win32" ) {
142
99
this . skip ( ) ;
143
100
}
144
101
await useLocalDependencyTest ( ) ;
145
102
146
- // Contract: spm reset
103
+ // spm reset
147
104
const result = await vscode . commands . executeCommand ( Commands . RESET_PACKAGE ) ;
148
105
expect ( result ) . to . be . true ;
149
106
150
- await assertDependencyNoLongerExists ( ) ;
107
+ await assertUsingRemote ( ) ;
151
108
} ) ;
152
109
153
- test ( "Use local dependency - Add to workspace - Unedit " , async ( ) => {
110
+ test ( "Swift: Revert To Original Version " , async ( ) => {
154
111
await useLocalDependencyTest ( ) ;
155
112
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
+ ) ;
158
117
expect ( result ) . to . be . true ;
159
118
160
- await assertDependencyNoLongerExists ( ) ;
119
+ await assertUsingRemote ( ) ;
161
120
} ) ;
162
121
} ) ;
163
122
} ) ;
0 commit comments