15
15
import * as vscode from "vscode" ;
16
16
import * as path from "path" ;
17
17
import * as os from "os" ;
18
- import * as fs from "fs/promises" ;
18
+ import { mkdir , rm } from "fs/promises" ;
19
19
import * as decompress from "decompress" ;
20
20
import { expect } from "chai" ;
21
- import { instance , MockedObject , mockFn , mockGlobalObject , mockObject } from "../../MockUtils" ;
22
21
import { captureDiagnostics } from "../../../src/commands/captureDiagnostics" ;
23
22
import { WorkspaceContext } from "../../../src/WorkspaceContext" ;
24
- import { FolderContext } from "../../../src/FolderContext" ;
25
- import { Version } from "../../../src/utilities/version" ;
26
- import { SwiftToolchain } from "../../../src/toolchain/toolchain" ;
27
- import { SwiftLogger } from "../../../src/logging/SwiftLogger" ;
23
+ import { mockGlobalObject } from "../../MockUtils" ;
24
+ import { activateExtensionForSuite , folderInRootWorkspace } from "../utilities/testutilities" ;
28
25
29
26
suite ( "captureDiagnostics Test Suite" , ( ) => {
30
- let mockContext : MockedObject < WorkspaceContext > ;
31
- let mockedLogger : MockedObject < SwiftLogger > ;
32
- let mockedToolchain : MockedObject < SwiftToolchain > ;
27
+ let workspaceContext : WorkspaceContext ;
33
28
const mockWindow = mockGlobalObject ( vscode , "window" ) ;
34
29
30
+ activateExtensionForSuite ( {
31
+ async setup ( ctx ) {
32
+ workspaceContext = ctx ;
33
+ } ,
34
+ testAssets : [ "defaultPackage" ] ,
35
+ } ) ;
36
+
35
37
setup ( ( ) => {
36
- mockedToolchain = mockObject < SwiftToolchain > ( {
37
- swiftVersion : new Version ( 6 , 0 , 0 ) ,
38
- diagnostics : "some diagnostics" ,
39
- } ) ;
40
- const mockedFolder = mockObject < FolderContext > ( {
41
- folder : vscode . Uri . file ( "/folder1" ) ,
42
- toolchain : instance ( mockedToolchain ) ,
43
- } ) ;
44
- mockedLogger = mockObject < SwiftLogger > ( {
45
- info : mockFn ( ) ,
46
- logs : [ "hello" , "world" ] ,
47
- } ) ;
48
- mockContext = mockObject < WorkspaceContext > ( {
49
- folders : [ instance ( mockedFolder ) ] ,
50
- globalToolchainSwiftVersion : new Version ( 6 , 0 , 0 ) ,
51
- logger : instance ( mockedLogger ) ,
52
- } ) ;
53
38
mockWindow . showInformationMessage . resolves ( "Minimal" as any ) ;
54
39
} ) ;
55
40
56
41
test ( "Should capture dianostics to a zip file" , async ( ) => {
57
- const zipPath = await captureDiagnostics ( instance ( mockContext ) ) ;
42
+ const zipPath = await captureDiagnostics ( workspaceContext ) ;
58
43
expect ( zipPath ) . to . not . be . undefined ;
59
44
} ) ;
60
45
61
46
test ( "Should validate a single folder project zip file has contents" , async ( ) => {
62
- const zipPath = await captureDiagnostics ( instance ( mockContext ) ) ;
47
+ const zipPath = await captureDiagnostics ( workspaceContext ) ;
63
48
expect ( zipPath ) . to . not . be . undefined ;
64
49
65
50
const { files, folder } = await decompressZip ( zipPath as string ) ;
66
51
67
52
validate (
68
53
files . map ( file => file . path ) ,
69
- [ "extension-logs.txt " , "folder1 -[a-z0-9]+-settings.txt" ]
54
+ [ "swift-vscode-extension.log " , "defaultPackage -[a-z0-9]+-settings.txt" ]
70
55
) ;
71
56
72
- await fs . rm ( folder , { recursive : true , force : true } ) ;
57
+ await rm ( folder , { recursive : true , force : true } ) ;
73
58
} ) ;
74
59
75
60
suite ( "Multiple folder project" , ( ) => {
76
- setup ( ( ) => {
77
- const mockedFolder1 = mockObject < FolderContext > ( {
78
- folder : vscode . Uri . file ( "/folder1" ) ,
79
- toolchain : instance ( mockedToolchain ) ,
80
- } ) ;
81
- const mockedFolder2 = mockObject < FolderContext > ( {
82
- folder : vscode . Uri . file ( "/folder2" ) ,
83
- toolchain : instance ( mockedToolchain ) ,
84
- } ) ;
85
- mockContext = mockObject < WorkspaceContext > ( {
86
- folders : [ instance ( mockedFolder1 ) , instance ( mockedFolder2 ) ] ,
87
- globalToolchainSwiftVersion : new Version ( 6 , 0 , 0 ) ,
88
- logger : instance ( mockedLogger ) ,
89
- } ) ;
90
- mockWindow . showInformationMessage . resolves ( "Minimal" as any ) ;
61
+ setup ( async ( ) => {
62
+ await folderInRootWorkspace ( "dependencies" , workspaceContext ) ;
91
63
} ) ;
92
64
93
65
test ( "Should validate a multiple folder project zip file has contents" , async ( ) => {
94
- const zipPath = await captureDiagnostics ( instance ( mockContext ) ) ;
66
+ const zipPath = await captureDiagnostics ( workspaceContext ) ;
95
67
expect ( zipPath ) . to . not . be . undefined ;
96
68
97
69
const { files, folder } = await decompressZip ( zipPath as string ) ;
98
70
validate (
99
71
files . map ( file => file . path ) ,
100
72
[
101
- "extension-logs.txt " ,
102
- "folder1 /" ,
103
- "folder1/folder1 -[a-z0-9]+-settings.txt" ,
104
- "folder2 /" ,
105
- "folder2/folder2 -[a-z0-9]+-settings.txt" ,
73
+ "swift-vscode-extension.log " ,
74
+ "defaultPackage /" ,
75
+ "defaultPackage/defaultPackage -[a-z0-9]+-settings.txt" ,
76
+ "dependencies /" ,
77
+ "dependencies/dependencies -[a-z0-9]+-settings.txt" ,
106
78
]
107
79
) ;
108
- await fs . rm ( folder , { recursive : true , force : true } ) ;
80
+ await rm ( folder , { recursive : true , force : true } ) ;
109
81
} ) ;
110
82
} ) ;
111
83
@@ -116,7 +88,7 @@ suite("captureDiagnostics Test Suite", () => {
116
88
os . tmpdir ( ) ,
117
89
`vscode-swift-test-${ Math . random ( ) . toString ( 36 ) . substring ( 7 ) } `
118
90
) ;
119
- await fs . mkdir ( tempDir , { recursive : true } ) ;
91
+ await mkdir ( tempDir , { recursive : true } ) ;
120
92
return { folder : tempDir , files : await decompress ( zipPath as string , tempDir ) } ;
121
93
}
122
94
0 commit comments