Skip to content

Commit 9da3935

Browse files
committed
Run all unit tests
1 parent 1652c1a commit 9da3935

4 files changed

Lines changed: 33 additions & 38 deletions

File tree

‎.github/workflows/python-ci.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ jobs:
8989
- name: Install
9090
run: uv sync --all-extras --no-extra hive-kerberos
9191
- name: Run unit tests
92-
run: uv run python -m pytest tests/ -m "(unmarked or parametrize) and not integration" --ignore=tests/integration -v -x
92+
run: uv run python -m pytest tests/ -m unmarked --ignore=tests/integration -v -x
9393

9494
cibw-dev-env-smoke-test:
9595
runs-on: ubuntu-latest

‎Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ lint: ## Run code linters via prek (pre-commit hooks)
104104
##@ Testing
105105

106106
test: ## Run all unit tests (excluding integration)
107-
$(TEST_RUNNER) pytest tests/ -m "(unmarked or parametrize) and not integration" $(PYTEST_ARGS)
107+
$(TEST_RUNNER) pytest tests/ -m unmarked $(PYTEST_ARGS)
108108

109109
test-integration: test-integration-setup test-integration-exec test-integration-cleanup ## Run integration tests
110110

‎tests/catalog/test_rest.py‎

Lines changed: 27 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -206,10 +206,9 @@ def test_token_200(rest_mock: Mocker) -> None:
206206
status_code=200,
207207
request_headers=OAUTH_TEST_HEADERS,
208208
)
209-
assert (
210-
RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS)._session.headers["Authorization"] # pylint: disable=W0212
211-
== f"Bearer {TEST_TOKEN}"
212-
)
209+
catalog = RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS)
210+
prepared = catalog._session.prepare_request(Request("GET", TEST_URI))
211+
assert prepared.headers["Authorization"] == f"Bearer {TEST_TOKEN}"
213212

214213

215214
@pytest.mark.filterwarnings(
@@ -226,10 +225,9 @@ def test_token_200_without_optional_fields(rest_mock: Mocker) -> None:
226225
status_code=200,
227226
request_headers=OAUTH_TEST_HEADERS,
228227
)
229-
assert (
230-
RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS)._session.headers["Authorization"] # pylint: disable=W0212
231-
== f"Bearer {TEST_TOKEN}"
232-
)
228+
catalog = RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS)
229+
prepared = catalog._session.prepare_request(Request("GET", TEST_URI))
230+
assert prepared.headers["Authorization"] == f"Bearer {TEST_TOKEN}"
233231

234232

235233
@pytest.mark.filterwarnings(
@@ -248,12 +246,9 @@ def test_token_with_optional_oauth_params(rest_mock: Mocker) -> None:
248246
status_code=200,
249247
request_headers=OAUTH_TEST_HEADERS,
250248
)
251-
assert (
252-
RestCatalog(
253-
"rest", uri=TEST_URI, credential=TEST_CREDENTIALS, audience=TEST_AUDIENCE, resource=TEST_RESOURCE
254-
)._session.headers["Authorization"]
255-
== f"Bearer {TEST_TOKEN}"
256-
)
249+
catalog = RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS, audience=TEST_AUDIENCE, resource=TEST_RESOURCE)
250+
prepared = catalog._session.prepare_request(Request("GET", TEST_URI))
251+
assert prepared.headers["Authorization"] == f"Bearer {TEST_TOKEN}"
257252
assert TEST_AUDIENCE in mock_request.last_request.text
258253
assert TEST_RESOURCE in mock_request.last_request.text
259254

@@ -274,10 +269,9 @@ def test_token_with_optional_oauth_params_as_empty(rest_mock: Mocker) -> None:
274269
status_code=200,
275270
request_headers=OAUTH_TEST_HEADERS,
276271
)
277-
assert (
278-
RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS, audience="", resource="")._session.headers["Authorization"]
279-
== f"Bearer {TEST_TOKEN}"
280-
)
272+
catalog = RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS, audience="", resource="")
273+
prepared = catalog._session.prepare_request(Request("GET", TEST_URI))
274+
assert prepared.headers["Authorization"] == f"Bearer {TEST_TOKEN}"
281275
assert TEST_AUDIENCE not in mock_request.last_request.text
282276
assert TEST_RESOURCE not in mock_request.last_request.text
283277

@@ -298,9 +292,9 @@ def test_token_with_default_scope(rest_mock: Mocker) -> None:
298292
status_code=200,
299293
request_headers=OAUTH_TEST_HEADERS,
300294
)
301-
assert (
302-
RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS)._session.headers["Authorization"] == f"Bearer {TEST_TOKEN}"
303-
)
295+
catalog = RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS)
296+
prepared = catalog._session.prepare_request(Request("GET", TEST_URI))
297+
assert prepared.headers["Authorization"] == f"Bearer {TEST_TOKEN}"
304298
assert "catalog" in mock_request.last_request.text
305299

306300

@@ -320,10 +314,9 @@ def test_token_with_custom_scope(rest_mock: Mocker) -> None:
320314
status_code=200,
321315
request_headers=OAUTH_TEST_HEADERS,
322316
)
323-
assert (
324-
RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS, scope=TEST_SCOPE)._session.headers["Authorization"]
325-
== f"Bearer {TEST_TOKEN}"
326-
)
317+
catalog = RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS, scope=TEST_SCOPE)
318+
prepared = catalog._session.prepare_request(Request("GET", TEST_URI))
319+
assert prepared.headers["Authorization"] == f"Bearer {TEST_TOKEN}"
327320
assert TEST_SCOPE in mock_request.last_request.text
328321

329322

@@ -343,14 +336,9 @@ def test_token_200_w_oauth2_server_uri(rest_mock: Mocker) -> None:
343336
status_code=200,
344337
request_headers=OAUTH_TEST_HEADERS,
345338
)
346-
# pylint: disable=W0212
347-
assert (
348-
RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS, **{OAUTH2_SERVER_URI: OAUTH2_SERVER_URI})._session.headers[
349-
"Authorization"
350-
]
351-
== f"Bearer {TEST_TOKEN}"
352-
)
353-
# pylint: enable=W0212
339+
catalog = RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS, **{OAUTH2_SERVER_URI: TEST_OAUTH2_SERVER_URI})
340+
prepared = catalog._session.prepare_request(Request("GET", TEST_URI))
341+
assert prepared.headers["Authorization"] == f"Bearer {TEST_TOKEN}"
354342

355343

356344
@pytest.mark.filterwarnings(
@@ -377,7 +365,8 @@ def test_config_200(requests_mock: Mocker) -> None:
377365
RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS, warehouse="s3://some-bucket")
378366

379367
assert requests_mock.called
380-
assert requests_mock.call_count == 2
368+
# The token is fetched for the config request, and again for the catalog session
369+
assert requests_mock.call_count == 3
381370

382371
history = requests_mock.request_history
383372
assert history[1].method == "GET"
@@ -2904,7 +2893,10 @@ def test_auth_header(rest_mock: Mocker) -> None:
29042893
)
29052894

29062895
RestCatalog("rest", uri=TEST_URI, credential=TEST_CREDENTIALS, audience="", resource="", **{"header.Custom": "Value"})
2907-
assert mock_request.last_request.text == "grant_type=client_credentials&client_id=client&client_secret=secret&scope=catalog"
2896+
assert (
2897+
mock_request.last_request.text
2898+
== "grant_type=client_credentials&client_id=client&client_secret=secret_with%3Acolon&scope=catalog"
2899+
)
29082900

29092901

29102902
def test_client_version_header(rest_mock: Mocker) -> None:

‎tests/conftest.py‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,13 @@
103103

104104
from pyiceberg.io.pyarrow import PyArrowFileIO
105105

106+
# Markers for suites that run separately from the unit tests
107+
NON_UNIT_TEST_MARKERS = {"integration", "s3", "adls", "gcs", "notebook", "benchmark"}
108+
106109

107110
def pytest_collection_modifyitems(items: list[pytest.Item]) -> None:
108111
for item in items:
109-
if not any(item.iter_markers()):
112+
if not any(marker.name in NON_UNIT_TEST_MARKERS for marker in item.iter_markers()):
110113
item.add_marker("unmarked")
111114

112115

0 commit comments

Comments
 (0)