Title: Nested CDATA section causes invalid XML message by ut_realtime_reporter · Issue #1073 · utPLSQL/utPLSQL · GitHub
Open Graph Title: Nested CDATA section causes invalid XML message by ut_realtime_reporter · Issue #1073 · utPLSQL/utPLSQL
X Title: Nested CDATA section causes invalid XML message by ut_realtime_reporter · Issue #1073 · utPLSQL/utPLSQL
Description: Describe the bug When an utPLSQL output contains a CDATA section, then the ut_realtime_reporter produces an invalid XML message. Such a message cannot be processed by consumers such as the SQL Developer extension. This is related to utPL...
Open Graph Description: Describe the bug When an utPLSQL output contains a CDATA section, then the ut_realtime_reporter produces an invalid XML message. Such a message cannot be processed by consumers such as the SQL Deve...
X Description: Describe the bug When an utPLSQL output contains a CDATA section, then the ut_realtime_reporter produces an invalid XML message. Such a message cannot be processed by consumers such as the SQL Deve...
Opengraph URL: https://github.com/utPLSQL/utPLSQL/issues/1073
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Nested CDATA section causes invalid XML message by ut_realtime_reporter","articleBody":"## Describe the bug\r\nWhen an utPLSQL output contains a CDATA section, then the `ut_realtime_reporter` produces an invalid XML message. Such a message cannot be processed by consumers such as the SQL Developer extension. \r\n\r\nThis is related to utPLSQL/utPLSQL-SQLDeveloper#107.\r\n\r\n## Provide version info\r\n```\r\n19.0.0.0.0\r\n19.0.0\r\n\r\n\r\nPL/SQL procedure successfully completed.\r\n\r\n\r\nUT_VERSION \r\n------------------------------------------------------------\r\nv3.1.11.3380-develop\r\n\r\n\r\nBANNER BANNER_FULL BANNER_LEGACY CON_ID\r\n-------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------\r\nOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 0\r\n Version 19.7.0.0.0 \r\n\r\n\r\n\r\nPARAMETER VALUE \r\n------------------------------ ----------------------------------------------------------------\r\nNLS_LANGUAGE AMERICAN \r\nNLS_TERRITORY SWITZERLAND \r\nNLS_CURRENCY SFr. \r\nNLS_ISO_CURRENCY SWITZERLAND \r\nNLS_NUMERIC_CHARACTERS ., \r\nNLS_CALENDAR GREGORIAN \r\nNLS_DATE_FORMAT DD.MM.YYYY HH24:MI:SS \r\nNLS_DATE_LANGUAGE AMERICAN \r\nNLS_SORT BINARY \r\nNLS_TIME_FORMAT HH24:MI:SSXFF \r\nNLS_TIMESTAMP_FORMAT DD.MM.RR HH24:MI:SSXFF \r\n\r\nPARAMETER VALUE \r\n------------------------------ ----------------------------------------------------------------\r\nNLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR \r\nNLS_TIMESTAMP_TZ_FORMAT DD.MM.RR HH24:MI:SSXFF TZR \r\nNLS_DUAL_CURRENCY SF \r\nNLS_COMP BINARY \r\nNLS_LENGTH_SEMANTICS BYTE \r\nNLS_NCHAR_CONV_EXCP FALSE \r\n\r\n17 rows selected. \r\n\r\n\r\nPORT_STRING \r\n------------------------------------------------------------\r\nx86_64/Linux 2.4.xx\r\n```\r\n\r\n## To Reproduce\r\n\r\n### 1. Create Test Package\r\n\r\n```sql\r\nCREATE OR REPLACE PACKAGE junit_utplsql_test2_pkg is\r\n --%suite(JUnit testing)\r\n --%suitepath(b)\\n\r\n\r\n --%test(test XML with nested CDATA)\r\n PROCEDURE test_nested_cdata;\r\nEND;\r\n/\r\n\r\nCREATE OR REPLACE PACKAGE BODY junit_utplsql_test2_pkg IS\r\n PROCEDURE test_nested_cdata IS\r\n BEGIN\r\n dbms_output.put_line('nested cdata block: \u003c![CDATA[...]]\u003e, to be handled.');\r\n ut.expect(1).to_equal(1);\r\n END;\r\nEND;\r\n/\r\n```\r\n\r\n### 2. Run Test\r\n\r\n```sql\r\nDECLARE\r\n l_reporter ut_realtime_reporter := ut_realtime_reporter();\r\nBEGIN\r\n l_reporter.set_reporter_id('12345');\r\n l_reporter.output_buffer.init();\r\n sys.dbms_output.enable(NULL);\r\n ut_runner.run(\r\n a_paths =\u003e ut_varchar2_list('junit_utplsql_test2_pkg'),\r\n a_reporters =\u003e ut_reporters(l_reporter)\r\n );\r\n sys.dbms_output.disable;\r\nEND;\r\n/\r\n```\r\n\r\n### 3. Consume wrong XML message\r\n\r\n```sql\r\nWITH\r\n FUNCTION reporter return ut_realtime_reporter IS\r\n l_reporter ut_realtime_reporter := ut_realtime_reporter();\r\n BEGIN\r\n l_reporter.set_reporter_id('12345');\r\n RETURN l_reporter;\r\n END;\r\nSELECT text \r\n FROM TABLE(reporter().get_lines())\r\n WHERE item_type = 'post-test'\r\n/\r\n```\r\n\r\nThis produces the following output:\r\n\r\n```xml\r\n\u003c?xml version=\"1.0\"?\u003e\r\n\u003cevent type=\"post-test\"\u003e\r\n \u003ctest id=\"junit_utplsql_test2_pkg.test_nested_cdata\"\u003e\r\n \u003ctestNumber\u003e1\u003c/testNumber\u003e\r\n \u003ctotalNumberOfTests\u003e1\u003c/totalNumberOfTests\u003e\r\n \u003cstartTime\u003e2020-06-04T10:47:00.245501\u003c/startTime\u003e\r\n \u003cendTime\u003e2020-06-04T10:47:00.250778\u003c/endTime\u003e\r\n \u003cexecutionTime\u003e.005277\u003c/executionTime\u003e\r\n \u003ccounter\u003e\r\n \u003cdisabled\u003e0\u003c/disabled\u003e\r\n \u003csuccess\u003e1\u003c/success\u003e\r\n \u003cfailure\u003e0\u003c/failure\u003e\r\n \u003cerror\u003e0\u003c/error\u003e\r\n \u003cwarning\u003e0\u003c/warning\u003e\r\n \u003c/counter\u003e\r\n \u003cserverOutput\u003e\u003c![CDATA[nested cdata block: \u003c![CDATA[...]]\u003e, to be handled.\r\n]]\u003e\u003c/serverOutput\u003e\r\n \u003c/test\u003e\r\n\u003c/event\u003e\r\n```\r\n\r\nThis is not a valid XML document. You can go to https://www.xmlvalidation.com/ and paste the result there for details. The reason is the nested CDATA section.\r\n\r\n## Expected behavior\r\nProduce a valid XML document. Always.\r\n\r\n","author":{"url":"https://github.com/PhilippSalvisberg","@type":"Person","name":"PhilippSalvisberg"},"datePublished":"2020-06-04T08:54:17.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/1073/utPLSQL/issues/1073"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:d02b5e74-eb1a-a8ca-f1a7-bfc53a36caba |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BBE4:222302:838C96:8773BC:6A6382B7 |
| html-safe-nonce | 85ac641fa50476e3a5a3302d055d0fd97381ab12a6bd28c821437542ca6f6232 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQkU0OjIyMjMwMjo4MzhDOTY6ODc3M0JDOjZBNjM4MkI3IiwidmlzaXRvcl9pZCI6IjIzMDEwNDk2MDQxNTc5NjQ5ODMiLCJyZWdpb25fZWRnZSI6InNlYSIsInJlZ2lvbl9yZW5kZXIiOiJzZWEifQ== |
| visitor-hmac | 77b8a9dcd5b79bfb14360c8f07e4119d7d88d4cbba6eed940ee0314342689720 |
| hovercard-subject-tag | issue:630638348 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/utPLSQL/utPLSQL/1073/issue_layout |
| twitter:image | https://opengraph.githubassets.com/3b556593123e88892ba8207930806f57c4739406be90f81d822aafc45bfbf632/utPLSQL/utPLSQL/issues/1073 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/3b556593123e88892ba8207930806f57c4739406be90f81d822aafc45bfbf632/utPLSQL/utPLSQL/issues/1073 |
| og:image:alt | Describe the bug When an utPLSQL output contains a CDATA section, then the ut_realtime_reporter produces an invalid XML message. Such a message cannot be processed by consumers such as the SQL Deve... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | PhilippSalvisberg |
| hostname | github.com |
| expected-hostname | github.com |
| None | e4fb64aef87da454ec25b158147f7f5f14aef29216e5ca1612c2e48faa599d1f |
| turbo-cache-control | no-preview |
| go-import | github.com/utPLSQL/utPLSQL git https://github.com/utPLSQL/utPLSQL.git |
| octolytics-dimension-user_id | 15661281 |
| octolytics-dimension-user_login | utPLSQL |
| octolytics-dimension-repository_id | 50728220 |
| octolytics-dimension-repository_nwo | utPLSQL/utPLSQL |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 50728220 |
| octolytics-dimension-repository_network_root_nwo | utPLSQL/utPLSQL |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | e839936ba5faffb9c836dda1cf4729d50c88a32e |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width