diff --git a/__tests__/__outputs__/lcov-report-results.md b/__tests__/__outputs__/lcov-report-results.md index 744fdfa..d8f4bfb 100644 --- a/__tests__/__outputs__/lcov-report-results.md +++ b/__tests__/__outputs__/lcov-report-results.md @@ -1,45 +1,21 @@ -![Tests failed](https://img.shields.io/badge/tests-7%20passed%2C%208%20failed-critical) -## ❌ fixtures/lcov.json -**15** tests were completed in **0ms** with **7** passed, **8** failed and **0** skipped. +![Tests failed](https://img.shields.io/badge/tests-4%20passed%2C%202%20failed-critical) +## ❌ fixtures/lcov.info +**6** tests were completed in **0ms** with **4** passed, **2** failed and **0** skipped. |Test suite|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| -|[src/core/dao.service.ts](#r0s0)|3✅|||0ms| -|[src/domains/auth/auth.controller.ts](#r0s1)|2✅|1❌||0ms| -|[src/shared/notif/providers/fcm/fcm.service.spec.ts](#r0s2)||3❌||0ms| -|[src/shared/notif/providers/fcm/fcm.service.ts](#r0s3)|1✅|2❌||0ms| -|[src/shared/notif/providers/mail/mail-service.ts](#r0s4)|1✅|2❌||0ms| -### ✅ src/core/dao.service.ts +|[src/services/notifier/NotifierService.js](#r0s0)|2✅|1❌||0ms| +|[src/services/notifier/providers/DiscordNotifierProvider.js](#r0s1)|2✅|1❌||0ms| +### ❌ src/services/notifier/NotifierService.js ``` -src/core/dao.service.ts - ✅ statement - ✅ fonction - ✅ branche +src/services/notifier/NotifierService.js + ✅ lines 100% (21/21) + ✅ functions 100% (10/10) + ❌ branches 50% (3/6) ``` -### ❌ src/domains/auth/auth.controller.ts +### ❌ src/services/notifier/providers/DiscordNotifierProvider.js ``` -src/domains/auth/auth.controller.ts - ✅ statement - ❌ fonction - ✅ branche -``` -### ❌ src/shared/notif/providers/fcm/fcm.service.spec.ts -``` -src/shared/notif/providers/fcm/fcm.service.spec.ts - ❌ statement - ❌ fonction - ❌ branche -``` -### ❌ src/shared/notif/providers/fcm/fcm.service.ts -``` -src/shared/notif/providers/fcm/fcm.service.ts - ❌ statement - ❌ fonction - ✅ branche -``` -### ❌ src/shared/notif/providers/mail/mail-service.ts -``` -src/shared/notif/providers/mail/mail-service.ts - ❌ statement - ❌ fonction - ✅ branche +src/services/notifier/providers/DiscordNotifierProvider.js + ✅ lines 100% (17/17) + ✅ functions 100% (3/3) + ❌ branches 75% (3/4) ``` \ No newline at end of file diff --git a/__tests__/fixtures/lcov.info b/__tests__/fixtures/lcov.info new file mode 100644 index 0000000..8c2bb40 --- /dev/null +++ b/__tests__/fixtures/lcov.info @@ -0,0 +1,92 @@ +TN: +SF:src/services/notifier/NotifierService.js +FN:9,(anonymous_0) +FN:10,(anonymous_1) +FN:26,(anonymous_2) +FN:27,(anonymous_3) +FN:29,(anonymous_4) +FN:30,(anonymous_5) +FN:46,(anonymous_6) +FN:47,(anonymous_7) +FN:48,(anonymous_8) +FN:49,(anonymous_9) +FNF:10 +FNH:10 +FNDA:1,(anonymous_0) +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:3,(anonymous_3) +FNDA:3,(anonymous_4) +FNDA:3,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:3,(anonymous_7) +FNDA:3,(anonymous_8) +FNDA:3,(anonymous_9) +DA:9,1 +DA:10,1 +DA:11,1 +DA:13,1 +DA:14,1 +DA:26,1 +DA:27,3 +DA:29,1 +DA:30,3 +DA:31,3 +DA:33,3 +DA:34,3 +DA:46,1 +DA:47,3 +DA:48,3 +DA:51,3 +DA:53,3 +DA:54,3 +DA:58,3 +DA:61,1 +DA:64,1 +LF:21 +LH:21 +BRDA:11,0,0,1 +BRDA:11,0,1,0 +BRDA:31,1,0,3 +BRDA:31,1,1,0 +BRDA:51,2,0,3 +BRDA:51,2,1,0 +BRF:6 +BRH:3 +end_of_record +TN: +SF:src/services/notifier/providers/DiscordNotifierProvider.js +FN:12,(anonymous_0) +FN:33,(anonymous_1) +FN:51,(anonymous_2) +FNF:3 +FNH:3 +FNDA:1,(anonymous_0) +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +DA:3,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:22,1 +DA:23,1 +DA:33,1 +DA:34,1 +DA:35,1 +DA:40,1 +DA:41,1 +DA:51,1 +DA:52,1 +DA:53,1 +DA:58,1 +DA:59,1 +DA:62,1 +LF:17 +LH:17 +BRDA:18,0,0,0 +BRDA:18,0,1,1 +BRDA:20,1,0,1 +BRDA:20,1,1,1 +BRF:4 +BRH:3 +end_of_record diff --git a/__tests__/fixtures/lcov.json b/__tests__/fixtures/lcov.json deleted file mode 100644 index 82be37e..0000000 --- a/__tests__/fixtures/lcov.json +++ /dev/null @@ -1,6 +0,0 @@ -{"src/core/dao.service.ts": {"path":"src/core/dao.service.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":51}},"1":{"start":{"line":8,"column":4},"end":{"line":8,"column":23}},"2":{"start":{"line":12,"column":24},"end":{"line":12,"column":53}},"3":{"start":{"line":15,"column":4},"end":{"line":15,"column":30}},"4":{"start":{"line":21,"column":4},"end":{"line":21,"column":55}},"5":{"start":{"line":27,"column":20},"end":{"line":27,"column":77}},"6":{"start":{"line":28,"column":4},"end":{"line":30,"column":null}},"7":{"start":{"line":29,"column":6},"end":{"line":29,"column":36}},"8":{"start":{"line":31,"column":4},"end":{"line":31,"column":19}},"9":{"start":{"line":35,"column":27},"end":{"line":40,"column":null}},"10":{"start":{"line":42,"column":4},"end":{"line":44,"column":null}},"11":{"start":{"line":43,"column":6},"end":{"line":43,"column":36}},"12":{"start":{"line":45,"column":4},"end":{"line":45,"column":26}},"13":{"start":{"line":49,"column":23},"end":{"line":49,"column":69}},"14":{"start":{"line":50,"column":4},"end":{"line":52,"column":null}},"15":{"start":{"line":51,"column":6},"end":{"line":51,"column":36}},"16":{"start":{"line":53,"column":4},"end":{"line":53,"column":22}},"17":{"start":{"line":57,"column":4},"end":{"line":57,"column":48}},"18":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":14}},"loc":{"start":{"line":7,"column":36},"end":{"line":9,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":2},"end":{"line":11,"column":8}},"loc":{"start":{"line":11,"column":33},"end":{"line":16,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":7}},"loc":{"start":{"line":18,"column":28},"end":{"line":22,"column":3}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":24,"column":2},"end":{"line":24,"column":7}},"loc":{"start":{"line":24,"column":26},"end":{"line":32,"column":3}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":34,"column":2},"end":{"line":34,"column":7}},"loc":{"start":{"line":34,"column":51},"end":{"line":46,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":48,"column":2},"end":{"line":48,"column":7}},"loc":{"start":{"line":48,"column":25},"end":{"line":54,"column":3}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":56,"column":2},"end":{"line":56,"column":11}},"loc":{"start":{"line":56,"column":23},"end":{"line":58,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":28,"column":4},"end":{"line":30,"column":null}},"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":30,"column":null}}]},"1":{"loc":{"start":{"line":42,"column":4},"end":{"line":44,"column":null}},"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":44,"column":null}}]},"2":{"loc":{"start":{"line":50,"column":4},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":50,"column":4},"end":{"line":52,"column":null}}]}},"s":{"0":34,"1":93,"2":9,"3":9,"4":16,"5":15,"6":15,"7":5,"8":10,"9":14,"10":14,"11":5,"12":9,"13":18,"14":18,"15":1,"16":17,"17":1,"18":34},"f":{"0":93,"1":9,"2":16,"3":15,"4":14,"5":18,"6":1},"b":{"0":[5],"1":[5],"2":[1]}} -,"src/domains/auth/auth.controller.ts": {"path":"src/domains/auth/auth.controller.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":9,"column":0},"end":{"line":9,"column":null}},"2":{"start":{"line":15,"column":0},"end":{"line":15,"column":59}},"3":{"start":{"line":16,"column":0},"end":{"line":16,"column":38}},"4":{"start":{"line":17,"column":0},"end":{"line":17,"column":54}},"5":{"start":{"line":18,"column":0},"end":{"line":18,"column":45}},"6":{"start":{"line":19,"column":0},"end":{"line":19,"column":59}},"7":{"start":{"line":20,"column":0},"end":{"line":20,"column":41}},"8":{"start":{"line":21,"column":0},"end":{"line":21,"column":43}},"9":{"start":{"line":22,"column":0},"end":{"line":22,"column":51}},"10":{"start":{"line":23,"column":0},"end":{"line":23,"column":47}},"11":{"start":{"line":24,"column":0},"end":{"line":24,"column":44}},"12":{"start":{"line":25,"column":0},"end":{"line":25,"column":40}},"13":{"start":{"line":29,"column":7},"end":{"line":91,"column":null}},"14":{"start":{"line":31,"column":12},"end":{"line":31,"column":25}},"15":{"start":{"line":32,"column":12},"end":{"line":32,"column":26}},"16":{"start":{"line":33,"column":39},"end":{"line":33,"column":48}},"17":{"start":{"line":47,"column":4},"end":{"line":51,"column":7}},"18":{"start":{"line":48,"column":6},"end":{"line":48,"column":25}},"19":{"start":{"line":49,"column":6},"end":{"line":49,"column":78}},"20":{"start":{"line":50,"column":6},"end":{"line":50,"column":19}},"21":{"start":{"line":62,"column":16},"end":{"line":62,"column":57}},"22":{"start":{"line":63,"column":4},"end":{"line":65,"column":null}},"23":{"start":{"line":64,"column":6},"end":{"line":64,"column":66}},"24":{"start":{"line":66,"column":4},"end":{"line":66,"column":23}},"25":{"start":{"line":77,"column":4},"end":{"line":77,"column":71}},"26":{"start":{"line":89,"column":4},"end":{"line":89,"column":56}},"27":{"start":{"line":46,"column":8},"end":{"line":52,"column":null}},"28":{"start":{"line":61,"column":8},"end":{"line":67,"column":null}},"29":{"start":{"line":76,"column":8},"end":{"line":78,"column":null}},"30":{"start":{"line":80,"column":2},"end":{"line":90,"column":null}},"31":{"start":{"line":29,"column":13},"end":{"line":91,"column":null}},"32":{"start":{"line":29,"column":13},"end":{"line":29,"column":27}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"loc":{"start":{"line":33,"column":63},"end":{"line":34,"column":6}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":46,"column":2},"end":{"line":46,"column":7}},"loc":{"start":{"line":46,"column":28},"end":{"line":52,"column":3}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":47,"column":49},"end":{"line":47,"column":50}},"loc":{"start":{"line":47,"column":59},"end":{"line":51,"column":5}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":61,"column":2},"end":{"line":61,"column":7}},"loc":{"start":{"line":61,"column":30},"end":{"line":67,"column":3}}},"4":{"name":"(anonymous_8)","decl":{"start":{"line":76,"column":2},"end":{"line":76,"column":7}},"loc":{"start":{"line":76,"column":29},"end":{"line":78,"column":3}}},"5":{"name":"(anonymous_9)","decl":{"start":{"line":88,"column":2},"end":{"line":88,"column":16}},"loc":{"start":{"line":88,"column":31},"end":{"line":90,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":63,"column":4},"end":{"line":65,"column":null}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":65,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":3,"15":3,"16":3,"17":0,"18":0,"19":0,"20":0,"21":2,"22":2,"23":1,"24":1,"25":0,"26":0,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1},"f":{"0":3,"1":0,"2":0,"3":2,"4":0,"5":0},"b":{"0":[1]}} -,"src/shared/notif/providers/fcm/fcm.service.spec.ts": {"path":"src/shared/notif/providers/fcm/fcm.service.spec.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":54}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":43}},"2":{"start":{"line":4,"column":0},"end":{"line":48,"column":3}},"3":{"start":{"line":7,"column":2},"end":{"line":13,"column":5}},"4":{"start":{"line":8,"column":34},"end":{"line":10,"column":16}},"5":{"start":{"line":12,"column":4},"end":{"line":12,"column":49}},"6":{"start":{"line":15,"column":2},"end":{"line":17,"column":5}},"7":{"start":{"line":16,"column":4},"end":{"line":16,"column":34}},"8":{"start":{"line":19,"column":2},"end":{"line":21,"column":5}},"9":{"start":{"line":20,"column":4},"end":{"line":20,"column":62}},"10":{"start":{"line":22,"column":2},"end":{"line":38,"column":5}},"11":{"start":{"line":23,"column":16},"end":{"line":26,"column":null}},"12":{"start":{"line":28,"column":16},"end":{"line":32,"column":null}},"13":{"start":{"line":34,"column":4},"end":{"line":34,"column":30}},"14":{"start":{"line":35,"column":4},"end":{"line":35,"column":30}},"15":{"start":{"line":36,"column":4},"end":{"line":36,"column":21}},"16":{"start":{"line":37,"column":4},"end":{"line":37,"column":21}},"17":{"start":{"line":40,"column":2},"end":{"line":47,"column":5}},"18":{"start":{"line":41,"column":15},"end":{"line":43,"column":6}},"19":{"start":{"line":44,"column":4},"end":{"line":44,"column":29}},"20":{"start":{"line":45,"column":4},"end":{"line":45,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":23},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":28},"end":{"line":48,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":13},"end":{"line":7,"column":18}},"loc":{"start":{"line":7,"column":24},"end":{"line":13,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":15,"column":26},"end":{"line":15,"column":29}},"loc":{"start":{"line":15,"column":31},"end":{"line":17,"column":3}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":19,"column":41},"end":{"line":19,"column":44}},"loc":{"start":{"line":19,"column":46},"end":{"line":21,"column":3}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":42},"end":{"line":22,"column":47}},"loc":{"start":{"line":22,"column":53},"end":{"line":38,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":40,"column":43},"end":{"line":40,"column":48}},"loc":{"start":{"line":40,"column":54},"end":{"line":47,"column":3}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{}} -,"src/shared/notif/providers/fcm/fcm.service.ts": {"path":"src/shared/notif/providers/fcm/fcm.service.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":44}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":43}},"2":{"start":{"line":8,"column":0},"end":{"line":8,"column":43}},"3":{"start":{"line":11,"column":7},"end":{"line":60,"column":null}},"4":{"start":{"line":13,"column":4},"end":{"line":17,"column":7}},"5":{"start":{"line":21,"column":4},"end":{"line":21,"column":77}},"6":{"start":{"line":25,"column":4},"end":{"line":27,"column":56}},"7":{"start":{"line":36,"column":38},"end":{"line":38,"column":6}},"8":{"start":{"line":39,"column":4},"end":{"line":41,"column":null}},"9":{"start":{"line":40,"column":6},"end":{"line":40,"column":26}},"10":{"start":{"line":42,"column":4},"end":{"line":42,"column":73}},"11":{"start":{"line":51,"column":38},"end":{"line":54,"column":6}},"12":{"start":{"line":55,"column":4},"end":{"line":57,"column":null}},"13":{"start":{"line":56,"column":6},"end":{"line":56,"column":26}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":55}},"15":{"start":{"line":11,"column":13},"end":{"line":60,"column":null}},"16":{"start":{"line":11,"column":13},"end":{"line":11,"column":23}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":null}},"loc":{"start":{"line":12,"column":2},"end":{"line":18,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":17}},"loc":{"start":{"line":20,"column":58},"end":{"line":22,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":24,"column":2},"end":{"line":24,"column":20}},"loc":{"start":{"line":24,"column":61},"end":{"line":28,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":30,"column":2},"end":{"line":30,"column":19}},"loc":{"start":{"line":34,"column":29},"end":{"line":43,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":45,"column":2},"end":{"line":45,"column":19}},"loc":{"start":{"line":49,"column":29},"end":{"line":59,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":39,"column":4},"end":{"line":41,"column":null}},"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":41,"column":null}}]},"1":{"loc":{"start":{"line":55,"column":4},"end":{"line":57,"column":null}},"type":"if","locations":[{"start":{"line":55,"column":4},"end":{"line":57,"column":null}}]}},"s":{"0":13,"1":13,"2":13,"3":13,"4":1,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":13,"16":13},"f":{"0":1,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0],"1":[0]}} -,"src/shared/notif/providers/mail/mail-service.ts": {"path":"src/shared/notif/providers/mail/mail-service.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":44}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":41}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":47}},"3":{"start":{"line":9,"column":7},"end":{"line":877,"column":null}},"4":{"start":{"line":10,"column":22},"end":{"line":10,"column":37}},"5":{"start":{"line":12,"column":10},"end":{"line":26,"column":5}},"6":{"start":{"line":81,"column":10},"end":{"line":116,"column":70}},"7":{"start":{"line":81,"column":54},"end":{"line":116,"column":70}},"8":{"start":{"line":118,"column":10},"end":{"line":127,"column":6}},"9":{"start":{"line":129,"column":10},"end":{"line":137,"column":6}},"10":{"start":{"line":139,"column":10},"end":{"line":141,"column":6}},"11":{"start":{"line":143,"column":10},"end":{"line":149,"column":6}},"12":{"start":{"line":151,"column":10},"end":{"line":151,"column":154}},"13":{"start":{"line":153,"column":10},"end":{"line":153,"column":160}},"14":{"start":{"line":155,"column":10},"end":{"line":155,"column":124}},"15":{"start":{"line":157,"column":10},"end":{"line":157,"column":133}},"16":{"start":{"line":159,"column":10},"end":{"line":165,"column":6}},"17":{"start":{"line":29,"column":4},"end":{"line":78,"column":6}},"18":{"start":{"line":168,"column":4},"end":{"line":709,"column":9}},"19":{"start":{"line":713,"column":4},"end":{"line":729,"column":7}},"20":{"start":{"line":739,"column":4},"end":{"line":754,"column":7}},"21":{"start":{"line":758,"column":4},"end":{"line":770,"column":6}},"22":{"start":{"line":774,"column":4},"end":{"line":779,"column":6}},"23":{"start":{"line":783,"column":4},"end":{"line":788,"column":6}},"24":{"start":{"line":792,"column":4},"end":{"line":807,"column":6}},"25":{"start":{"line":811,"column":4},"end":{"line":817,"column":6}},"26":{"start":{"line":821,"column":4},"end":{"line":827,"column":6}},"27":{"start":{"line":831,"column":4},"end":{"line":837,"column":6}},"28":{"start":{"line":841,"column":4},"end":{"line":847,"column":6}},"29":{"start":{"line":851,"column":4},"end":{"line":857,"column":6}},"30":{"start":{"line":861,"column":4},"end":{"line":866,"column":6}},"31":{"start":{"line":870,"column":4},"end":{"line":875,"column":6}},"32":{"start":{"line":9,"column":13},"end":{"line":877,"column":null}},"33":{"start":{"line":9,"column":13},"end":{"line":9,"column":24}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":22}},"loc":{"start":{"line":10,"column":50},"end":{"line":10,"column":54}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":81,"column":36},"end":{"line":81,"column":37}},"loc":{"start":{"line":81,"column":54},"end":{"line":116,"column":70}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":28,"column":10},"end":{"line":28,"column":18}},"loc":{"start":{"line":28,"column":34},"end":{"line":79,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":167,"column":10},"end":{"line":167,"column":27}},"loc":{"start":{"line":167,"column":40},"end":{"line":710,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":712,"column":10},"end":{"line":712,"column":18}},"loc":{"start":{"line":712,"column":70},"end":{"line":730,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":732,"column":10},"end":{"line":732,"column":27}},"loc":{"start":{"line":737,"column":30},"end":{"line":755,"column":3}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":757,"column":9},"end":{"line":757,"column":24}},"loc":{"start":{"line":757,"column":49},"end":{"line":771,"column":3}}},"7":{"name":"(anonymous_9)","decl":{"start":{"line":773,"column":9},"end":{"line":773,"column":20}},"loc":{"start":{"line":773,"column":52},"end":{"line":780,"column":3}}},"8":{"name":"(anonymous_10)","decl":{"start":{"line":782,"column":9},"end":{"line":782,"column":26}},"loc":{"start":{"line":782,"column":58},"end":{"line":789,"column":3}}},"9":{"name":"(anonymous_11)","decl":{"start":{"line":791,"column":9},"end":{"line":791,"column":22}},"loc":{"start":{"line":791,"column":66},"end":{"line":808,"column":3}}},"10":{"name":"(anonymous_12)","decl":{"start":{"line":810,"column":9},"end":{"line":810,"column":23}},"loc":{"start":{"line":810,"column":66},"end":{"line":818,"column":3}}},"11":{"name":"(anonymous_13)","decl":{"start":{"line":820,"column":9},"end":{"line":820,"column":26}},"loc":{"start":{"line":820,"column":69},"end":{"line":828,"column":3}}},"12":{"name":"(anonymous_14)","decl":{"start":{"line":830,"column":9},"end":{"line":830,"column":27}},"loc":{"start":{"line":830,"column":70},"end":{"line":838,"column":3}}},"13":{"name":"(anonymous_15)","decl":{"start":{"line":840,"column":9},"end":{"line":840,"column":25}},"loc":{"start":{"line":840,"column":69},"end":{"line":848,"column":3}}},"14":{"name":"(anonymous_16)","decl":{"start":{"line":850,"column":9},"end":{"line":850,"column":28}},"loc":{"start":{"line":850,"column":72},"end":{"line":858,"column":3}}},"15":{"name":"(anonymous_17)","decl":{"start":{"line":860,"column":9},"end":{"line":860,"column":26}},"loc":{"start":{"line":860,"column":51},"end":{"line":867,"column":3}}},"16":{"name":"(anonymous_18)","decl":{"start":{"line":869,"column":9},"end":{"line":869,"column":28}},"loc":{"start":{"line":869,"column":41},"end":{"line":876,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":85,"column":2},"end":{"line":93,"column":null}},"type":"cond-expr","locations":[{"start":{"line":86,"column":6},"end":{"line":92,"column":null}},{"start":{"line":93,"column":6},"end":{"line":93,"column":null}}]},"1":{"loc":{"start":{"line":96,"column":2},"end":{"line":103,"column":null}},"type":"cond-expr","locations":[{"start":{"line":97,"column":6},"end":{"line":102,"column":null}},{"start":{"line":103,"column":6},"end":{"line":103,"column":null}}]},"2":{"loc":{"start":{"line":557,"column":38},"end":{"line":575,"column":null}},"type":"cond-expr","locations":[{"start":{"line":558,"column":42},"end":{"line":574,"column":null}},{"start":{"line":575,"column":42},"end":{"line":575,"column":null}}]},"3":{"loc":{"start":{"line":578,"column":38},"end":{"line":585,"column":null}},"type":"cond-expr","locations":[{"start":{"line":579,"column":42},"end":{"line":584,"column":null}},{"start":{"line":585,"column":42},"end":{"line":585,"column":null}}]},"4":{"loc":{"start":{"line":727,"column":12},"end":{"line":727,"column":29}},"type":"cond-expr","locations":[{"start":{"line":727,"column":12},"end":{"line":727,"column":23}},{"start":{"line":727,"column":27},"end":{"line":727,"column":29}}]},"5":{"loc":{"start":{"line":727,"column":12},"end":{"line":727,"column":27}},"type":"binary-expr","locations":[{"start":{"line":727,"column":12},"end":{"line":727,"column":27}},{"start":{"line":727,"column":12},"end":{"line":727,"column":27}}]},"6":{"loc":{"start":{"line":752,"column":12},"end":{"line":752,"column":29}},"type":"cond-expr","locations":[{"start":{"line":752,"column":12},"end":{"line":752,"column":23}},{"start":{"line":752,"column":27},"end":{"line":752,"column":29}}]},"7":{"loc":{"start":{"line":752,"column":12},"end":{"line":752,"column":27}},"type":"binary-expr","locations":[{"start":{"line":752,"column":12},"end":{"line":752,"column":27}},{"start":{"line":752,"column":12},"end":{"line":752,"column":27}}]},"8":{"loc":{"start":{"line":800,"column":8},"end":{"line":801,"column":null}},"type":"cond-expr","locations":[{"start":{"line":800,"column":50},"end":{"line":800,"column":null}},{"start":{"line":801,"column":9},"end":{"line":801,"column":null}}]},"9":{"loc":{"start":{"line":800,"column":8},"end":{"line":800,"column":null}},"type":"binary-expr","locations":[{"start":{"line":800,"column":8},"end":{"line":800,"column":null}},{"start":{"line":800,"column":50},"end":{"line":800,"column":null}}]}},"s":{"0":14,"1":14,"2":14,"3":14,"4":4,"5":4,"6":4,"7":0,"8":4,"9":4,"10":4,"11":4,"12":4,"13":4,"14":4,"15":4,"16":4,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":14,"33":14},"f":{"0":4,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]}} -} diff --git a/__tests__/lcov.test.ts b/__tests__/lcov.test.ts index fad95cf..60dd616 100644 --- a/__tests__/lcov.test.ts +++ b/__tests__/lcov.test.ts @@ -3,12 +3,12 @@ import * as path from 'path' import {getReport} from '../src/report/get-report' import {normalizeFilePath} from '../src/utils/path-utils' -import { LcovParser } from "../src/parsers/lcov-json/lcov-parser"; +import { LcovParser } from "../src/parsers/lcov/lcov-parser"; describe('lcov report coverage', () => { it('report from facebook/jest test results matches snapshot', async () => { - const fixturePath = path.join(__dirname, 'fixtures', 'lcov.json') + const fixturePath = path.join(__dirname, 'fixtures', 'lcov.info') const outputPath = path.join(__dirname, '__outputs__', 'lcov-report-results.md') const filePath = normalizeFilePath(path.relative(__dirname, fixturePath)) const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'}) diff --git a/package-lock.json b/package-lock.json index 62b3300..467620e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "adm-zip": "^0.5.3", "fast-glob": "^3.2.5", "got": "^11.8.2", + "lcov-parse": "^1.0.0", "picomatch": "^2.2.2", "xml2js": "^0.5.0" }, @@ -25,6 +26,7 @@ "@types/adm-zip": "^0.5.0", "@types/github-slugger": "^1.3.0", "@types/jest": "^28.1.7", + "@types/lcov-parse": "^1.0.2", "@types/node": "^18.7.7", "@types/picomatch": "^2.2.1", "@types/xml2js": "^0.4.8", @@ -1790,6 +1792,12 @@ "@types/node": "*" } }, + "node_modules/@types/lcov-parse": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/lcov-parse/-/lcov-parse-1.0.2.tgz", + "integrity": "sha512-tdoxiYm04XdDEdR7UMwkWj78UAVo9U2IOcxI6tmX2/s9TK/ue/9T8gbpS/07yeWyVkVO0UumFQ5EUIBQbVejzQ==", + "dev": true + }, "node_modules/@types/node": { "version": "18.17.17", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", @@ -5807,6 +5815,14 @@ "language-subtag-registry": "~0.3.2" } }, + "node_modules/lcov-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==", + "bin": { + "lcov-parse": "bin/cli.js" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", diff --git a/package.json b/package.json index f98145b..72af0e7 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "adm-zip": "^0.5.3", "fast-glob": "^3.2.5", "got": "^11.8.2", + "lcov-parse": "^1.0.0", "picomatch": "^2.2.2", "xml2js": "^0.5.0" }, @@ -46,6 +47,7 @@ "@types/adm-zip": "^0.5.0", "@types/github-slugger": "^1.3.0", "@types/jest": "^28.1.7", + "@types/lcov-parse": "^1.0.2", "@types/node": "^18.7.7", "@types/picomatch": "^2.2.1", "@types/xml2js": "^0.4.8", diff --git a/src/main.ts b/src/main.ts index 48e7d14..c718d30 100644 --- a/src/main.ts +++ b/src/main.ts @@ -20,7 +20,7 @@ import {SwiftXunitParser} from './parsers/swift-xunit/swift-xunit-parser' import {normalizeDirPath, normalizeFilePath} from './utils/path-utils' import {getCheckRunContext} from './utils/github-utils' import {Icon} from './utils/markdown-utils' -import {LcovParser} from './parsers/lcov-json/lcov-parser' +import {LcovParser} from './parsers/lcov/lcov-parser' async function main(): Promise { try { diff --git a/src/parsers/lcov-json/lcov-parser.ts b/src/parsers/lcov-json/lcov-parser.ts deleted file mode 100644 index b92b9a4..0000000 --- a/src/parsers/lcov-json/lcov-parser.ts +++ /dev/null @@ -1,65 +0,0 @@ -import {ParseOptions, TestParser} from '../../test-parser' - -import {TestCaseResult, TestGroupResult, TestRunResult, TestSuiteResult} from '../../test-results' -import {CovParsedStat, CovStats, LcovReport} from './lcov-types' - -export class LcovParser implements TestParser { - constructor(readonly options: ParseOptions) {} - async parse(path: string, content: string): Promise { - const report = this.parseFile(path, content) - return this.getTestRunResult(path, report) - } - - private parseFile(path: string, content: string): LcovReport { - try { - return JSON.parse(content) as LcovReport - } catch (e) { - throw new Error(`Invalid JSON at ${path}\n\n${e}`) - } - } - private async getTestRunResult(path: string, report: LcovReport): Promise { - const suites: TestSuiteResult[] = [] - - for (const key of Object.keys(report)) { - const s: CovParsedStat = this.getParsedStat(report[key].s) - const f: CovParsedStat = this.getParsedStat(report[key].f) - const b: CovParsedStat = this.getParsedStat(report[key].b) - - const statementCaseResult: TestCaseResult = { - name: 'statement', - time: 0, - result: s.percentage >= 80 ? 'success' : 'failed' - } - const fonctionCaseResult: TestCaseResult = { - name: 'fonction', - time: 0, - result: f.percentage >= 80 ? 'success' : 'failed' - } - const brancheCaseResult: TestCaseResult = { - name: 'branche', - time: 0, - result: b.percentage >= 80 ? 'success' : 'failed' - } - - const testCases: TestCaseResult[] = [statementCaseResult, fonctionCaseResult, brancheCaseResult] - const goups: TestGroupResult[] = [new TestGroupResult(key, testCases)] - const suite: TestSuiteResult = new TestSuiteResult(key, goups) - - suites.push(suite) - console.log({key, s, f, b}) - } - - return new TestRunResult(path, suites) - } - - private getParsedStat(stat: CovStats): CovParsedStat { - const max = Object.keys(stat).length - const nonCovered = this.zeroLength(stat) - const percentage = ((max - nonCovered) / max) * 100 - - return {max, nonCovered, percentage} - } - private zeroLength(report: CovStats): number { - return Object.keys(report).filter(key => report[key] === 0).length - } -} diff --git a/src/parsers/lcov/lcov-parser.ts b/src/parsers/lcov/lcov-parser.ts new file mode 100644 index 0000000..f016a7f --- /dev/null +++ b/src/parsers/lcov/lcov-parser.ts @@ -0,0 +1,62 @@ +import {ParseOptions, TestParser} from '../../test-parser' + +import {TestCaseResult, TestGroupResult, TestRunResult, TestSuiteResult} from '../../test-results' +import {parseProm} from './lcov-utils' +import {LcovBranch, LcovFile, LcovFunc, LcovLine, LcovPart} from 'lcov-parse' + +export class LcovParser implements TestParser { + constructor(readonly options: ParseOptions) {} + async parse(path: string, content: string): Promise { + const report = await this.parseFile(path, content) + return this.getTestRunResult(path, report) + } + + private parseFile(path: string, content: string): Promise { + try { + + return parseProm(content) + //return JSON.parse(content) as LcovReport + } catch (e) { + throw new Error(`Invalid JSON at ${path}\n\n${e}`) + } + } + private async getTestRunResult(path: string, report: LcovFile[]): Promise { + const suites: TestSuiteResult[] = [] + + for (let reportElement of report) { + const fileName = reportElement.file + + const statementCaseResult: TestCaseResult = { + name: `lines ${this.getPartInfo(reportElement.lines)}`, + time: 0, + result: this.getPercentage(reportElement.lines) >= 80 ? 'success' : 'failed' + } + const fonctionCaseResult: TestCaseResult = { + name: `functions ${this.getPartInfo(reportElement.functions)}`, + time: 0, + result: this.getPercentage(reportElement.functions) >= 80 ? 'success' : 'failed' + } + const brancheCaseResult: TestCaseResult = { + name: `branches ${this.getPartInfo(reportElement.branches)}`, + time: 0, + result: this.getPercentage(reportElement.branches) >= 80 ? 'success' : 'failed' + } + + + const testCases: TestCaseResult[] = [statementCaseResult, fonctionCaseResult, brancheCaseResult] + const groups: TestGroupResult[] = [new TestGroupResult(fileName, testCases)] + const suite: TestSuiteResult = new TestSuiteResult(fileName, groups) + + suites.push(suite) + } + return new TestRunResult(path, suites) + } + + private getPercentage(stat: LcovPart): number { + return stat ? stat.hit/ stat.found * 100 : 100; + } + private getPartInfo(stat: LcovPart): string { + return `${this.getPercentage(stat)}% (${stat.hit}/${stat.found})`; + } + +} diff --git a/src/parsers/lcov-json/lcov-types.ts b/src/parsers/lcov/lcov-types.ts similarity index 100% rename from src/parsers/lcov-json/lcov-types.ts rename to src/parsers/lcov/lcov-types.ts diff --git a/src/parsers/lcov/lcov-utils.ts b/src/parsers/lcov/lcov-utils.ts new file mode 100644 index 0000000..959eee0 --- /dev/null +++ b/src/parsers/lcov/lcov-utils.ts @@ -0,0 +1,14 @@ +import parse, {LcovFile} from 'lcov-parse' + +const parseProm = (pathOrStr: string): Promise => { + return new Promise((resolve, reject) => { + parse(pathOrStr, (err, data) => { + if (err) { + reject(err); + } + resolve(data ?? []); + }); + }); +}; + +export {parseProm}