Skip to content

[MIM-2604] Replace xmerl_regexp calls#4643

Merged
mdbrnowski merged 2 commits intomasterfrom
replace-xmerl-regexp
Feb 18, 2026
Merged

[MIM-2604] Replace xmerl_regexp calls#4643
mdbrnowski merged 2 commits intomasterfrom
replace-xmerl-regexp

Conversation

@mdbrnowski
Copy link
Copy Markdown
Member

@mdbrnowski mdbrnowski commented Feb 12, 2026

This PR replaces calls to xmerl_regexp:sh_to_awk (which was removed in the latests OTP version) with mongoose_lib:sh_to_awk, which is a copied and slightly modified version of the original function. It also adds several tests to make sure that the function works as intended.

@mongoose-im
Copy link
Copy Markdown
Collaborator

mongoose-im commented Feb 12, 2026

CircleCI results for 7532a07


elasticsearch_and_cassandra_latest / elasticsearch_and_cassandra_mnesia / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 683 / Failed: 0 / User-skipped: 72 / Auto-skipped: 0


small_tests_legacy / small_tests / f6d5f1d
Reports root / small


small_tests_latest_arm64 / small_tests / f6d5f1d
Reports root / small


ldap_mnesia_legacy / ldap_mnesia / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 2396 / Failed: 0 / User-skipped: 1423 / Auto-skipped: 0


ldap_mnesia_latest / ldap_mnesia / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 2396 / Failed: 0 / User-skipped: 1423 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_legacy / pgsql_mnesia / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 5343 / Failed: 0 / User-skipped: 137 / Auto-skipped: 0


dynamic_domains_mysql_redis_latest / mysql_redis / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 5307 / Failed: 0 / User-skipped: 173 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_latest / pgsql_mnesia / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 5343 / Failed: 0 / User-skipped: 137 / Auto-skipped: 0


internal_mnesia_latest / internal_mnesia / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 2544 / Failed: 0 / User-skipped: 1275 / Auto-skipped: 0


mysql_redis_latest / mysql_redis / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 5686 / Failed: 0 / User-skipped: 165 / Auto-skipped: 0


pgsql_mnesia_legacy / pgsql_mnesia / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 5694 / Failed: 0 / User-skipped: 157 / Auto-skipped: 0


cockroachdb_cets_latest / cockroachdb_cets / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 5405 / Failed: 0 / User-skipped: 203 / Auto-skipped: 0


pgsql_mnesia_latest / pgsql_mnesia / f6d5f1d
Status: 🟢 Passed
Reports root/ big
OK: 5694 / Failed: 0 / User-skipped: 157 / Auto-skipped: 0


pgsql_cets_latest / pgsql_cets / 01cbf93
Status: 🔴 Failed
Reports root/ big
OK: 5399 / Failed: 44 / User-skipped: 203 / Auto-skipped: 0

jingle_SUITE:all:jingle_session_is_established_for_full_jids_on_different_nodes
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       #{<<"from">> =>
           <<"alice_jingle_session_is_established_for_full_jids_on_different_nodes_4724@localhost/res1">>,
         <<"id">> => <<"b03c94ca-3d77-47d6-85b1-7ae56e3dd09d">>,
         <<"to">> =>
           <<"clusterguy_jingle_session_is_established_for_full_jids_on_different_nodes_4724@localhost/res1">>,
         <<"type">> => <<"error">>},
       [{xmlel,<<"error">>,
          #{<<"code">> => <<"404">>,<<"type">> => <<"cancel">>},
          [{xmlel,<<"item-not-found">>,
             #{<<"xmlns">> =>
               <<"urn:ietf:params:xml:ns:xmpp-stanzas">>},
             []}]}]},
     "<iq from='alice_jingle_session_is_established_for_full_jids_on_different_nodes_4724@localhost/res1' id='b03c94ca-3d77-47d6-85b1-7ae56e3dd09d' to='clusterguy_jingle_session_is_established_for_full_jids_on_different_nodes_4724@localhost/res1' type='error'><error code='404' type='cancel'><item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,88}]},
    {jingle_SUITE,accept_jingle_session,4,
      [{file,"/home/circleci/project/big_tests/tests/jingle_SUITE.erl"},
       {line,366}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
  ...

Report log

jingle_SUITE:all:jingle_session_is_established_and_terminated_by_receiver_on_different_node
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       #{<<"from">> =>
           <<"alice_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4734@localhost/res1">>,
         <<"id">> => <<"7625aebb-477e-4328-bc31-7173ddf0bfee">>,
         <<"to">> =>
           <<"clusterguy_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4734@localhost/res1">>,
         <<"type">> => <<"error">>},
       [{xmlel,<<"error">>,
          #{<<"code">> => <<"404">>,<<"type">> => <<"cancel">>},
          [{xmlel,<<"item-not-found">>,
             #{<<"xmlns">> =>
               <<"urn:ietf:params:xml:ns:xmpp-stanzas">>},
             []}]}]},
     "<iq from='alice_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4734@localhost/res1' id='7625aebb-477e-4328-bc31-7173ddf0bfee' to='clusterguy_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4734@localhost/res1' type='error'><error code='404' type='cancel'><item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,88}]},
    {jingle_SUITE,accept_jingle_session,4,
      [{file,"/home/circleci/project/big_tests/tests/jingle_SUITE.erl"},
       {line,366}]},
    {jingle_SUITE,
      '-jingle_session_is_established_and_terminated_by_receiver_on_diff...

Report log

jingle_SUITE:all:jingle_session_is_intiated_and_canceled_by_receiver_on_different_node
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       #{<<"from">> =>
           <<"alice_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4730@localhost/res1">>,
         <<"id">> => <<"4f48cbd7-fc97-483a-b5b3-003f4357ac34">>,
         <<"to">> =>
           <<"clusterguy_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4730@localhost/res1">>,
         <<"type">> => <<"error">>},
       [{xmlel,<<"error">>,
          #{<<"code">> => <<"404">>,<<"type">> => <<"cancel">>},
          [{xmlel,<<"item-not-found">>,
             #{<<"xmlns">> =>
               <<"urn:ietf:params:xml:ns:xmpp-stanzas">>},
             []}]}]},
     "<iq from='alice_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4730@localhost/res1' id='4f48cbd7-fc97-483a-b5b3-003f4357ac34' to='clusterguy_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4730@localhost/res1' type='error'><error code='404' type='cancel'><item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,88}]},
    {jingle_SUITE,terminate_jingle_session,4,
      [{file,"/home/circleci/project/big_tests/tests/jingle_SUITE.erl"},
       {line,396}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/esca...

Report log

jingle_SUITE:all:jingle_session_is_established_for_full_jids_on_different_nodes
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       #{<<"from">> =>
           <<"alice_jingle_session_is_established_for_full_jids_on_different_nodes_4743@localhost/res1">>,
         <<"id">> => <<"97c51d85-4c71-4894-b577-5664fc81d02a">>,
         <<"to">> =>
           <<"clusterguy_jingle_session_is_established_for_full_jids_on_different_nodes_4743@localhost/res1">>,
         <<"type">> => <<"error">>},
       [{xmlel,<<"error">>,
          #{<<"code">> => <<"404">>,<<"type">> => <<"cancel">>},
          [{xmlel,<<"item-not-found">>,
             #{<<"xmlns">> =>
               <<"urn:ietf:params:xml:ns:xmpp-stanzas">>},
             []}]}]},
     "<iq from='alice_jingle_session_is_established_for_full_jids_on_different_nodes_4743@localhost/res1' id='97c51d85-4c71-4894-b577-5664fc81d02a' to='clusterguy_jingle_session_is_established_for_full_jids_on_different_nodes_4743@localhost/res1' type='error'><error code='404' type='cancel'><item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,88}]},
    {jingle_SUITE,accept_jingle_session,4,
      [{file,"/home/circleci/project/big_tests/tests/jingle_SUITE.erl"},
       {line,366}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
  ...

Report log

jingle_SUITE:all:jingle_session_is_established_and_terminated_by_receiver_on_different_node
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       #{<<"from">> =>
           <<"alice_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4750@localhost/res1">>,
         <<"id">> => <<"909c3782-c07b-4390-9480-01409de7d25e">>,
         <<"to">> =>
           <<"clusterguy_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4750@localhost/res1">>,
         <<"type">> => <<"error">>},
       [{xmlel,<<"error">>,
          #{<<"code">> => <<"404">>,<<"type">> => <<"cancel">>},
          [{xmlel,<<"item-not-found">>,
             #{<<"xmlns">> =>
               <<"urn:ietf:params:xml:ns:xmpp-stanzas">>},
             []}]}]},
     "<iq from='alice_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4750@localhost/res1' id='909c3782-c07b-4390-9480-01409de7d25e' to='clusterguy_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4750@localhost/res1' type='error'><error code='404' type='cancel'><item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,88}]},
    {jingle_SUITE,accept_jingle_session,4,
      [{file,"/home/circleci/project/big_tests/tests/jingle_SUITE.erl"},
       {line,366}]},
    {jingle_SUITE,
      '-jingle_session_is_established_and_terminated_by_receiver_on_diff...

Report log

jingle_SUITE:all:jingle_session_is_intiated_and_canceled_by_receiver_on_different_node
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       #{<<"from">> =>
           <<"alice_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4751@localhost/res1">>,
         <<"id">> => <<"8acfed89-7d9a-4492-afa0-6f00e0817594">>,
         <<"to">> =>
           <<"clusterguy_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4751@localhost/res1">>,
         <<"type">> => <<"error">>},
       [{xmlel,<<"error">>,
          #{<<"code">> => <<"404">>,<<"type">> => <<"cancel">>},
          [{xmlel,<<"item-not-found">>,
             #{<<"xmlns">> =>
               <<"urn:ietf:params:xml:ns:xmpp-stanzas">>},
             []}]}]},
     "<iq from='alice_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4751@localhost/res1' id='8acfed89-7d9a-4492-afa0-6f00e0817594' to='clusterguy_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4751@localhost/res1' type='error'><error code='404' type='cancel'><item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,88}]},
    {jingle_SUITE,terminate_jingle_session,4,
      [{file,"/home/circleci/project/big_tests/tests/jingle_SUITE.erl"},
       {line,396}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/esca...

Report log

jingle_SUITE:all:jingle_session_is_established_and_terminated_by_receiver_on_different_node
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       #{<<"from">> =>
           <<"alice_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4764@localhost/res1">>,
         <<"id">> => <<"179ddeb4-56d5-460c-925c-0ca5533d4460">>,
         <<"to">> =>
           <<"clusterguy_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4764@localhost/res1">>,
         <<"type">> => <<"error">>},
       [{xmlel,<<"error">>,
          #{<<"code">> => <<"404">>,<<"type">> => <<"cancel">>},
          [{xmlel,<<"item-not-found">>,
             #{<<"xmlns">> =>
               <<"urn:ietf:params:xml:ns:xmpp-stanzas">>},
             []}]}]},
     "<iq from='alice_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4764@localhost/res1' id='179ddeb4-56d5-460c-925c-0ca5533d4460' to='clusterguy_jingle_session_is_established_and_terminated_by_receiver_on_different_node_4764@localhost/res1' type='error'><error code='404' type='cancel'><item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,88}]},
    {jingle_SUITE,accept_jingle_session,4,
      [{file,"/home/circleci/project/big_tests/tests/jingle_SUITE.erl"},
       {line,366}]},
    {jingle_SUITE,
      '-jingle_session_is_established_and_terminated_by_receiver_on_diff...

Report log

jingle_SUITE:all:jingle_session_is_established_for_full_jids_on_different_nodes
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       #{<<"from">> =>
           <<"alice_jingle_session_is_established_for_full_jids_on_different_nodes_4766@localhost/res1">>,
         <<"id">> => <<"3b71c809-5d9b-424f-8225-1ec975e695e7">>,
         <<"to">> =>
           <<"clusterguy_jingle_session_is_established_for_full_jids_on_different_nodes_4766@localhost/res1">>,
         <<"type">> => <<"error">>},
       [{xmlel,<<"error">>,
          #{<<"code">> => <<"404">>,<<"type">> => <<"cancel">>},
          [{xmlel,<<"item-not-found">>,
             #{<<"xmlns">> =>
               <<"urn:ietf:params:xml:ns:xmpp-stanzas">>},
             []}]}]},
     "<iq from='alice_jingle_session_is_established_for_full_jids_on_different_nodes_4766@localhost/res1' id='3b71c809-5d9b-424f-8225-1ec975e695e7' to='clusterguy_jingle_session_is_established_for_full_jids_on_different_nodes_4766@localhost/res1' type='error'><error code='404' type='cancel'><item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,88}]},
    {jingle_SUITE,accept_jingle_session,4,
      [{file,"/home/circleci/project/big_tests/tests/jingle_SUITE.erl"},
       {line,366}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
  ...

Report log

jingle_SUITE:all:jingle_session_is_intiated_and_canceled_by_receiver_on_different_node
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       #{<<"from">> =>
           <<"alice_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4771@localhost/res1">>,
         <<"id">> => <<"6765a2f2-9f90-48cd-8010-1d4eb2f7a881">>,
         <<"to">> =>
           <<"clusterguy_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4771@localhost/res1">>,
         <<"type">> => <<"error">>},
       [{xmlel,<<"error">>,
          #{<<"code">> => <<"404">>,<<"type">> => <<"cancel">>},
          [{xmlel,<<"item-not-found">>,
             #{<<"xmlns">> =>
               <<"urn:ietf:params:xml:ns:xmpp-stanzas">>},
             []}]}]},
     "<iq from='alice_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4771@localhost/res1' id='6765a2f2-9f90-48cd-8010-1d4eb2f7a881' to='clusterguy_jingle_session_is_intiated_and_canceled_by_receiver_on_different_node_4771@localhost/res1' type='error'><error code='404' type='cancel'><item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,88}]},
    {jingle_SUITE,terminate_jingle_session,4,
      [{file,"/home/circleci/project/big_tests/tests/jingle_SUITE.erl"},
       {line,396}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/esca...

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_pm_between_users_at_different_locations
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"eve_test_pm_between_users_at_different_locations_4787@localhost/res1">>,
          escalus_tcp,<0.151929.0>,
          [{event_manager,<0.151924.0>},
           {server,<<"localhost">>},
           {username,
             <<"eve_test_pm_between_users_at_different_locations_4787">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.151924.0>},
            {server,<<"localhost">>},
            {username,
              <<"eve_test_pm_between_users_at_different_locations_4787">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,
             <<"eve_test_pm_between_users_at_different_locations_4787">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5252},
           {auth,fun escalus_auth:auth_plain/2},
           {wspath,undefined},
           {username,
             <<"eve_test_pm_between_users_at_different_locations_4787">>},
           {server,<<"localhost">>},
           {password,<<"password">>},
           {port,5252},
           {stream_id,<<"18044abea4f04fa6">>}]},
        15000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,test_two_way_pm,2,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_glob...

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_pm_between_users_before_available_presence
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"eve_test_pm_between_users_before_available_presence_4788@localhost/res1">>,
          escalus_tcp,<0.156178.0>,
          [{event_manager,<0.156173.0>},
           {server,<<"localhost">>},
           {username,
             <<"eve_test_pm_between_users_before_available_presence_4788">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.156173.0>},
            {server,<<"localhost">>},
            {username,
              <<"eve_test_pm_between_users_before_available_presence_4788">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,
             <<"eve_test_pm_between_users_before_available_presence_4788">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5252},
           {auth,fun escalus_auth:auth_plain/2},
           {wspath,undefined},
           {username,
             <<"eve_test_pm_between_users_before_available_presence_4788">>},
           {server,<<"localhost">>},
           {password,<<"password">>},
           {port,5252},
           {stream_id,<<"d890be638f17537f">>}]},
        15000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,test_two_way_pm,2,
       [{file,
          "/home/circleci/project/big_tests...

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_component_on_one_host
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,undefined,escalus_tcp,<0.167070.0>,undefined,
          [{sid,<<"6dc7bf4db238715b">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {password,<<"secret">>},
           {port,8888},
           {component,<<"test_service">>}]},
        5000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,'-test_component_on_one_host/1-fun-0-',3,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
        {line,613}]},
     {escalus_story,story,4,
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
        {line,75}]},
     {mod_global_distrib_SUITE,
       '-test_component_on_one_host/1-lc$^1/1-0-',3,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
        {line,626}]},
     {mod_global_distrib_SUITE,
       '-test_component_on_one_host/1-lc$^1/1-0-',3,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
        {line,626}]},
     {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1796}]},
     {test_server,run_test_case_eval1,6,
       [{file,"test_server.erl"},{line,1305}]},
     {test_server,run_test_case_eval,9,
       [{file,"test_server.erl"}...

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_components_in_different_regions
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,undefined,escalus_tcp,<0.170339.0>,undefined,
          [{sid,<<"3d2d312a9970b7f9">>},
           {port,9990},
           {component,<<"service2">>},
           {host,<<"localhost">>},
           {password,<<"secret">>},
           {server,<<"localhost">>},
           {component,<<"test_service">>}]},
        5000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,test_components_in_different_regions,1,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
        {line,642}]},
     {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1796}]},
     {test_server,run_test_case_eval1,6,
       [{file,"test_server.erl"},{line,1305}]},
     {test_server,run_test_case_eval,9,
       [{file,"test_server.erl"},{line,1237}]}]}}

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_pm_with_graceful_reconnection_to_different_server
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"alice_test_pm_with_graceful_reconnection_to_different_server_4797@localhost/res1">>,
          escalus_tcp,<0.173752.0>,
          [{event_manager,<0.173749.0>},
           {server,<<"localhost">>},
           {username,
             <<"alicE_test_pm_with_graceful_reconnection_to_different_server_4797">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.173749.0>},
            {server,<<"localhost">>},
            {username,
              <<"alicE_test_pm_with_graceful_reconnection_to_different_server_4797">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,
             <<"alice_test_pm_with_graceful_reconnection_to_different_server_4797">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5222},
           {auth,fun escalus_auth:auth_plain/2},
           {wspath,undefined},
           {username,
             <<"alicE_test_pm_with_graceful_reconnection_to_different_server_4797">>},
           {server,<<"localhost">>},
           {password,<<"matygrysa">>},
           {stream_id,<<"c5807bad190276d0">>}]},
        5000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,
       '-test_pm_with_graceful_reconnection_to_differen...

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_pm_with_ungraceful_reconnection_to_different_server
{error,
  {{has_route_message,1,[{times,50,0}],undefined},
   [{wait_helper,do_wait_until,1,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/wait_helper/src/wait_helper.erl"},
       {line,127}]},
    {mod_global_distrib_SUITE,
      '-do_test_pm_with_ungraceful_reconnection_to_different_server/3-fun-0-',
      6,
      [{file,
         "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
       {line,830}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,75}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1796}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1305}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1237}]}]}}

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_pm_with_ungraceful_reconnection_to_different_server_with_asia_refreshes_first
{error,
  {{has_route_message,1,[{times,50,0}],undefined},
   [{wait_helper,do_wait_until,1,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/wait_helper/src/wait_helper.erl"},
       {line,127}]},
    {mod_global_distrib_SUITE,
      '-do_test_pm_with_ungraceful_reconnection_to_different_server/3-fun-0-',
      6,
      [{file,
         "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
       {line,830}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,75}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1796}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1305}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1237}]}]}}

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_pm_with_ungraceful_reconnection_to_different_server_with_europe_refreshes_first
{error,
  {{has_route_message,1,[{times,50,0}],undefined},
   [{wait_helper,do_wait_until,1,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/wait_helper/src/wait_helper.erl"},
       {line,127}]},
    {mod_global_distrib_SUITE,
      '-do_test_pm_with_ungraceful_reconnection_to_different_server/3-fun-0-',
      6,
      [{file,
         "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
       {line,830}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,75}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1796}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1305}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1237}]}]}}

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_update_senders_host
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,<<"eve_test_update_senders_host_4813@localhost/res1">>,
          escalus_tcp,<0.183768.0>,
          [{event_manager,<0.183763.0>},
           {server,<<"localhost">>},
           {username,<<"eve_test_update_senders_host_4813">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.183763.0>},
            {server,<<"localhost">>},
            {username,<<"eve_test_update_senders_host_4813">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,<<"eve_test_update_senders_host_4813">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5252},
           {auth,fun escalus_auth:auth_plain/2},
           {wspath,undefined},
           {username,<<"eve_test_update_senders_host_4813">>},
           {server,<<"localhost">>},
           {password,<<"password">>},
           {port,5252},
           {stream_id,<<"b8c7d064a9819f2a">>}]},
        5000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,'-test_update_senders_host/1-fun-0-',2,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
        {line,985}]},
     {escalus_story,story,4,
       [{file,
          "/home/circleci/project/big_tests/_build/default...

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_update_senders_host_by_ejd_service
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,undefined,escalus_tcp,<0.186406.0>,undefined,
          [{sid,<<"3c9fd62f67f5c598">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {password,<<"secret">>},
           {port,8888},
           {component,<<"test_service">>}]},
        5000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,
       '-test_update_senders_host_by_ejd_service/1-fun-0-',4,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
        {line,1030}]},
     {escalus_story,story,4,
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
        {line,75}]},
     {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1796}]},
     {test_server,run_test_case_eval1,6,
       [{file,"test_server.erl"},{line,1305}]},
     {test_server,run_test_case_eval,9,
       [{file,"test_server.erl"},{line,1237}]}]}}

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_muc_conversation_on_one_host
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"eve_test_muc_conversation_on_one_host_4816@localhost/res1">>,
          escalus_tcp,<0.186435.0>,
          [{event_manager,<0.186430.0>},
           {server,<<"localhost">>},
           {username,<<"eve_test_muc_conversation_on_one_host_4816">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.186430.0>},
            {server,<<"localhost">>},
            {username,
              <<"eve_test_muc_conversation_on_one_host_4816">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,<<"eve_test_muc_conversation_on_one_host_4816">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5252},
           {auth,fun escalus_auth:auth_plain/2},
           {wspath,undefined},
           {username,<<"eve_test_muc_conversation_on_one_host_4816">>},
           {server,<<"localhost">>},
           {password,<<"password">>},
           {port,5252},
           {stream_id,<<"7b2330e9bb4726d3">>}]},
        5000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,wait_for_muc_presence,3,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
        {line,579}]},
     {mod_global_distrib_SUITE,
       '-test_...

Report log

mod_global_distrib_SUITE:mod_global_distrib:test_instrumentation_events_on_one_host
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"eve_test_instrumentation_events_on_one_host_4817@localhost/res1">>,
          escalus_tcp,<0.186462.0>,
          [{event_manager,<0.186457.0>},
           {server,<<"localhost">>},
           {username,
             <<"eve_test_instrumentation_events_on_one_host_4817">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.186457.0>},
            {server,<<"localhost">>},
            {username,
              <<"eve_test_instrumentation_events_on_one_host_4817">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,
             <<"eve_test_instrumentation_events_on_one_host_4817">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5252},
           {auth,fun escalus_auth:auth_plain/2},
           {wspath,undefined},
           {username,
             <<"eve_test_instrumentation_events_on_one_host_4817">>},
           {server,<<"localhost">>},
           {password,<<"password">>},
           {port,5252},
           {stream_id,<<"e50ada69ed7a807a">>}]},
        15000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,test_two_way_pm,2,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
 ...

Report log

mod_global_distrib_SUITE:cluster_restart:test_location_disconnect
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,<<"eve_test_location_disconnect_4819@localhost/res1">>,
          escalus_tcp,<0.186518.0>,
          [{event_manager,<0.186511.0>},
           {server,<<"localhost">>},
           {username,<<"eve_test_location_disconnect_4819">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.186511.0>},
            {server,<<"localhost">>},
            {username,<<"eve_test_location_disconnect_4819">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,<<"eve_test_location_disconnect_4819">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5252},
           {auth,fun escalus_auth:auth_plain/2},
           {wspath,undefined},
           {username,<<"eve_test_location_disconnect_4819">>},
           {server,<<"localhost">>},
           {password,<<"password">>},
           {port,5252},
           {stream_id,<<"f1daaa9f0b8fd5fc">>}]},
        5000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,'-test_location_disconnect/1-fun-0-',3,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
        {line,700}]},
     {escalus_story,story,4,
       [{file,
          "/home/circleci/project/big_tests/_build/default...

Report log

mod_global_distrib_SUITE:multi_connection:test_in_order_messages_on_multiple_connections
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"eve_test_in_order_messages_on_multiple_connections_4825@localhost/res1">>,
          escalus_tcp,<0.186621.0>,
          [{event_manager,<0.186616.0>},
           {server,<<"localhost">>},
           {username,
             <<"eve_test_in_order_messages_on_multiple_connections_4825">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.186616.0>},
            {server,<<"localhost">>},
            {username,
              <<"eve_test_in_order_messages_on_multiple_connections_4825">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,
             <<"eve_test_in_order_messages_on_multiple_connections_4825">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5252},
           {auth,fun escalus_auth:auth_plain/2},
           {wspath,undefined},
           {username,
             <<"eve_test_in_order_messages_on_multiple_connections_4825">>},
           {server,<<"localhost">>},
           {password,<<"password">>},
           {port,5252},
           {stream_id,<<"b45f2dcf9e87cb03">>}]},
        5000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,
       '-test_in_order_messages_on_multiple_connections/1-fun-1-',2,
       [{file...

Report log

mod_global_distrib_SUITE:multi_connection:test_in_order_messages_on_multiple_connections_with_bounce
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"eve_test_in_order_messages_on_multiple_connections_with_bounce_4826@localhost/res1">>,
          escalus_tcp,<0.186647.0>,
          [{event_manager,<0.186642.0>},
           {server,<<"localhost">>},
           {username,
             <<"eve_test_in_order_messages_on_multiple_connections_with_bounce_4826">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.186642.0>},
            {server,<<"localhost">>},
            {username,
              <<"eve_test_in_order_messages_on_multiple_connections_with_bounce_4826">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,
             <<"eve_test_in_order_messages_on_multiple_connections_with_bounce_4826">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5252},
           {auth,fun escalus_auth:auth_plain/2},
           {wspath,undefined},
           {username,
             <<"eve_test_in_order_messages_on_multiple_connections_with_bounce_4826">>},
           {server,<<"localhost">>},
           {password,<<"password">>},
           {port,5252},
           {stream_id,<<"ed3347c74849f2b5">>}]},
        5000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,
       '-test_in_order...

Report log

mod_global_distrib_SUITE:multi_connection:test_messages_bounced_in_order
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"eve_test_messages_bounced_in_order_4827@localhost/res1">>,
          escalus_tcp,<0.186673.0>,
          [{event_manager,<0.186668.0>},
           {server,<<"localhost">>},
           {username,<<"eve_test_messages_bounced_in_order_4827">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.186668.0>},
            {server,<<"localhost">>},
            {username,
              <<"eve_test_messages_bounced_in_order_4827">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,<<"eve_test_messages_bounced_in_order_4827">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5252},
           {auth,fun escalus_auth:auth_plain/2},
           {wspath,undefined},
           {username,<<"eve_test_messages_bounced_in_order_4827">>},
           {server,<<"localhost">>},
           {password,<<"password">>},
           {port,5252},
           {stream_id,<<"76bb33ecb5ed8002">>}]},
        5000],
       [{file,
          "/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {mod_global_distrib_SUITE,
       '-test_messages_bounced_in_order/1-fun-2-',2,
       [{file,
          "/home/circleci/project/big_tests/tests/mod_global_distrib_SUITE.erl"},
        {line,965}]},
     {lists,foreach_1,2,[{file,"...

Report log

20 errors were truncated


small_tests_latest / small_tests / f6d5f1d
Reports root / small

@codecov
Copy link
Copy Markdown

codecov bot commented Feb 12, 2026

Codecov Report

❌ Patch coverage is 96.77419% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 86.06%. Comparing base (537a278) to head (f6d5f1d).
⚠️ Report is 3 commits behind head on master.

Files with missing lines Patch % Lines
src/mongoose_lib.erl 96.55% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4643      +/-   ##
==========================================
- Coverage   86.08%   86.06%   -0.03%     
==========================================
  Files         569      569              
  Lines       34145    34174      +29     
==========================================
+ Hits        29394    29411      +17     
- Misses       4751     4763      +12     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mdbrnowski mdbrnowski force-pushed the replace-xmerl-regexp branch 2 times, most recently from 47e0df1 to 01cbf93 Compare February 16, 2026 16:32
@mdbrnowski mdbrnowski marked this pull request as ready for review February 17, 2026 12:05
@fen-pl fen-pl requested review from Copilot and fen-pl February 17, 2026 18:14
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the dependency on xmerl_regexp:sh_to_awk/1 (removed in newer OTP) by introducing a compatible replacement in mongoose_lib and updating callers to use it, along with adding coverage to ensure conversion behavior stays consistent.

Changes:

  • Added mongoose_lib:sh_to_awk/1 as a drop-in replacement for xmerl_regexp:sh_to_awk/1.
  • Updated ACL and S2S domain matching to use mongoose_lib:sh_to_awk/1.
  • Dropped xmerl from the application’s OTP application list and added a set of unit-style tests for the new conversion function.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
test/mongoose_lib_SUITE.erl Adds test coverage for mongoose_lib:sh_to_awk/1 conversions and matching behavior.
src/mongoose_s2s_in.erl Switches S2S domain label glob conversion from xmerl_regexp to mongoose_lib.
src/mongooseim.app.src Removes xmerl from the application dependency list.
src/mongoose_lib.erl Introduces and exports sh_to_awk/1 implementation copied/adapted from xmerl_regexp.
src/acl.erl Switches ACL glob-to-regex conversion from xmerl_regexp to mongoose_lib.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@mdbrnowski mdbrnowski merged commit 4b597fb into master Feb 18, 2026
10 checks passed
@mdbrnowski mdbrnowski deleted the replace-xmerl-regexp branch February 18, 2026 10:27
@chrzaszcz chrzaszcz added this to the 6.6.0 milestone Mar 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants