29 lines
774 B
Rust
29 lines
774 B
Rust
use pyo3::prelude::*;
|
|
use pyo3::types::IntoPyDict;
|
|
use pyo3::wrap_pyfunction;
|
|
use std::fs::File;
|
|
|
|
mod common;
|
|
|
|
#[pyfunction]
|
|
fn fail_to_open_file() -> PyResult<()> {
|
|
File::open("not_there.txt")?;
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_filenotfounderror() {
|
|
let gil = Python::acquire_gil();
|
|
let py = gil.python();
|
|
|
|
let fail_to_open_file = wrap_pyfunction!(fail_to_open_file)(py);
|
|
let d = [("fail_to_open_file", fail_to_open_file)].into_py_dict(py);
|
|
match py.run("fail_to_open_file()", None, Some(d)) {
|
|
Ok(()) => panic!("Call should raise a FileNotFoundError"),
|
|
Err(e) => {
|
|
py_assert!(py, e, "isinstance(e, FileNotFoundError)");
|
|
py_assert!(py, e, "'No such file or directory (os error 2)' == str(e)");
|
|
}
|
|
};
|
|
}
|