]> git.proxmox.com Git - cargo.git/blob - vendor/failure/tests/macro_trailing_comma.rs
New upstream version 0.33.0
[cargo.git] / vendor / failure / tests / macro_trailing_comma.rs
1 #[macro_use]
2 extern crate failure;
3
4 // NOTE:
5 //
6 // This test is in a separate file due to the fact that ensure! cannot be used
7 // from within failure.
8 //
9 // (you get: 'macro-expanded `macro_export` macros from the current crate cannot
10 // be referred to by absolute paths')
11
12 // Encloses an early-returning macro in an IIFE so that we
13 // can treat it as a Result-returning function.
14 macro_rules! wrap_early_return {
15 ($expr:expr) => {{
16 fn func() -> Result<(), failure::Error> {
17 let _ = $expr;
18
19 #[allow(unreachable_code)]
20 Ok(())
21 }
22 func().map_err(|e| e.to_string())
23 }};
24 }
25
26 #[test]
27 fn bail() {
28 assert_eq!(
29 wrap_early_return!(bail!("test")),
30 wrap_early_return!(bail!("test",)));
31 assert_eq!(
32 wrap_early_return!(bail!("test {}", 4)),
33 wrap_early_return!(bail!("test {}", 4,)));
34 }
35
36 #[test]
37 fn ensure() {
38 assert_eq!(
39 wrap_early_return!(ensure!(false, "test")),
40 wrap_early_return!(ensure!(false, "test",)));
41 assert_eq!(
42 wrap_early_return!(ensure!(false, "test {}", 4)),
43 wrap_early_return!(ensure!(false, "test {}", 4,)));
44 }
45
46 #[test]
47 fn format_err() {
48 assert_eq!(
49 format_err!("test").to_string(),
50 format_err!("test",).to_string());
51 assert_eq!(
52 format_err!("test {}", 4).to_string(),
53 format_err!("test {}", 4,).to_string());
54 }