From d929cabe19eba76b7dd11a83b05c219454d04c57 Mon Sep 17 00:00:00 2001 From: Jacob Lee Date: Mon, 1 Jul 2024 01:09:26 +0900 Subject: [PATCH 1/3] recognize quotes when parsing urls --- .../details/taskInstance/Logs/utils.test.tsx | 21 ++++++++++++++++--- .../js/dag/details/taskInstance/Logs/utils.ts | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx index aa835985d752d..eb04f14c7e6ae 100644 --- a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx +++ b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx @@ -38,6 +38,7 @@ const mockTaskLog = ` [2022-06-04 00:00:01,921] {dagbag.py:507} INFO - Filling up the DagBag from /files/dags/test_ui_grid.py [2022-06-04 00:00:01,964] {task_command.py:377} INFO - Running on host 5d28cfda3219 [2022-06-04 00:00:02,010] {taskinstance.py:1548} WARNING - Exporting env vars: AIRFLOW_CTX_DAG_OWNER=*** AIRFLOW_CTX_DAG_ID=test_ui_grid +[2024-07-01 00:00:02,010] {taskinstance.py:1548} INFO - Url parsing test => "https://apple.com", "https://google.com" `; describe("Test Logs Utils.", () => { @@ -64,7 +65,7 @@ describe("Test Logs Utils.", () => { test.each([ { logLevelFilters: [LogLevel.INFO], - expectedNumberOfLines: 11, + expectedNumberOfLines: 12, expectedNumberOfFileSources: 4, }, { @@ -111,7 +112,7 @@ describe("Test Logs Utils.", () => { "taskinstance.py", ]); const lines = parsedLogs!.split("\n"); - expect(lines).toHaveLength(7); + expect(lines).toHaveLength(8); lines.forEach((line) => expect(line).toContain("taskinstance.py")); }); @@ -131,7 +132,21 @@ describe("Test Logs Utils.", () => { "taskinstance.py", ]); const lines = parsedLogs!.split("\n"); - expect(lines).toHaveLength(7); + expect(lines).toHaveLength(8); lines.forEach((line) => expect(line).toMatch(/INFO|WARNING/)); }); + + test("parseLogs function with quoted urls", () => { + const { parsedLogs, fileSources } = parseLogs( + mockTaskLog, + null, + [LogLevel.INFO, LogLevel.WARNING], + ["taskinstance.py"], + [] + ); + + const lines = parsedLogs!.split("\n"); + expect(lines[lines.length-1]).toContain("https://apple.com") + expect(lines[lines.length-1]).toContain("https://google.com") + }) }); diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts index 0de5676916bbb..49e922a91d051 100644 --- a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts +++ b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts @@ -74,7 +74,7 @@ export const parseLogs = ( const ansiUp = new AnsiUp(); ansiUp.url_allowlist = {}; - const urlRegex = /((https?:\/\/|http:\/\/)[^\s]+)/g; + const urlRegex = /((https?:\/\/|http:\/\/)(?:(?!'|")[^\s])+)/g; // Detect log groups which can be collapsed // Either in Github like format '::group::' to '::endgroup::' // see https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#grouping-log-lines From 62164a0d46eb5b900dd77aea3af9e0eca62eca79 Mon Sep 17 00:00:00 2001 From: Jacob Lee Date: Mon, 1 Jul 2024 08:14:56 +0900 Subject: [PATCH 2/3] fixing pre-commit hook --- .../www/static/js/dag/details/taskInstance/Logs/utils.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx index eb04f14c7e6ae..40cae4191897c 100644 --- a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx +++ b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx @@ -38,7 +38,7 @@ const mockTaskLog = ` [2022-06-04 00:00:01,921] {dagbag.py:507} INFO - Filling up the DagBag from /files/dags/test_ui_grid.py [2022-06-04 00:00:01,964] {task_command.py:377} INFO - Running on host 5d28cfda3219 [2022-06-04 00:00:02,010] {taskinstance.py:1548} WARNING - Exporting env vars: AIRFLOW_CTX_DAG_OWNER=*** AIRFLOW_CTX_DAG_ID=test_ui_grid -[2024-07-01 00:00:02,010] {taskinstance.py:1548} INFO - Url parsing test => "https://apple.com", "https://google.com" +[2024-07-01 00:00:02,010] {taskinstance.py:1548} INFO - Url parsing test => "https://apple.com", "https://google.com" `; describe("Test Logs Utils.", () => { From db515a48663c53d9760377104691ab21d81bf423 Mon Sep 17 00:00:00 2001 From: Jacob Lee Date: Tue, 2 Jul 2024 06:26:02 +0900 Subject: [PATCH 3/3] fixing pre-commit hook --- .../js/dag/details/taskInstance/Logs/utils.test.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx index 40cae4191897c..bcebb22ec9a05 100644 --- a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx +++ b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx @@ -137,7 +137,7 @@ describe("Test Logs Utils.", () => { }); test("parseLogs function with quoted urls", () => { - const { parsedLogs, fileSources } = parseLogs( + const { parsedLogs } = parseLogs( mockTaskLog, null, [LogLevel.INFO, LogLevel.WARNING], @@ -146,7 +146,11 @@ describe("Test Logs Utils.", () => { ); const lines = parsedLogs!.split("\n"); - expect(lines[lines.length-1]).toContain("https://apple.com") - expect(lines[lines.length-1]).toContain("https://google.com") - }) + expect(lines[lines.length - 1]).toContain( + 'https://apple.com' + ); + expect(lines[lines.length - 1]).toContain( + 'https://google.com' + ); + }); });