From 47f21582b88aebc7f05fde48cc32ef1af8a6e671 Mon Sep 17 00:00:00 2001 From: gconsidine Date: Fri, 4 Aug 2017 16:34:18 -0400 Subject: [PATCH 1/3] Add pattern matching for atypical chars --- .../src/job-results/parse-stdout.service.js | 46 +++++++------------ 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/awx/ui/client/src/job-results/parse-stdout.service.js b/awx/ui/client/src/job-results/parse-stdout.service.js index 35c15cb000..f900e29fda 100644 --- a/awx/ui/client/src/job-results/parse-stdout.service.js +++ b/awx/ui/client/src/job-results/parse-stdout.service.js @@ -9,7 +9,6 @@ export default ['$log', 'moment', 'i18n', function($log, moment, i18n){ // parses stdout string from api and formats various codes to the // correct dom structure prettify: function(line, unstyled){ - line = line .replace(/&/g, "&") .replace(/'); - line = line.replace(/\[0;30m/g, ''); - line = line.replace(/\[1;30m/g, ''); - line = line.replace(/\[1;31m/g, ''); - line = line.replace(/\[0;31m/g, ''); - line = line.replace(/\[1;31m/g, ''); - line = line.replace(/\[0;31m/g, ''); - line = line.replace(/\[0;32m/g, ''); - line = line.replace(/\[0;32m=/g, ''); - line = line.replace(/\[0;32m1/g, ''); - line = line.replace(/\[0;33m/g, ''); - line = line.replace(/\[0;34m/g, ''); - line = line.replace(/\[0;35m/g, ''); - line = line.replace(/\[1;35m/g, ''); - line = line.replace(/\[0;36m/g, ''); + /* jshint ignore:start */ + line = line.replace(/\[1;im/g, ''); + line = line.replace(/\[0;30m/g, ''); + line = line.replace(/\[1;30m/g, ''); + line = line.replace(/\[[0,1];31m/g, ''); + line = line.replace(/\[0;32m(=|)/g, ''); + line = line.replace(/\[0;32m1/g, ''); + line = line.replace(/\[0;33m/g, ''); + line = line.replace(/\[0;34m/g, ''); + line = line.replace(/\[[0,1];35m/g, ''); + line = line.replace(/\[0;36m/g, ''); line = line.replace(/()\s/g, '$1'); //end span - line = line.replace(/\[0m/g, ''); + line = line.replace(/\[0m/g, ''); + /* jshint ignore:end */ } else { // For the host event modal in the standard out tab, // the styling isn't necessary line = line.replace(/u001b/g, ''); // ansi classes - line = line.replace(/\[0;30m/g, ''); - line = line.replace(/\[1;30m/g, ''); - line = line.replace(/\[1;31m/g, ''); - line = line.replace(/\[0;31m/g, ''); - line = line.replace(/\[0;32m/g, ''); - line = line.replace(/\[0;32m=/g, ''); - line = line.replace(/\[0;32m1/g, ''); - line = line.replace(/\[0;33m/g, ''); - line = line.replace(/\[0;34m/g, ''); - line = line.replace(/\[0;35m/g, ''); - line = line.replace(/\[0;36m/g, ''); + /* jshint ignore:start */ + line = line.replace(/\[[0,1];3[0-9]m(1|=|)/g, ''); line = line.replace(/()\s/g, '$1'); //end span - line = line.replace(/\[0m/g, ''); + line = line.replace(/\[0m/g, ''); + /* jshint ignore:end */ } return line; From 3fb6ddd9499ce50a8e30358703bb2a9c59061b18 Mon Sep 17 00:00:00 2001 From: gconsidine Date: Fri, 4 Aug 2017 16:38:46 -0400 Subject: [PATCH 2/3] Fix pattern matching to still apply when unexpected chars do not exist --- .../src/job-results/parse-stdout.service.js | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/awx/ui/client/src/job-results/parse-stdout.service.js b/awx/ui/client/src/job-results/parse-stdout.service.js index f900e29fda..a60ba2e5b1 100644 --- a/awx/ui/client/src/job-results/parse-stdout.service.js +++ b/awx/ui/client/src/job-results/parse-stdout.service.js @@ -27,20 +27,20 @@ export default ['$log', 'moment', 'i18n', function($log, moment, i18n){ // ansi classes /* jshint ignore:start */ - line = line.replace(/\[1;im/g, ''); - line = line.replace(/\[0;30m/g, ''); - line = line.replace(/\[1;30m/g, ''); - line = line.replace(/\[[0,1];31m/g, ''); - line = line.replace(/\[0;32m(=|)/g, ''); - line = line.replace(/\[0;32m1/g, ''); - line = line.replace(/\[0;33m/g, ''); - line = line.replace(/\[0;34m/g, ''); - line = line.replace(/\[[0,1];35m/g, ''); - line = line.replace(/\[0;36m/g, ''); + line = line.replace(/(|)\[1;im/g, ''); + line = line.replace(/(|)\[0;30m/g, ''); + line = line.replace(/(|)\[1;30m/g, ''); + line = line.replace(/(|)\[[0,1];31m/g, ''); + line = line.replace(/(|)\[0;32m(=|)/g, ''); + line = line.replace(/(|)\[0;32m1/g, ''); + line = line.replace(/(|)\[0;33m/g, ''); + line = line.replace(/(|)\[0;34m/g, ''); + line = line.replace(/(|)\[[0,1];35m/g, ''); + line = line.replace(/(|)\[0;36m/g, ''); line = line.replace(/()\s/g, '$1'); //end span - line = line.replace(/\[0m/g, ''); + line = line.replace(/(|)\[0m/g, ''); /* jshint ignore:end */ } else { // For the host event modal in the standard out tab, @@ -49,11 +49,11 @@ export default ['$log', 'moment', 'i18n', function($log, moment, i18n){ // ansi classes /* jshint ignore:start */ - line = line.replace(/\[[0,1];3[0-9]m(1|=|)/g, ''); + line = line.replace(/(|)\[[0,1];3[0-9]m(1|=|)/g, ''); line = line.replace(/()\s/g, '$1'); //end span - line = line.replace(/\[0m/g, ''); + line = line.replace(/(|)\[0m/g, ''); /* jshint ignore:end */ } From 2fda94e8779eec431d7cdbe4369d9da3596e555d Mon Sep 17 00:00:00 2001 From: gconsidine Date: Fri, 4 Aug 2017 17:17:40 -0400 Subject: [PATCH 3/3] Remove unwanted chars from test comparison string --- awx/ui/tests/spec/job-results/parse-stdout.service-test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js index 80268a16d9..86441c1ffa 100644 --- a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js +++ b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js @@ -21,14 +21,14 @@ describe('parseStdoutService', () => { describe('prettify()', () => { it('returns lines of stdout with styling classes', () => { let line = "[0;32mok: [host-00]", - styledLine = 'ok: [host-00]'; + styledLine = 'ok: [host-00]'; expect(parseStdoutService.prettify(line)).toBe(styledLine); }); it('can return lines of stdout without styling classes', () => { - let line = "[0;32mok: [host-00]", + let line = "[0;32mok: [host-00][0m", unstyled = "unstyled", - unstyledLine = 'ok: [host-00]'; + unstyledLine = 'ok: [host-00]'; expect(parseStdoutService.prettify(line, unstyled)).toBe(unstyledLine); });