diff --git a/dist/index.js b/dist/index.js index 71ccb38..12cb605 100644 --- a/dist/index.js +++ b/dist/index.js @@ -10024,20 +10024,20 @@ const showAnnotations = async (compareFileData) => { ); fileLinesWithChangedFiles.forEach(({ file, lines }) => { - const linesToDisplay = lines.map((line) => - Array.isArray(line) ? line.join("-") : line - ); - - const linesWord = linesToDisplay.length === 1 ? "line is" : "lines are"; - - const formattedLines = linesToDisplay.join(", "); - - const message = `file=${file}::${formattedLines} ${linesWord} not covered with tests`; - - // NOTE: consider an option to show lines directly by attaching 'line' param - // Need to fix the issue where we consider 'empty line' as covered line - // Empty lines should not interapt uncovered interval - core.info(`::${showAnnotationsInput} ${message}`); + lines.forEach((line) => { + const message = () => { + if (Array.isArray(line)) { + return `file=${file},line=${line[0]},endLine=${ + line[line.length - 1] + }::${line.join("-")} lines are not covered with tests`; + } + return `file=${file},line=${line}::${line} line is not covered with tests`; + }; + // NOTE: consider an option to show lines directly by attaching 'line' param + // Need to fix the issue where we consider 'empty line' as covered line + // Empty lines should not interapt uncovered interval + core.info(`::${showAnnotationsInput} ${message()}`); + }); }); } }; @@ -10572,7 +10572,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.1","description":"P /***/ ((module) => { "use strict"; -module.exports = require("assert");; +module.exports = require("assert"); /***/ }), @@ -10580,7 +10580,7 @@ module.exports = require("assert");; /***/ ((module) => { "use strict"; -module.exports = require("events");; +module.exports = require("events"); /***/ }), @@ -10588,7 +10588,7 @@ module.exports = require("events");; /***/ ((module) => { "use strict"; -module.exports = require("fs");; +module.exports = require("fs"); /***/ }), @@ -10596,7 +10596,7 @@ module.exports = require("fs");; /***/ ((module) => { "use strict"; -module.exports = require("http");; +module.exports = require("http"); /***/ }), @@ -10604,7 +10604,7 @@ module.exports = require("http");; /***/ ((module) => { "use strict"; -module.exports = require("https");; +module.exports = require("https"); /***/ }), @@ -10612,7 +10612,7 @@ module.exports = require("https");; /***/ ((module) => { "use strict"; -module.exports = require("net");; +module.exports = require("net"); /***/ }), @@ -10620,7 +10620,7 @@ module.exports = require("net");; /***/ ((module) => { "use strict"; -module.exports = require("os");; +module.exports = require("os"); /***/ }), @@ -10628,7 +10628,7 @@ module.exports = require("os");; /***/ ((module) => { "use strict"; -module.exports = require("path");; +module.exports = require("path"); /***/ }), @@ -10636,7 +10636,7 @@ module.exports = require("path");; /***/ ((module) => { "use strict"; -module.exports = require("stream");; +module.exports = require("stream"); /***/ }), @@ -10644,7 +10644,7 @@ module.exports = require("stream");; /***/ ((module) => { "use strict"; -module.exports = require("tls");; +module.exports = require("tls"); /***/ }), @@ -10652,7 +10652,7 @@ module.exports = require("tls");; /***/ ((module) => { "use strict"; -module.exports = require("tty");; +module.exports = require("tty"); /***/ }), @@ -10660,7 +10660,7 @@ module.exports = require("tty");; /***/ ((module) => { "use strict"; -module.exports = require("url");; +module.exports = require("url"); /***/ }), @@ -10668,7 +10668,7 @@ module.exports = require("url");; /***/ ((module) => { "use strict"; -module.exports = require("util");; +module.exports = require("util"); /***/ }), @@ -10676,7 +10676,7 @@ module.exports = require("util");; /***/ ((module) => { "use strict"; -module.exports = require("zlib");; +module.exports = require("zlib"); /***/ }) @@ -10715,7 +10715,9 @@ module.exports = require("zlib");; /************************************************************************/ /******/ /* webpack/runtime/compat */ /******/ -/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/";/************************************************************************/ +/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; +/******/ +/************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. (() => { diff --git a/src/features/showAnnotations.js b/src/features/showAnnotations.js index ae7051f..f27fe2a 100644 --- a/src/features/showAnnotations.js +++ b/src/features/showAnnotations.js @@ -22,20 +22,20 @@ const showAnnotations = async (compareFileData) => { ); fileLinesWithChangedFiles.forEach(({ file, lines }) => { - const linesToDisplay = lines.map((line) => - Array.isArray(line) ? line.join("-") : line - ); - - const linesWord = linesToDisplay.length === 1 ? "line is" : "lines are"; - - const formattedLines = linesToDisplay.join(", "); - - const message = `file=${file}::${formattedLines} ${linesWord} not covered with tests`; - - // NOTE: consider an option to show lines directly by attaching 'line' param - // Need to fix the issue where we consider 'empty line' as covered line - // Empty lines should not interapt uncovered interval - core.info(`::${showAnnotationsInput} ${message}`); + lines.forEach((line) => { + const message = () => { + if (Array.isArray(line)) { + return `file=${file},line=${line[0]},endLine=${ + line[line.length - 1] + }::${line.join("-")} lines are not covered with tests`; + } + return `file=${file},line=${line}::${line} line is not covered with tests`; + }; + // NOTE: consider an option to show lines directly by attaching 'line' param + // Need to fix the issue where we consider 'empty line' as covered line + // Empty lines should not interapt uncovered interval + core.info(`::${showAnnotationsInput} ${message()}`); + }); }); } }; diff --git a/tests/features/showAnnotations.test.js b/tests/features/showAnnotations.test.js index 6172557..3314133 100644 --- a/tests/features/showAnnotations.test.js +++ b/tests/features/showAnnotations.test.js @@ -79,7 +79,7 @@ describe("features/showAnnotations", () => { assert.isTrue(mergeFileLinesWithChangedFiles.calledOnce); assert.isTrue(info.calledTwice); assert.deepEqual(info.secondCall.args, [ - `::warning file=${filename}::${line} line is not covered with tests` + `::warning file=${filename},line=${line}::${line} line is not covered with tests` ]); }); @@ -111,9 +111,9 @@ describe("features/showAnnotations", () => { assert.isTrue(getChangedFiles.calledOnce); assert.isTrue(uncoveredFileLinesByFileNames.calledOnce); assert.isTrue(mergeFileLinesWithChangedFiles.calledOnce); - assert.isTrue(info.calledTwice); + assert.equal(info.callCount, 4); assert.deepEqual(info.secondCall.args, [ - `::warning file=${filename}::1-4, 8, 45-50 lines are not covered with tests` + `::warning file=${filename},line=1,endLine=4::1-4 lines are not covered with tests` ]); }); });