Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test_build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions src/besapi/besapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import requests
import urllib3.poolmanager

__version__ = "4.0.2"
__version__ = "4.1.2"

besapi_logger = logging.getLogger("besapi")

Expand Down Expand Up @@ -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,
)
Expand Down
52 changes: 52 additions & 0 deletions tests/test_besapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'<Answer type="integer">{str_relevance_answer}</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'<Answer type="integer">{str_relevance_answer}</Answer>' in str(result)
else:
pytest.skip("Skipping BESConnection test, no config file or login failed.")

Expand Down