diff --git a/Lib/test/test_sqlite3/test_dbapi.py b/Lib/test/test_sqlite3/test_dbapi.py index d8772dfffba..9a95c489a31 100644 --- a/Lib/test/test_sqlite3/test_dbapi.py +++ b/Lib/test/test_sqlite3/test_dbapi.py @@ -1735,8 +1735,6 @@ def test_closed_call(self): con() class ClosedCurTests(unittest.TestCase): - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_closed(self): con = sqlite.connect(":memory:") cur = con.cursor() diff --git a/crates/stdlib/src/sqlite.rs b/crates/stdlib/src/sqlite.rs index 9fdb1716ac6..12af619dba9 100644 --- a/crates/stdlib/src/sqlite.rs +++ b/crates/stdlib/src/sqlite.rs @@ -1771,6 +1771,8 @@ mod _sqlite { script: PyUtf8StrRef, vm: &VirtualMachine, ) -> PyResult> { + let _ = zelf.clone().inner(vm)?; + let db = zelf.connection.db_lock(vm)?; db.sql_limit(script.byte_len(), vm)?; @@ -1829,19 +1831,19 @@ mod _sqlite { fn close(&self, vm: &VirtualMachine) -> PyResult<()> { // Check if __init__ was called let mut guard = self.inner.lock(); - if guard.is_none() { + + let Some(inner) = guard.as_mut() else { return Err(new_programming_error( vm, "Base Cursor.__init__ not called.".to_owned(), )); - } + }; - if let Some(inner) = guard.as_mut() { - if let Some(stmt) = &inner.statement { - stmt.lock().reset(); - } - inner.closed = true; + if let Some(stmt) = &inner.statement { + stmt.lock().reset(); } + inner.closed = true; + Ok(()) }