diff --git a/.github/workflows/test_build.yaml b/.github/workflows/test_build.yaml index dd8066a..bc0092f 100644 --- a/.github/workflows/test_build.yaml +++ b/.github/workflows/test_build.yaml @@ -30,7 +30,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-13, ubuntu-24.04-arm] + os: [ubuntu-latest, windows-latest, macos-13] # https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json python-version: ["3.9", "3"] steps: diff --git a/src/besapi/besapi.py b/src/besapi/besapi.py index c9d8150..cacaab8 100644 --- a/src/besapi/besapi.py +++ b/src/besapi/besapi.py @@ -29,7 +29,7 @@ import requests import urllib3.poolmanager -__version__ = "4.0.2" +__version__ = "4.1.2" besapi_logger = logging.getLogger("besapi") @@ -615,7 +615,7 @@ def session_relevance_xml(self, relevance, **kwargs): return RESTResult( self.session.post( self.url("query"), - data=f"relevance={urllib.parse.quote(relevance, safe=':+')}", + data=f"relevance={urllib.parse.quote(relevance, safe=':')}", verify=self.verify, **kwargs, ) diff --git a/tests/test_besapi.py b/tests/test_besapi.py index a70973d..57a4e34 100644 --- a/tests/test_besapi.py +++ b/tests/test_besapi.py @@ -312,6 +312,58 @@ def test_bes_conn_json(): assert result is not None assert "TestString" in result assert "BES Support" in result + print("testing session relevance with + in relevance") + str_relevance_plus = 'lengths of first matches (regex " +") of " "' + result = bes_conn.session_relevance_xml(str_relevance_plus) + print(result) + assert result is not None + else: + pytest.skip("Skipping BESConnection test, no config file or login failed.") + + +def test_bes_conn_session_relevance_with_plus(): + """Test the BESConnection class with JSON output.""" + + bes_conn = besapi.plugin_utilities.get_besapi_connection(None) + + if bes_conn and bes_conn.login(): + print("testing session relevance with + in relevance") + str_relevance_plus = 'lengths of first matches (regex " +") of " "' + str_relevance_answer = "8" + result = bes_conn.session_relevance_xml(str_relevance_plus) + print(result) + assert result is not None + print(result.request.request.body) + assert f'{str_relevance_answer}' in str(result) + result = bes_conn.session_relevance_json_string(str_relevance_plus) + print(result) + assert result is not None + assert str_relevance_answer in str(result) + result = bes_conn.session_relevance_json(str_relevance_plus) + print(result) + assert result is not None + assert f"[{str_relevance_answer}]" in str(result["result"]) + result = bes_conn.session_relevance_string(str_relevance_plus) + print(result) + assert result is not None + assert str_relevance_answer in str(result) + result = bes_conn.session_relevance_array(str_relevance_plus) + print(result) + assert result is not None + assert f"['{str_relevance_answer}']" in str(result) + result = bes_conn.session_relevance_json_array(str_relevance_plus) + print(result) + assert result is not None + assert f"[{str_relevance_answer}]" in str(result) + + # test already escaped + + str_relevance_plus = r'lengths of first matches (regex " %2b") of " "' + print(str_relevance_plus) + result = bes_conn.session_relevance_xml(str_relevance_plus) + print(result) + assert result is not None + print(result.request.request.body) + assert f'{str_relevance_answer}' in str(result) else: pytest.skip("Skipping BESConnection test, no config file or login failed.")