From 450ee3547f2f6a3b054eefd65b03a7f0b0c9c83e Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 01:43:49 +0200 Subject: Add larger timeout for file --- test/loggers/file.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/loggers/file.js b/test/loggers/file.js index 5e73d82..98a7587 100644 --- a/test/loggers/file.js +++ b/test/loggers/file.js @@ -103,4 +103,4 @@ setTimeout(() => { }); }); }); -}, 10); +}, 100); -- cgit From a326e75a67aef6a2f7b4b0127400b03b113700d1 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 12:56:00 +0200 Subject: Address sonarqube issues with tests --- test/cologne.js | 40 ++++++++++++++++++++-------------------- test/loggers/console.js | 24 ++++++++++++------------ 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/test/cologne.js b/test/cologne.js index 3f06763..1fce740 100644 --- a/test/cologne.js +++ b/test/cologne.js @@ -23,7 +23,7 @@ const createDummyLogger = function () { const levelChecker = function (level) { - return (count, log) => (log._level === level ? ++count : count); + return (count, log) => (log._level === level ? count + 1 : count); }; @@ -42,74 +42,74 @@ const co = new Cologne({ ] }); -const logs = ['example1', null, undefined, 1, { example: true }]; +const exampleLogs = ['example1', null, undefined, 1, { example: true }]; /** * TEST: #log() */ -co.log(...logs); +co.log(...exampleLogs); // Calculate values -const valueCheck = dummyLoggerA.values.reduce((count, log) => (typeof log._cologneLog === 'string' ? ++count : count), 0); +const valueCheck = dummyLoggerA.values.reduce((count, log) => (typeof log._cologneLog === 'string' ? count + 1 : count), 0); let levelCheck = dummyLoggerA.values.reduce(levelChecker(6), 0); // Now check the values -Tap.equal(dummyLoggerA.values.length, logs.length, +Tap.equal(dummyLoggerA.values.length, exampleLogs.length, '#log() should send every argument to the loggers'); Tap.similar(dummyLoggerA.values, dummyLoggerB.values, '#log() should send the same arguments to all the loggers'); -Tap.equal(valueCheck, logs.length, +Tap.equal(valueCheck, exampleLogs.length, '#log() should send all objects in cologne log format'); -Tap.equal(levelCheck, logs.length, +Tap.equal(levelCheck, exampleLogs.length, '#log() should default to level 6'); /** * TEST: #debug() */ -co.debug(...logs); +co.debug(...exampleLogs); levelCheck = dummyLoggerA.values.reduce(levelChecker(7), 0); -Tap.equal(levelCheck, logs.length, +Tap.equal(levelCheck, exampleLogs.length, '#debug() should set to level 7'); /** * TEST: #info() */ -co.info(...logs); +co.info(...exampleLogs); levelCheck = dummyLoggerA.values.reduce(levelChecker(6), 0); -Tap.equal(levelCheck, logs.length, +Tap.equal(levelCheck, exampleLogs.length, '#info() should set to level 6'); /** * TEST: #notice() */ -co.notice(...logs); +co.notice(...exampleLogs); levelCheck = dummyLoggerA.values.reduce(levelChecker(5), 0); -Tap.equal(levelCheck, logs.length, +Tap.equal(levelCheck, exampleLogs.length, '#notice() should set to level 5'); /** * TEST: #warn() */ -co.warn(...logs); +co.warn(...exampleLogs); levelCheck = dummyLoggerA.values.reduce(levelChecker(4), 0); -Tap.equal(levelCheck, logs.length, +Tap.equal(levelCheck, exampleLogs.length, '#warn() should set to level 4'); /** * TEST: #error() */ -co.error(...logs); +co.error(...exampleLogs); levelCheck = dummyLoggerA.values.reduce(levelChecker(3), 0); -Tap.equal(levelCheck, logs.length, +Tap.equal(levelCheck, exampleLogs.length, '#error() should set to level 3'); /** @@ -156,7 +156,7 @@ co.removeLogger(dummyLoggerC); Tap.equal(co.loggers.length, 2, '#removeLogger() should do nothing if it can\'t find a logger'); -co.log(...logs); +co.log(...exampleLogs); co.removeLogger(dummyLoggerB); co.log(1); @@ -171,7 +171,7 @@ Tap.notEqual(dummyLoggerB.values.length, dummyLoggerA.values.length, */ co.addLogger(dummyLoggerC); -co.log(...logs); +co.log(...exampleLogs); -Tap.equal(dummyLoggerC.values.length, logs.length, +Tap.equal(dummyLoggerC.values.length, exampleLogs.length, '#addLogger() should add loggers after instance is live'); diff --git a/test/loggers/console.js b/test/loggers/console.js index 3358837..87dbc23 100644 --- a/test/loggers/console.js +++ b/test/loggers/console.js @@ -62,7 +62,7 @@ const logObjectB = { message: 'MessageTwo' }; -const logs = [logObjectA, logObjectB]; +const exampleLogs = [logObjectA, logObjectB]; const regularLogger = new ConsoleLogger({}); const overrideLogger = new ConsoleLogger({ @@ -86,38 +86,38 @@ Tap.equal(regularLogger.console, global.console, logObjectA._level = 5; logObjectB._level = 6; -overrideLogger.log(...logs); // should go to info +overrideLogger.log(...exampleLogs); // should go to info logObjectA._level = 4; logObjectB._level = 4; -overrideLogger.log(...logs); // should go to warn +overrideLogger.log(...exampleLogs); // should go to warn logObjectA._level = 1; logObjectB._level = 3; -overrideLogger.log(...logs); // should go to error +overrideLogger.log(...exampleLogs); // should go to error logObjectA._level = 0; logObjectB._level = 2; -overrideLogger.log(...logs); // should go to error +overrideLogger.log(...exampleLogs); // should go to error logObjectA._level = 7; logObjectB._level = 8; -overrideLogger.log(...logs); // should go to log +overrideLogger.log(...exampleLogs); // should go to log -Tap.equal(dummyConsole.values.log, logs.length, +Tap.equal(dummyConsole.values.log, exampleLogs.length, 'It should send debug messages to console\'s #log'); -Tap.equal(dummyConsole.values.info, logs.length, +Tap.equal(dummyConsole.values.info, exampleLogs.length, 'It should send info and notice messages to console\'s #info'); -Tap.equal(dummyConsole.values.warn, logs.length, +Tap.equal(dummyConsole.values.warn, exampleLogs.length, 'It should send warn messages to console\'s #warn'); -Tap.equal(dummyConsole.values.error, logs.length * 2, +Tap.equal(dummyConsole.values.error, exampleLogs.length * 2, 'It should send error messages to console\'s #error'); /** * TEST: #log() - with formatter */ -formattedLogger.log(...logs); // should go to log +formattedLogger.log(...exampleLogs); // should go to log -Tap.similar(dummyFormatter.values, logs, +Tap.similar(dummyFormatter.values, exampleLogs, 'If available, it should send the objects to the formatter'); -- cgit From 1db54b9b6a46877a7c5dd201dd124b609cd5fcf9 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 13:05:42 +0200 Subject: Move ansi codes to an object --- lib/utilities.js | 93 +++++++++++++++++++------------------------------------- 1 file changed, 32 insertions(+), 61 deletions(-) diff --git a/lib/utilities.js b/lib/utilities.js index 1c930af..8bb226b 100644 --- a/lib/utilities.js +++ b/lib/utilities.js @@ -2,6 +2,37 @@ const internals = { kCircularString: '[Circular]', + kAnsiCodes: { + bold: '[1m', + italics: '[3m', + underline: '[4m', + inverse: '[7m', + strikethrough: '[9m', + bold_off: '[22m', + italics_off: '[23m', + underline_off: '[24m', + inverse_off: '[27m', + strikethrough_off: '[29m', + black: '[30m', + red: '[31m', + green: '[32m', + yellow: '[33m', + blue: '[34m', + magenta: '[35m', + cyan: '[36m', + white: '[37m', + default: '[39m', + black_bg: '[40m', + red_bg: '[41m', + green_bg: '[42m', + yellow_bg: '[43m', + blue_bg: '[44m', + magenta_bg: '[45m', + cyan_bg: '[46m', + white_bg: '[47m', + default_bg: '[49m', + reset: '[0m' + }, // Get High Res time depending on platform. Currently only supporting node. @@ -75,67 +106,7 @@ module.exports = { */ getAnsiCode(ansiString) { - switch (ansiString) { - case 'bold': - return '[1m'; - case 'italics': - return '[3m'; - case 'underline': - return '[4m'; - case 'inverse': - return '[7m'; - case 'strikethrough': - return '[9m'; - case 'bold_off': - return '[22m'; - case 'italics_off': - return '[23m'; - case 'underline_off': - return '[24m'; - case 'inverse_off': - return '[27m'; - case 'strikethrough_off': - return '[29m'; - case 'black': - return '[30m'; - case 'red': - return '[31m'; - case 'green': - return '[32m'; - case 'yellow': - return '[33m'; - case 'blue': - return '[34m'; - case 'magenta': - return '[35m'; - case 'cyan': - return '[36m'; - case 'white': - return '[37m'; - case 'default': - return '[39m'; - case 'black_bg': - return '[40m'; - case 'red_bg': - return '[41m'; - case 'green_bg': - return '[42m'; - case 'yellow_bg': - return '[43m'; - case 'blue_bg': - return '[44m'; - case 'magenta_bg': - return '[45m'; - case 'cyan_bg': - return '[46m'; - case 'white_bg': - return '[47m'; - case 'default_bg': - return '[49m'; - case 'reset': // for informative purpouses - default: - return '[0m'; - } + return internals.kAnsiCodes[ansiString] || internals.kAnsiCodes.reset; }, /** -- cgit From 56cee367db416581068c78bdf2fe38e1c3ac8cf4 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 13:32:25 +0200 Subject: Add sonar-cloud configuration --- .gitignore | 2 ++ .gitlab-ci.yml | 20 ++++++++++++++++++++ package.json | 3 ++- sonar-project.properties | 12 ++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 sonar-project.properties diff --git a/.gitignore b/.gitignore index 3bbc2f1..c2a8529 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ ## PROJECT::SPECIFIC .nyc_output +coverage node_modules +.scannerwork diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cc95c38..9f8dbda 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,8 +1,12 @@ image: node:14 +variables: + SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache + stages: - lint - test + - quality before_script: - npm install @@ -16,3 +20,19 @@ test: stage: test script: - npm test + +quality: + image: + name: sonarsource/sonar-scanner-cli:latest + entrypoint: [""] + cache: + key: "${CI_JOB_NAME}" + paths: + - .sonar/cache + script: + - npm run coverage + - sonar-scanner + only: + - merge_requests + - master + diff --git a/package.json b/package.json index c6d4bdc..d48e098 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "scripts": { "document": "jsdoc2md lib/**/*.js > doc/README.md; tap -R markdown > doc/COVERAGE.md", "lint": "eslint .", - "test": "tap" + "test": "tap", + "coverage": "nyc report --reporter=text-lcov" }, "main": "./lib/cologne.js" } diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..08b778a --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,12 @@ +sonar.projectKey=rbdr_cologne +sonar.organization=rbdr + +# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. +sonar.sources=. + +# Encoding of the source code. Default is default system encoding +sonar.sourceEncoding=UTF-8 + +# Coverage path +sonar.javascript.lcov.reportPaths=coverage/lcov.info +sonar.coverage.exclusions='test/**/*' -- cgit From f89f9b0b99cf0042f601e387381c818207dfcc74 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 13:36:47 +0200 Subject: Give longer flush timeout --- test/loggers/file.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/loggers/file.js b/test/loggers/file.js index 98a7587..d07b5af 100644 --- a/test/loggers/file.js +++ b/test/loggers/file.js @@ -76,7 +76,7 @@ setTimeout(() => { }); }); }); -}, 10); // allow for flush +}, 100); // allow for flush /** * TEST: #log() - formatter */ -- cgit From 29378aea1784e487ce1c429d3bcf6dd2b5a065de Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 13:39:55 +0200 Subject: Add dependency to test --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9f8dbda..9679aec 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,6 +22,8 @@ test: - npm test quality: + stage: "quality" + needs: ["test"] image: name: sonarsource/sonar-scanner-cli:latest entrypoint: [""] -- cgit From 9c978f93eb12706510bdb070b4e6e9cff4036b43 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 13:41:11 +0200 Subject: Update the version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d48e098..ab2feef 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "bugs": { "url": "https://gitlab.com/rbdr/cologne/issues" }, - "version": "2.0.0", + "version": "2.0.1", "devDependencies": { "@hapi/eslint-config-hapi": "^13.0.2", "@hapi/eslint-plugin-hapi": "^4.3.6", -- cgit From e3d1591f8fd17252b4519a5047854e1985af8fa1 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 13:42:07 +0200 Subject: Update version in lock --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 7641e25..8e31432 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cologne", - "version": "2.0.0", + "version": "2.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { -- cgit From 6a4e70007b1256a8a695ad303669f91125de4351 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 13:49:42 +0200 Subject: Run lint and test on merge requests --- .gitlab-ci.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9679aec..6c94c32 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,3 +1,10 @@ +.only-default: &only-default + only: + - branches + - merge_requests + - tags + - refs + image: node:14 variables: @@ -12,11 +19,13 @@ before_script: - npm install lint: + <<: *only-default stage: lint script: - npm run lint test: + <<: *only-default stage: test script: - npm test @@ -37,4 +46,3 @@ quality: only: - merge_requests - master - -- cgit From b8778db93b9449492fa11cd3352f226d0ab76f4b Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 13:56:23 +0200 Subject: Cache the nyc_output dir --- .gitlab-ci.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6c94c32..b64361c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,12 +27,16 @@ lint: test: <<: *only-default stage: test + cache: + paths: + - .nyc_output/ script: - npm test quality: - stage: "quality" - needs: ["test"] + stage: quality + needs: + -test image: name: sonarsource/sonar-scanner-cli:latest entrypoint: [""] -- cgit From b9c7f5bfb5b4693b0644c01bd36500eb20e3f33a Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 13:58:37 +0200 Subject: Move the cache to the global scope --- .gitlab-ci.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b64361c..77acffd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,6 +18,12 @@ stages: before_script: - npm install +cache: + key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" + paths: + - node_modules/ + - .nyc_output/ + lint: <<: *only-default stage: lint @@ -27,9 +33,6 @@ lint: test: <<: *only-default stage: test - cache: - paths: - - .nyc_output/ script: - npm test -- cgit From 238047e12dc5d8af9e7c01081adf9668e212b389 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 13:59:24 +0200 Subject: Add proper spacing to test array --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 77acffd..5823158 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,7 +39,7 @@ test: quality: stage: quality needs: - -test + - test image: name: sonarsource/sonar-scanner-cli:latest entrypoint: [""] -- cgit From 827c56a92ea6a4a1701345baf4b2e32a4a45d434 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 14:21:58 +0200 Subject: Use only ref slug for cache --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5823158..40bffad 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,7 +19,7 @@ before_script: - npm install cache: - key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" + key: ${CI_COMMIT_REF_SLUG} paths: - node_modules/ - .nyc_output/ -- cgit From d959613ccea3fa9ea6c64a4b4f59c5277f6e8f4f Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 14:26:43 +0200 Subject: Remove local cache from sonarcube --- .gitlab-ci.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 40bffad..2426cc0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,6 +23,7 @@ cache: paths: - node_modules/ - .nyc_output/ + - .sonar/cache lint: <<: *only-default @@ -43,10 +44,6 @@ quality: image: name: sonarsource/sonar-scanner-cli:latest entrypoint: [""] - cache: - key: "${CI_JOB_NAME}" - paths: - - .sonar/cache script: - npm run coverage - sonar-scanner -- cgit From 7f09137eef061ba4eddb855bc6aeae3f8e9f8015 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 14:58:14 +0200 Subject: Constrain matching regex to only match 255 chars --- lib/formatters/token.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/formatters/token.js b/lib/formatters/token.js index 2ec3a17..05895fa 100644 --- a/lib/formatters/token.js +++ b/lib/formatters/token.js @@ -34,9 +34,9 @@ module.exports = class TokenFormatter { * @instance * @memberof Formatters.Token * @type RegExp - * @default /{{(.*)}}/g + * @default /{{(.{1,255}?)}}/g */ - this.replaceRule = /{{(.*?)}}/g; + this.replaceRule = /{{(.{1,255}?)}}/g; /** * Flag that specifies whether or not to use an isoDate when using -- cgit From a3486315ea2bf472f83a7f5217660c492514c4fd Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 14:59:15 +0200 Subject: Run all stages always --- .gitlab-ci.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2426cc0..fe65211 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,6 +38,7 @@ test: - npm test quality: + <<: *only-default stage: quality needs: - test @@ -47,6 +48,3 @@ quality: script: - npm run coverage - sonar-scanner - only: - - merge_requests - - master -- cgit From 2897389d4ec9c56098356e3f4ad46ebb7b4f0070 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 21 Sep 2020 15:00:03 +0200 Subject: Update CHANGELOG --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1e8999..c485e91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.0.1] - 2020-09-20 +### Added +- Sonarcloud config for code quality + +### Changed +- Limits token size to 255 to avoid regex abuse +- Changes file test time to allow flushing stream in CI + ## [2.0.0] - 2020-09-20 ### Changed - CHANGELOG format is now using `Keep a Changelog` format. -- cgit