1
1
const assert = require ( 'assert' ) ;
2
2
const parser = require ( '../parser.js' ) ;
3
+ const fs = require ( 'fs' ) ;
4
+ const xml2js = require ( 'xml2js' ) ;
3
5
4
6
( async ( ) => {
5
- console . log ( 'TEST 1 - Parse MSTest (TestResults-DifferentTestOutcomes.trx) results file with different test outcomes (using path with filename).' ) ;
7
+ console . log ( '🧪🔹 [ TEST 1 - Parse MSTest (TestResults-DifferentTestOutcomes.trx) results file with different test outcomes (using path with filename). ] 🔹🧪 ' ) ;
6
8
let result = await parser . parse ( './tests/sample-mstest-results/TestResults-DifferentTestOutcomes.trx' , null ) ;
7
9
let resultString = JSON . stringify ( result , null , 4 ) ;
8
10
//console.log(resultString);
@@ -17,7 +19,7 @@ const parser = require('../parser.js');
17
19
} ) ( ) ;
18
20
19
21
( async ( ) => {
20
- console . log ( 'TEST 2 - Parse MSTest (TestResults-AllPassedOutcomes.trx) results file with all passed test outcomes (using path with filename).' ) ;
22
+ console . log ( '🧪🔹 [ TEST 2 - Parse MSTest (TestResults-AllPassedOutcomes.trx) results file with all passed test outcomes (using path with filename). ] 🔹🧪 ' ) ;
21
23
let result = await parser . parse ( './tests/sample-mstest-results/TestResults-AllPassedOutcomes.trx' , null ) ;
22
24
let resultString = JSON . stringify ( result , null , 4 ) ;
23
25
//console.log(resultString);
@@ -33,7 +35,7 @@ const parser = require('../parser.js');
33
35
} ) ( ) ;
34
36
35
37
( async ( ) => {
36
- console . log ( 'TEST 3 - Parse MSTest (TestResults-AllFailedOutcomes.trx) results file with all failed test outcomes (using path with filename).' ) ;
38
+ console . log ( '🧪🔹 [ TEST 3 - Parse MSTest (TestResults-AllFailedOutcomes.trx) results file with all failed test outcomes (using path with filename). ] 🔹🧪 ' ) ;
37
39
let result = await parser . parse ( './tests/sample-mstest-results/TestResults-AllFailedOutcomes.trx' , null ) ;
38
40
let resultString = JSON . stringify ( result , null , 4 ) ;
39
41
//console.log(resultString);
@@ -49,7 +51,7 @@ const parser = require('../parser.js');
49
51
} ) ( ) ;
50
52
51
53
( async ( ) => {
52
- console . log ( 'TEST 4 - Parse MSTest (TestResults-WithAttachments.trx) results file with attachment details (using path with filename).' ) ;
54
+ console . log ( '🧪🔹 [ TEST 4 - Parse MSTest (TestResults-WithAttachments.trx) results file with attachment details (using path with filename). ] 🔹🧪 ' ) ;
53
55
let result = await parser . parse ( './tests/sample-mstest-results/TestResults-WithAttachments.trx' , null ) ;
54
56
let resultString = JSON . stringify ( result , null , 4 ) ;
55
57
//console.log(resultString);
@@ -63,7 +65,7 @@ const parser = require('../parser.js');
63
65
} ) ( ) ;
64
66
65
67
( async ( ) => {
66
- console . log ( 'TEST 5 - Parse all MSTest (.trx) result files (using path to result files - path ending /).' ) ;
68
+ console . log ( '🧪🔹 [ TEST 5 - Parse all MSTest (.trx) result files (using path to result files - path ending /). ] 🔹🧪 ' ) ;
67
69
let result = await parser . parse ( './tests/sample-mstest-results/' , null ) ;
68
70
let resultString = JSON . stringify ( result , null , 4 ) ;
69
71
//console.log(resultString);
@@ -76,7 +78,7 @@ const parser = require('../parser.js');
76
78
} ) ( ) ;
77
79
78
80
( async ( ) => {
79
- console . log ( 'TEST 6 - Parse all MSTest (.trx) result files (using path to result files - path not ending /).' ) ;
81
+ console . log ( '🧪🔹 [ TEST 6 - Parse all MSTest (.trx) result files (using path to result files - path not ending /). ] 🔹🧪 ' ) ;
80
82
let result = await parser . parse ( './tests/sample-mstest-results' , null ) ;
81
83
let resultString = JSON . stringify ( result , null , 4 ) ;
82
84
//console.log(resultString);
@@ -89,7 +91,7 @@ const parser = require('../parser.js');
89
91
} ) ( ) ;
90
92
91
93
( async ( ) => {
92
- console . log ( 'TEST 7 - Parse all MSTest (.trx) result files (using matching pattern - *.trx /).' ) ;
94
+ console . log ( '🧪🔹 [ TEST 7 - Parse all MSTest (.trx) result files (using matching pattern - *.trx /). ] 🔹🧪 ' ) ;
93
95
let result = await parser . parse ( './tests/sample-mstest-results/*.trx' , null ) ;
94
96
let resultString = JSON . stringify ( result , null , 4 ) ;
95
97
//console.log(resultString);
@@ -102,7 +104,7 @@ const parser = require('../parser.js');
102
104
} ) ( ) ;
103
105
104
106
( async ( ) => {
105
- console . log ( 'TEST 8 - Parse all MSTest (.trx) result files (using matching pattern - **/*.trx /).' ) ;
107
+ console . log ( '🧪🔹 [ TEST 8 - Parse all MSTest (.trx) result files (using matching pattern - **/*.trx /). ] 🔹🧪 ' ) ;
106
108
let result = await parser . parse ( './tests/sample-mstest-results/**/*.trx' , null ) ;
107
109
let resultString = JSON . stringify ( result , null , 4 ) ;
108
110
//console.log(resultString);
@@ -115,7 +117,7 @@ const parser = require('../parser.js');
115
117
} ) ( ) ;
116
118
117
119
( async ( ) => {
118
- console . log ( 'TEST 9 - Get test case outcome status mappings (MSTest -> qTest) test.' ) ;
120
+ console . log ( '🧪🔹 [ TEST 9 - Get test case outcome status mappings (MSTest -> qTest) test. ] 🔹🧪 ' ) ;
119
121
//Different test outcome statuses comparison.
120
122
let result = parser . getTestCaseStatus ( 'Failed' ) ;
121
123
assert . equal ( result , 'FAIL' ) ;
@@ -138,7 +140,7 @@ const parser = require('../parser.js');
138
140
} ) ( ) ;
139
141
140
142
( async ( ) => {
141
- console . log ( 'TEST 10 - HTML entities test.' ) ;
143
+ console . log ( '🧪🔹 [ TEST 10 - HTML entities test. ] 🔹🧪 ' ) ;
142
144
//HTML entities conversion check
143
145
let result = parser . htmlEntities ( '&' ) ;
144
146
assert . equal ( result , '&' ) ;
@@ -151,7 +153,7 @@ const parser = require('../parser.js');
151
153
} ) ( ) ;
152
154
153
155
( async ( ) => {
154
- console . log ( 'TEST 11 - Delay test.' ) ;
156
+ console . log ( '🧪🔹 [ TEST 11 - Delay test. ] 🔹🧪 ' ) ;
155
157
let waitTime = Math . floor ( Math . random ( ) * ( 4000 - 1000 ) + 1000 ) ;
156
158
let timeNow = new Date ( ) . getTime ( ) ;
157
159
parser . delay ( waitTime ) ;
@@ -160,7 +162,7 @@ const parser = require('../parser.js');
160
162
} ) ( ) ;
161
163
162
164
( async ( ) => {
163
- console . log ( 'TEST 12 - Max delay test.' ) ;
165
+ console . log ( '🧪🔹 [ TEST 12 - Max delay test. ] 🔹🧪 ' ) ;
164
166
let waitTime = 20001 ;
165
167
let timeNow = new Date ( ) . getTime ( ) ;
166
168
parser . delay ( waitTime ) ;
@@ -169,7 +171,7 @@ const parser = require('../parser.js');
169
171
} ) ( ) ;
170
172
171
173
( async ( ) => {
172
- console . log ( 'TEST 13 - Parse MSTest (TestResults-DifferentTestOutcomes.trx) results file with different test outcomes (using path with filename) & delay option.' ) ;
174
+ console . log ( '🧪🔹 [ TEST 13 - Parse MSTest (TestResults-DifferentTestOutcomes.trx) results file with different test outcomes (using path with filename) & delay option. ] 🔹🧪 ' ) ;
173
175
let waitTime = Math . floor ( Math . random ( ) * ( 4000 - 1000 ) + 1000 ) ;
174
176
let result = await parser . parse ( './tests/sample-mstest-results/TestResults-DifferentTestOutcomes.trx' , { delay : waitTime } ) ;
175
177
let resultString = JSON . stringify ( result , null , 4 ) ;
@@ -185,7 +187,7 @@ const parser = require('../parser.js');
185
187
} ) ( ) ;
186
188
187
189
( async ( ) => {
188
- console . log ( 'TEST 14 - Parse all MSTest (.trx) result files (using path to result files - path ending /) & delay option.' ) ;
190
+ console . log ( '🧪🔹 [ TEST 14 - Parse all MSTest (.trx) result files (using path to result files - path ending /) & delay option. ] 🔹🧪 ' ) ;
189
191
let waitTime = Math . floor ( Math . random ( ) * ( 4000 - 1000 ) + 1000 ) ;
190
192
let result = await parser . parse ( './tests/sample-mstest-results/' , { delay : waitTime } ) ;
191
193
let resultString = JSON . stringify ( result , null , 4 ) ;
@@ -199,7 +201,7 @@ const parser = require('../parser.js');
199
201
} ) ( ) ;
200
202
201
203
( async ( ) => {
202
- console . log ( 'TEST 15 - Test result files not found.' ) ;
204
+ console . log ( '🧪🔹 [ TEST 15 - Test result files not found. ] 🔹🧪 ' ) ;
203
205
try {
204
206
await parser . parse ( './tests/invalid-mstest-result-files/path-with-no-mstest-results/' , null ) ;
205
207
} catch ( e ) {
@@ -209,7 +211,45 @@ const parser = require('../parser.js');
209
211
} ) ( ) ;
210
212
211
213
( async ( ) => {
212
- console . log ( 'TEST 16 - Invalid test results file.' ) ;
214
+ console . log ( '🧪🔹 [ TEST 16 - Invalid test results file. ] 🔹🧪 ' ) ;
213
215
let results = await parser . parse ( './tests/invalid-mstest-result-files/TestResults-Invalid.trx' , null ) ;
214
216
assert . equal ( results . length , 0 ) ;
217
+ } ) ( ) ;
218
+
219
+ ( async ( ) => {
220
+ console . log ( "🧪🔹 [ TEST 17 - Should log an error when XML parsing fails. ] 🔹🧪" ) ;
221
+
222
+ // Spy on console.error
223
+ let consoleErrorSpy = [ ] ;
224
+ const originalConsoleError = console . error ;
225
+ console . error = ( msg , err ) => {
226
+ consoleErrorSpy . push ( msg ) ;
227
+ originalConsoleError ( msg , err ) ;
228
+ } ;
229
+
230
+ // Backup original functions
231
+ const originalReadFileSync = fs . readFileSync ;
232
+ const originalStatSync = fs . statSync ;
233
+ const originalParseString = xml2js . parseString ;
234
+
235
+ try {
236
+ // Mock
237
+ fs . statSync = ( ) => ( { isFile : ( ) => true } ) ;
238
+ fs . readFileSync = ( ) => "<TestRun><Invalid></TestRun>" ;
239
+ xml2js . parseString = ( data , options , callback ) => {
240
+ callback ( new Error ( "Invalid XML format" ) , null ) ;
241
+ } ;
242
+
243
+ // Call the function
244
+ let result = await parser . parse ( "./tests/sample-mstest-results/TestResults-Invalid.trx" , null ) ;
245
+ assert ( Array . isArray ( result ) ) ;
246
+ assert ( result . length === 0 ) ;
247
+ assert ( consoleErrorSpy . some ( msg => msg . includes ( "Could not parse ./tests/sample-mstest-results/TestResults-Invalid.trx" ) ) , "Error log not found in console.error" ) ;
248
+ } finally {
249
+ // Restore original functions
250
+ fs . statSync = originalStatSync ;
251
+ fs . readFileSync = originalReadFileSync ;
252
+ xml2js . parseString = originalParseString ;
253
+ console . error = originalConsoleError ;
254
+ }
215
255
} ) ( ) ;
0 commit comments