11const assert = require ( 'assert' ) ;
22const parser = require ( '../parser.js' ) ;
3+ const fs = require ( 'fs' ) ;
4+ const xml2js = require ( 'xml2js' ) ;
35
46( 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). ] 🔹🧪 ' ) ;
68 let result = await parser . parse ( './tests/sample-mstest-results/TestResults-DifferentTestOutcomes.trx' , null ) ;
79 let resultString = JSON . stringify ( result , null , 4 ) ;
810 //console.log(resultString);
@@ -17,7 +19,7 @@ const parser = require('../parser.js');
1719} ) ( ) ;
1820
1921( 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). ] 🔹🧪 ' ) ;
2123 let result = await parser . parse ( './tests/sample-mstest-results/TestResults-AllPassedOutcomes.trx' , null ) ;
2224 let resultString = JSON . stringify ( result , null , 4 ) ;
2325 //console.log(resultString);
@@ -33,7 +35,7 @@ const parser = require('../parser.js');
3335} ) ( ) ;
3436
3537( 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). ] 🔹🧪 ' ) ;
3739 let result = await parser . parse ( './tests/sample-mstest-results/TestResults-AllFailedOutcomes.trx' , null ) ;
3840 let resultString = JSON . stringify ( result , null , 4 ) ;
3941 //console.log(resultString);
@@ -49,7 +51,7 @@ const parser = require('../parser.js');
4951} ) ( ) ;
5052
5153( 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). ] 🔹🧪 ' ) ;
5355 let result = await parser . parse ( './tests/sample-mstest-results/TestResults-WithAttachments.trx' , null ) ;
5456 let resultString = JSON . stringify ( result , null , 4 ) ;
5557 //console.log(resultString);
@@ -63,7 +65,7 @@ const parser = require('../parser.js');
6365} ) ( ) ;
6466
6567( 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 /). ] 🔹🧪 ' ) ;
6769 let result = await parser . parse ( './tests/sample-mstest-results/' , null ) ;
6870 let resultString = JSON . stringify ( result , null , 4 ) ;
6971 //console.log(resultString);
@@ -76,7 +78,7 @@ const parser = require('../parser.js');
7678} ) ( ) ;
7779
7880( 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 /). ] 🔹🧪 ' ) ;
8082 let result = await parser . parse ( './tests/sample-mstest-results' , null ) ;
8183 let resultString = JSON . stringify ( result , null , 4 ) ;
8284 //console.log(resultString);
@@ -89,7 +91,7 @@ const parser = require('../parser.js');
8991} ) ( ) ;
9092
9193( 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 /). ] 🔹🧪 ' ) ;
9395 let result = await parser . parse ( './tests/sample-mstest-results/*.trx' , null ) ;
9496 let resultString = JSON . stringify ( result , null , 4 ) ;
9597 //console.log(resultString);
@@ -102,7 +104,7 @@ const parser = require('../parser.js');
102104} ) ( ) ;
103105
104106( 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 /). ] 🔹🧪 ' ) ;
106108 let result = await parser . parse ( './tests/sample-mstest-results/**/*.trx' , null ) ;
107109 let resultString = JSON . stringify ( result , null , 4 ) ;
108110 //console.log(resultString);
@@ -115,7 +117,7 @@ const parser = require('../parser.js');
115117} ) ( ) ;
116118
117119( 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. ] 🔹🧪 ' ) ;
119121 //Different test outcome statuses comparison.
120122 let result = parser . getTestCaseStatus ( 'Failed' ) ;
121123 assert . equal ( result , 'FAIL' ) ;
@@ -138,7 +140,7 @@ const parser = require('../parser.js');
138140} ) ( ) ;
139141
140142( async ( ) => {
141- console . log ( 'TEST 10 - HTML entities test.' ) ;
143+ console . log ( '🧪🔹 [ TEST 10 - HTML entities test. ] 🔹🧪 ' ) ;
142144 //HTML entities conversion check
143145 let result = parser . htmlEntities ( '&' ) ;
144146 assert . equal ( result , '&' ) ;
@@ -151,7 +153,7 @@ const parser = require('../parser.js');
151153} ) ( ) ;
152154
153155( async ( ) => {
154- console . log ( 'TEST 11 - Delay test.' ) ;
156+ console . log ( '🧪🔹 [ TEST 11 - Delay test. ] 🔹🧪 ' ) ;
155157 let waitTime = Math . floor ( Math . random ( ) * ( 4000 - 1000 ) + 1000 ) ;
156158 let timeNow = new Date ( ) . getTime ( ) ;
157159 parser . delay ( waitTime ) ;
@@ -160,7 +162,7 @@ const parser = require('../parser.js');
160162} ) ( ) ;
161163
162164( async ( ) => {
163- console . log ( 'TEST 12 - Max delay test.' ) ;
165+ console . log ( '🧪🔹 [ TEST 12 - Max delay test. ] 🔹🧪 ' ) ;
164166 let waitTime = 20001 ;
165167 let timeNow = new Date ( ) . getTime ( ) ;
166168 parser . delay ( waitTime ) ;
@@ -169,7 +171,7 @@ const parser = require('../parser.js');
169171} ) ( ) ;
170172
171173( 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. ] 🔹🧪 ' ) ;
173175 let waitTime = Math . floor ( Math . random ( ) * ( 4000 - 1000 ) + 1000 ) ;
174176 let result = await parser . parse ( './tests/sample-mstest-results/TestResults-DifferentTestOutcomes.trx' , { delay : waitTime } ) ;
175177 let resultString = JSON . stringify ( result , null , 4 ) ;
@@ -185,7 +187,7 @@ const parser = require('../parser.js');
185187} ) ( ) ;
186188
187189( 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. ] 🔹🧪 ' ) ;
189191 let waitTime = Math . floor ( Math . random ( ) * ( 4000 - 1000 ) + 1000 ) ;
190192 let result = await parser . parse ( './tests/sample-mstest-results/' , { delay : waitTime } ) ;
191193 let resultString = JSON . stringify ( result , null , 4 ) ;
@@ -199,7 +201,7 @@ const parser = require('../parser.js');
199201} ) ( ) ;
200202
201203( async ( ) => {
202- console . log ( 'TEST 15 - Test result files not found.' ) ;
204+ console . log ( '🧪🔹 [ TEST 15 - Test result files not found. ] 🔹🧪 ' ) ;
203205 try {
204206 await parser . parse ( './tests/invalid-mstest-result-files/path-with-no-mstest-results/' , null ) ;
205207 } catch ( e ) {
@@ -209,7 +211,45 @@ const parser = require('../parser.js');
209211} ) ( ) ;
210212
211213( async ( ) => {
212- console . log ( 'TEST 16 - Invalid test results file.' ) ;
214+ console . log ( '🧪🔹 [ TEST 16 - Invalid test results file. ] 🔹🧪 ' ) ;
213215 let results = await parser . parse ( './tests/invalid-mstest-result-files/TestResults-Invalid.trx' , null ) ;
214216 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+ }
215255} ) ( ) ;
0 commit comments