Skip to content

Commit 388c255

Browse files
authored
Merge pull request #1786 from mejrs/with_gil2
tests: switch to python_with_gil
2 parents 874e7e5 + 596c3ff commit 388c255

19 files changed

+1400
-1428
lines changed

src/buffer.rs

Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -663,64 +663,64 @@ mod tests {
663663

664664
#[test]
665665
fn test_bytes_buffer() {
666-
let gil = Python::acquire_gil();
667-
let py = gil.python();
668-
let bytes = py.eval("b'abcde'", None, None).unwrap();
669-
let buffer = PyBuffer::get(bytes).unwrap();
670-
assert_eq!(buffer.dimensions(), 1);
671-
assert_eq!(buffer.item_count(), 5);
672-
assert_eq!(buffer.format().to_str().unwrap(), "B");
673-
assert_eq!(buffer.shape(), [5]);
674-
// single-dimensional buffer is always contiguous
675-
assert!(buffer.is_c_contiguous());
676-
assert!(buffer.is_fortran_contiguous());
677-
678-
let slice = buffer.as_slice(py).unwrap();
679-
assert_eq!(slice.len(), 5);
680-
assert_eq!(slice[0].get(), b'a');
681-
assert_eq!(slice[2].get(), b'c');
682-
683-
assert!(buffer.copy_to_slice(py, &mut [0u8]).is_err());
684-
let mut arr = [0; 5];
685-
buffer.copy_to_slice(py, &mut arr).unwrap();
686-
assert_eq!(arr, b"abcde" as &[u8]);
687-
688-
assert!(buffer.copy_from_slice(py, &[0u8; 5]).is_err());
689-
assert_eq!(buffer.to_vec(py).unwrap(), b"abcde");
666+
Python::with_gil(|py| {
667+
let bytes = py.eval("b'abcde'", None, None).unwrap();
668+
let buffer = PyBuffer::get(bytes).unwrap();
669+
assert_eq!(buffer.dimensions(), 1);
670+
assert_eq!(buffer.item_count(), 5);
671+
assert_eq!(buffer.format().to_str().unwrap(), "B");
672+
assert_eq!(buffer.shape(), [5]);
673+
// single-dimensional buffer is always contiguous
674+
assert!(buffer.is_c_contiguous());
675+
assert!(buffer.is_fortran_contiguous());
676+
677+
let slice = buffer.as_slice(py).unwrap();
678+
assert_eq!(slice.len(), 5);
679+
assert_eq!(slice[0].get(), b'a');
680+
assert_eq!(slice[2].get(), b'c');
681+
682+
assert!(buffer.copy_to_slice(py, &mut [0u8]).is_err());
683+
let mut arr = [0; 5];
684+
buffer.copy_to_slice(py, &mut arr).unwrap();
685+
assert_eq!(arr, b"abcde" as &[u8]);
686+
687+
assert!(buffer.copy_from_slice(py, &[0u8; 5]).is_err());
688+
assert_eq!(buffer.to_vec(py).unwrap(), b"abcde");
689+
});
690690
}
691691

692692
#[allow(clippy::float_cmp)] // The test wants to ensure that no precision was lost on the Python round-trip
693693
#[test]
694694
fn test_array_buffer() {
695-
let gil = Python::acquire_gil();
696-
let py = gil.python();
697-
let array = py
698-
.import("array")
699-
.unwrap()
700-
.call_method("array", ("f", (1.0, 1.5, 2.0, 2.5)), None)
701-
.unwrap();
702-
let buffer = PyBuffer::get(array).unwrap();
703-
assert_eq!(buffer.dimensions(), 1);
704-
assert_eq!(buffer.item_count(), 4);
705-
assert_eq!(buffer.format().to_str().unwrap(), "f");
706-
assert_eq!(buffer.shape(), [4]);
707-
708-
let slice = buffer.as_slice(py).unwrap();
709-
assert_eq!(slice.len(), 4);
710-
assert_eq!(slice[0].get(), 1.0);
711-
assert_eq!(slice[3].get(), 2.5);
712-
713-
let mut_slice = buffer.as_mut_slice(py).unwrap();
714-
assert_eq!(mut_slice.len(), 4);
715-
assert_eq!(mut_slice[0].get(), 1.0);
716-
mut_slice[3].set(2.75);
717-
assert_eq!(slice[3].get(), 2.75);
718-
719-
buffer
720-
.copy_from_slice(py, &[10.0f32, 11.0, 12.0, 13.0])
721-
.unwrap();
722-
assert_eq!(slice[2].get(), 12.0);
723-
724-
assert_eq!(buffer.to_vec(py).unwrap(), [10.0, 11.0, 12.0, 13.0]);
695+
Python::with_gil(|py| {
696+
let array = py
697+
.import("array")
698+
.unwrap()
699+
.call_method("array", ("f", (1.0, 1.5, 2.0, 2.5)), None)
700+
.unwrap();
701+
let buffer = PyBuffer::get(array).unwrap();
702+
assert_eq!(buffer.dimensions(), 1);
703+
assert_eq!(buffer.item_count(), 4);
704+
assert_eq!(buffer.format().to_str().unwrap(), "f");
705+
assert_eq!(buffer.shape(), [4]);
706+
707+
let slice = buffer.as_slice(py).unwrap();
708+
assert_eq!(slice.len(), 4);
709+
assert_eq!(slice[0].get(), 1.0);
710+
assert_eq!(slice[3].get(), 2.5);
711+
712+
let mut_slice = buffer.as_mut_slice(py).unwrap();
713+
assert_eq!(mut_slice.len(), 4);
714+
assert_eq!(mut_slice[0].get(), 1.0);
715+
mut_slice[3].set(2.75);
716+
assert_eq!(slice[3].get(), 2.75);
717+
718+
buffer
719+
.copy_from_slice(py, &[10.0f32, 11.0, 12.0, 13.0])
720+
.unwrap();
721+
assert_eq!(slice[2].get(), 12.0);
722+
723+
assert_eq!(buffer.to_vec(py).unwrap(), [10.0, 11.0, 12.0, 13.0]);
724+
});
725725
}
726726
}

src/conversion.rs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -551,38 +551,38 @@ mod tests {
551551

552552
#[test]
553553
fn test_try_from() {
554-
let gil = Python::acquire_gil();
555-
let py = gil.python();
556-
let list: &PyAny = vec![3, 6, 5, 4, 7].to_object(py).into_ref(py);
557-
let dict: &PyAny = vec![("reverse", true)].into_py_dict(py).as_ref();
554+
Python::with_gil(|py| {
555+
let list: &PyAny = vec![3, 6, 5, 4, 7].to_object(py).into_ref(py);
556+
let dict: &PyAny = vec![("reverse", true)].into_py_dict(py).as_ref();
558557

559-
assert!(PyList::try_from(list).is_ok());
560-
assert!(PyDict::try_from(dict).is_ok());
558+
assert!(PyList::try_from(list).is_ok());
559+
assert!(PyDict::try_from(dict).is_ok());
561560

562-
assert!(PyAny::try_from(list).is_ok());
563-
assert!(PyAny::try_from(dict).is_ok());
561+
assert!(PyAny::try_from(list).is_ok());
562+
assert!(PyAny::try_from(dict).is_ok());
563+
});
564564
}
565565

566566
#[test]
567567
fn test_try_from_exact() {
568-
let gil = Python::acquire_gil();
569-
let py = gil.python();
570-
let list: &PyAny = vec![3, 6, 5, 4, 7].to_object(py).into_ref(py);
571-
let dict: &PyAny = vec![("reverse", true)].into_py_dict(py).as_ref();
568+
Python::with_gil(|py| {
569+
let list: &PyAny = vec![3, 6, 5, 4, 7].to_object(py).into_ref(py);
570+
let dict: &PyAny = vec![("reverse", true)].into_py_dict(py).as_ref();
572571

573-
assert!(PyList::try_from_exact(list).is_ok());
574-
assert!(PyDict::try_from_exact(dict).is_ok());
572+
assert!(PyList::try_from_exact(list).is_ok());
573+
assert!(PyDict::try_from_exact(dict).is_ok());
575574

576-
assert!(PyAny::try_from_exact(list).is_err());
577-
assert!(PyAny::try_from_exact(dict).is_err());
575+
assert!(PyAny::try_from_exact(list).is_err());
576+
assert!(PyAny::try_from_exact(dict).is_err());
577+
});
578578
}
579579

580580
#[test]
581581
fn test_try_from_unchecked() {
582-
let gil = Python::acquire_gil();
583-
let py = gil.python();
584-
let list = PyList::new(py, &[1, 2, 3]);
585-
let val = unsafe { <PyList as PyTryFrom>::try_from_unchecked(list.as_ref()) };
586-
assert_eq!(list, val);
582+
Python::with_gil(|py| {
583+
let list = PyList::new(py, &[1, 2, 3]);
584+
let val = unsafe { <PyList as PyTryFrom>::try_from_unchecked(list.as_ref()) };
585+
assert_eq!(list, val);
586+
});
587587
}
588588
}

src/err/mod.rs

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -638,14 +638,14 @@ mod tests {
638638
fn fetching_panic_exception_resumes_unwind() {
639639
use crate::panic::PanicException;
640640

641-
let gil = Python::acquire_gil();
642-
let py = gil.python();
643-
let err: PyErr = PanicException::new_err("new panic");
644-
err.restore(py);
645-
assert!(PyErr::occurred(py));
641+
Python::with_gil(|py| {
642+
let err: PyErr = PanicException::new_err("new panic");
643+
err.restore(py);
644+
assert!(PyErr::occurred(py));
646645

647-
// should resume unwind
648-
let _ = PyErr::fetch(py);
646+
// should resume unwind
647+
let _ = PyErr::fetch(py);
648+
});
649649
}
650650

651651
#[test]
@@ -657,42 +657,42 @@ mod tests {
657657
// traceback: Some(<traceback object at 0x..)"
658658
// }
659659

660-
let gil = Python::acquire_gil();
661-
let py = gil.python();
662-
let err = py
663-
.run("raise Exception('banana')", None, None)
664-
.expect_err("raising should have given us an error");
660+
Python::with_gil(|py| {
661+
let err = py
662+
.run("raise Exception('banana')", None, None)
663+
.expect_err("raising should have given us an error");
665664

666-
let debug_str = format!("{:?}", err);
667-
assert!(debug_str.starts_with("PyErr { "));
668-
assert!(debug_str.ends_with(" }"));
665+
let debug_str = format!("{:?}", err);
666+
assert!(debug_str.starts_with("PyErr { "));
667+
assert!(debug_str.ends_with(" }"));
669668

670-
// strip "PyErr { " and " }"
671-
let mut fields = debug_str["PyErr { ".len()..debug_str.len() - 2].split(", ");
669+
// strip "PyErr { " and " }"
670+
let mut fields = debug_str["PyErr { ".len()..debug_str.len() - 2].split(", ");
672671

673-
assert_eq!(fields.next().unwrap(), "type: <class 'Exception'>");
674-
if py.version_info() >= (3, 7) {
675-
assert_eq!(fields.next().unwrap(), "value: Exception('banana')");
676-
} else {
677-
// Python 3.6 and below formats the repr differently
678-
assert_eq!(fields.next().unwrap(), ("value: Exception('banana',)"));
679-
}
672+
assert_eq!(fields.next().unwrap(), "type: <class 'Exception'>");
673+
if py.version_info() >= (3, 7) {
674+
assert_eq!(fields.next().unwrap(), "value: Exception('banana')");
675+
} else {
676+
// Python 3.6 and below formats the repr differently
677+
assert_eq!(fields.next().unwrap(), ("value: Exception('banana',)"));
678+
}
680679

681-
let traceback = fields.next().unwrap();
682-
assert!(traceback.starts_with("traceback: Some(<traceback object at 0x"));
683-
assert!(traceback.ends_with(">)"));
680+
let traceback = fields.next().unwrap();
681+
assert!(traceback.starts_with("traceback: Some(<traceback object at 0x"));
682+
assert!(traceback.ends_with(">)"));
684683

685-
assert!(fields.next().is_none());
684+
assert!(fields.next().is_none());
685+
});
686686
}
687687

688688
#[test]
689689
fn err_display() {
690-
let gil = Python::acquire_gil();
691-
let py = gil.python();
692-
let err = py
693-
.run("raise Exception('banana')", None, None)
694-
.expect_err("raising should have given us an error");
695-
assert_eq!(err.to_string(), "Exception: banana");
690+
Python::with_gil(|py| {
691+
let err = py
692+
.run("raise Exception('banana')", None, None)
693+
.expect_err("raising should have given us an error");
694+
assert_eq!(err.to_string(), "Exception: banana");
695+
});
696696
}
697697

698698
#[test]

0 commit comments

Comments
 (0)