Skip to content

Commit c70c7f6

Browse files
Raise ValueError on Doc.get_update() error (#118)
1 parent 2400fc5 commit c70c7f6

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/doc.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use pyo3::prelude::*;
2+
use pyo3::exceptions::PyValueError;
23
use pyo3::types::{PyBytes, PyDict, PyLong, PyList};
34
use yrs::{
45
Doc as _Doc,
@@ -87,7 +88,8 @@ impl Doc {
8788
fn get_update(&mut self, state: &PyBytes) -> PyResult<PyObject> {
8889
let txn = self.doc.transact_mut();
8990
let state: &[u8] = FromPyObject::extract(state)?;
90-
let update = txn.encode_diff_v1(&StateVector::decode_v1(&state).unwrap());
91+
let Ok(state_vector) = StateVector::decode_v1(&state) else { return Err(PyValueError::new_err("Cannot decode state")) };
92+
let update = txn.encode_diff_v1(&state_vector);
9193
drop(txn);
9294
let bytes: PyObject = Python::with_gil(|py| PyBytes::new(py, &update).into());
9395
Ok(bytes)

tests/test_doc.py

+7
Original file line numberDiff line numberDiff line change
@@ -203,3 +203,10 @@ def test_not_empty_update():
203203
events.clear()
204204
del text[5]
205205
assert events
206+
207+
208+
def test_get_update_exception():
209+
doc = Doc()
210+
with pytest.raises(ValueError) as excinfo:
211+
doc.get_update(b"\x12")
212+
assert str(excinfo.value) == "Cannot decode state"

0 commit comments

Comments
 (0)