| use cfg_if::cfg_if; |
| use openssl::error::Error; |
| |
| openssl_errors::openssl_errors! { |
| library Test("test library") { |
| functions { |
| FOO("function foo"); |
| BAR("function bar"); |
| } |
| |
| reasons { |
| NO_MILK("out of milk"); |
| NO_BACON("out of bacon"); |
| } |
| } |
| } |
| |
| #[test] |
| fn basic() { |
| openssl_errors::put_error!(Test::FOO, Test::NO_MILK); |
| |
| let error = Error::get().unwrap(); |
| assert_eq!(error.library().unwrap(), "test library"); |
| assert_eq!(error.function().unwrap(), "function foo"); |
| assert_eq!(error.reason().unwrap(), "out of milk"); |
| // Replace Windows `\` separators with `/` |
| assert_eq!( |
| error.file().replace(r"\", "/"), |
| "openssl-errors/tests/test.rs" |
| ); |
| assert_eq!(error.line(), line!() - 11); |
| cfg_if! { |
| if #[cfg(ossl300)] { |
| // https://github.com/openssl/openssl/issues/12530 |
| assert!(error.data() == None || error.data() == Some("")); |
| } else { |
| assert_eq!(error.data(), None); |
| } |
| } |
| } |
| |
| #[test] |
| fn static_data() { |
| openssl_errors::put_error!(Test::BAR, Test::NO_BACON, "foobar {{}}"); |
| |
| let error = Error::get().unwrap(); |
| assert_eq!(error.library().unwrap(), "test library"); |
| assert_eq!(error.function().unwrap(), "function bar"); |
| assert_eq!(error.reason().unwrap(), "out of bacon"); |
| // Replace Windows `\` separators with `/` |
| assert_eq!( |
| error.file().replace(r"\", "/"), |
| "openssl-errors/tests/test.rs" |
| ); |
| assert_eq!(error.line(), line!() - 11); |
| assert_eq!(error.data(), Some("foobar {}")); |
| } |
| |
| #[test] |
| fn dynamic_data() { |
| openssl_errors::put_error!(Test::BAR, Test::NO_MILK, "hello {}", "world"); |
| |
| let error = Error::get().unwrap(); |
| assert_eq!(error.library().unwrap(), "test library"); |
| assert_eq!(error.function().unwrap(), "function bar"); |
| assert_eq!(error.reason().unwrap(), "out of milk"); |
| // Replace Windows `\` separators with `/` |
| assert_eq!( |
| error.file().replace(r"\", "/"), |
| "openssl-errors/tests/test.rs" |
| ); |
| assert_eq!(error.line(), line!() - 11); |
| assert_eq!(error.data(), Some("hello world")); |
| } |