You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by as...@apache.org on 2026/04/30 14:47:59 UTC
(opendal) branch main updated: test(bindings/python): add focused behavior tests for write conditional options (#7446)
This is an automated email from the ASF dual-hosted git repository.
asukaminato0721 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 5b5a3e85e test(bindings/python): add focused behavior tests for write conditional options (#7446)
5b5a3e85e is described below
commit 5b5a3e85e5b36f067be7d69e9155cb633482f976
Author: TennyZhuang <zt...@gmail.com>
AuthorDate: Thu Apr 30 22:47:48 2026 +0800
test(bindings/python): add focused behavior tests for write conditional options (#7446)
* test(bindings/python): add focused behavior tests for write conditional options
Adds tests verifying write() accepts if_match, if_none_match, and
if_not_exists parameters for both sync and async operators.
These options were already exposed in the Python API but lacked
dedicated behavior tests.
Co-Authored-By: Claude Sonnet 4.6 <no...@anthropic.com>
* fix(bindings/python): gate write conditional tests on specific capabilities and fix line length
---------
Co-authored-by: tianyizhuang <ti...@tianyizhuangs-Mac-mini.local>
Co-authored-by: Claude Sonnet 4.6 <no...@anthropic.com>
---
bindings/python/tests/test_write_conditional.py | 75 +++++++++++++++++++++++++
1 file changed, 75 insertions(+)
diff --git a/bindings/python/tests/test_write_conditional.py b/bindings/python/tests/test_write_conditional.py
new file mode 100644
index 000000000..c2b36a180
--- /dev/null
+++ b/bindings/python/tests/test_write_conditional.py
@@ -0,0 +1,75 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from uuid import uuid4
+
+import pytest
+
+
+@pytest.mark.need_capability("write", "write_with_if_match")
+def test_write_accepts_if_match_param(service_name, operator, async_operator):
+ path = f"test_write_if_match_{uuid4()}.txt"
+ operator.write(path, b"test content", if_match="etag123")
+
+
+@pytest.mark.need_capability("write", "write_with_if_none_match")
+def test_write_accepts_if_none_match_param(
+ service_name, operator, async_operator
+):
+ path = f"test_write_if_none_match_{uuid4()}.txt"
+ operator.write(path, b"test content", if_none_match="etag456")
+
+
+@pytest.mark.need_capability("write", "write_with_if_not_exists")
+def test_write_accepts_if_not_exists_param(
+ service_name, operator, async_operator
+):
+ path = f"test_write_if_not_exists_{uuid4()}.txt"
+ operator.write(path, b"test content", if_not_exists=True)
+
+
+@pytest.mark.need_capability("write")
+def test_write_default_params_unchanged(service_name, operator, async_operator):
+ path = f"test_write_default_{uuid4()}.txt"
+ operator.write(path, b"test content")
+
+
+@pytest.mark.need_capability("write", "write_with_if_match")
+@pytest.mark.asyncio
+async def test_async_write_accepts_if_match_param(
+ service_name, operator, async_operator
+):
+ path = f"test_async_write_if_match_{uuid4()}.txt"
+ await async_operator.write(path, b"test content", if_match="etag123")
+
+
+@pytest.mark.need_capability("write", "write_with_if_none_match")
+@pytest.mark.asyncio
+async def test_async_write_accepts_if_none_match_param(
+ service_name, operator, async_operator
+):
+ path = f"test_async_write_if_none_match_{uuid4()}.txt"
+ await async_operator.write(path, b"test content", if_none_match="etag456")
+
+
+@pytest.mark.need_capability("write", "write_with_if_not_exists")
+@pytest.mark.asyncio
+async def test_async_write_accepts_if_not_exists_param(
+ service_name, operator, async_operator
+):
+ path = f"test_async_write_if_not_exists_{uuid4()}.txt"
+ await async_operator.write(path, b"test content", if_not_exists=True)