From b60e2a8eb562846221738d613e7dfefc0b21205c Mon Sep 17 00:00:00 2001 From: Matthew Maurer Date: Tue, 23 Nov 2021 22:46:16 +0000 Subject: Support RUST_BACKTRACE in test_fmt Setting `RUST_BACKTRACE` when running tests is useful so that the logs will contain backtraces when a test fails. `anyhow` uses this environment variable as well when formatting its errors. `test_fmt` currently tests that formatting is an exact match, so adding a trailing backtrace causes them to fail. This patch checks that the formatted error *starts with* the intended result, thus allowing it to pass when a backtrace is appended. Test: atest --host anyhow_host_test_tests_test_fmt w/RUST_BACKTRACE=full Bug: 193841423 Bug: 209711241 Change-Id: If52791f53e0deefea815c24cc4f7695201de7d79 --- ...pport-RUST_BACKTRACE-settings-in-test_fmt.patch | 64 ++++++++++++++++++++++ tests/test_fmt.rs | 20 +++---- 2 files changed, 74 insertions(+), 10 deletions(-) create mode 100644 patches/0001-Support-RUST_BACKTRACE-settings-in-test_fmt.patch diff --git a/patches/0001-Support-RUST_BACKTRACE-settings-in-test_fmt.patch b/patches/0001-Support-RUST_BACKTRACE-settings-in-test_fmt.patch new file mode 100644 index 0000000..b577c41 --- /dev/null +++ b/patches/0001-Support-RUST_BACKTRACE-settings-in-test_fmt.patch @@ -0,0 +1,64 @@ +From 7a58c3792b5f844514036b1f098eda228ba0ab8f Mon Sep 17 00:00:00 2001 +From: Matthew Maurer +Date: Tue, 23 Nov 2021 22:39:07 +0000 +Subject: [PATCH] Support RUST_BACKTRACE settings in test_fmt + +Setting `RUST_BACKTRACE` when running tests is useful so that the logs +will contain backtraces when a test fails. `anyhow` uses this +environment variable as well when formatting its errors. `test_fmt` +currently tests that formatting is an exact match, so adding a trailing +backtrace causes them to fail. + +This patch checks that the formatted error *starts with* the intended +result, thus allowing it to pass when a backtrace is appended. + +Change-Id: I7ea8bcded841558d845f0cba4a92a2339a6db3f5 +--- + tests/test_fmt.rs | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/tests/test_fmt.rs b/tests/test_fmt.rs +index cc49291..5703ebb 100644 +--- a/tests/test_fmt.rs ++++ b/tests/test_fmt.rs +@@ -68,27 +68,27 @@ Error { + + #[test] + fn test_display() { +- assert_eq!("g failed", h().unwrap_err().to_string()); ++ assert!(h().unwrap_err().to_string().starts_with("g failed")); + } + + #[test] + fn test_altdisplay() { +- assert_eq!(EXPECTED_ALTDISPLAY_F, format!("{:#}", f().unwrap_err())); +- assert_eq!(EXPECTED_ALTDISPLAY_G, format!("{:#}", g().unwrap_err())); +- assert_eq!(EXPECTED_ALTDISPLAY_H, format!("{:#}", h().unwrap_err())); ++ assert!(format!("{:#}", f().unwrap_err()).starts_with(EXPECTED_ALTDISPLAY_F)); ++ assert!(format!("{:#}", g().unwrap_err()).starts_with(EXPECTED_ALTDISPLAY_G)); ++ assert!(format!("{:#}", h().unwrap_err()).starts_with(EXPECTED_ALTDISPLAY_H)); + } + + #[test] + #[cfg_attr(not(backtrace), ignore)] + fn test_debug() { +- assert_eq!(EXPECTED_DEBUG_F, format!("{:?}", f().unwrap_err())); +- assert_eq!(EXPECTED_DEBUG_G, format!("{:?}", g().unwrap_err())); +- assert_eq!(EXPECTED_DEBUG_H, format!("{:?}", h().unwrap_err())); ++ assert!(format!("{:?}", f().unwrap_err()).starts_with(EXPECTED_DEBUG_F)); ++ assert!(format!("{:?}", g().unwrap_err()).starts_with(EXPECTED_DEBUG_G)); ++ assert!(format!("{:?}", h().unwrap_err()).starts_with(EXPECTED_DEBUG_H)); + } + + #[test] + fn test_altdebug() { +- assert_eq!(EXPECTED_ALTDEBUG_F, format!("{:#?}", f().unwrap_err())); +- assert_eq!(EXPECTED_ALTDEBUG_G, format!("{:#?}", g().unwrap_err())); +- assert_eq!(EXPECTED_ALTDEBUG_H, format!("{:#?}", h().unwrap_err())); ++ assert!(format!("{:#?}", f().unwrap_err()).starts_with(EXPECTED_ALTDEBUG_F)); ++ assert!(format!("{:#?}", g().unwrap_err()).starts_with(EXPECTED_ALTDEBUG_G)); ++ assert!(format!("{:#?}", h().unwrap_err()).starts_with(EXPECTED_ALTDEBUG_H)); + } +-- +2.34.0.rc2.393.gf8c9666880-goog + diff --git a/tests/test_fmt.rs b/tests/test_fmt.rs index cc49291..5703ebb 100644 --- a/tests/test_fmt.rs +++ b/tests/test_fmt.rs @@ -68,27 +68,27 @@ Error { #[test] fn test_display() { - assert_eq!("g failed", h().unwrap_err().to_string()); + assert!(h().unwrap_err().to_string().starts_with("g failed")); } #[test] fn test_altdisplay() { - assert_eq!(EXPECTED_ALTDISPLAY_F, format!("{:#}", f().unwrap_err())); - assert_eq!(EXPECTED_ALTDISPLAY_G, format!("{:#}", g().unwrap_err())); - assert_eq!(EXPECTED_ALTDISPLAY_H, format!("{:#}", h().unwrap_err())); + assert!(format!("{:#}", f().unwrap_err()).starts_with(EXPECTED_ALTDISPLAY_F)); + assert!(format!("{:#}", g().unwrap_err()).starts_with(EXPECTED_ALTDISPLAY_G)); + assert!(format!("{:#}", h().unwrap_err()).starts_with(EXPECTED_ALTDISPLAY_H)); } #[test] #[cfg_attr(not(backtrace), ignore)] fn test_debug() { - assert_eq!(EXPECTED_DEBUG_F, format!("{:?}", f().unwrap_err())); - assert_eq!(EXPECTED_DEBUG_G, format!("{:?}", g().unwrap_err())); - assert_eq!(EXPECTED_DEBUG_H, format!("{:?}", h().unwrap_err())); + assert!(format!("{:?}", f().unwrap_err()).starts_with(EXPECTED_DEBUG_F)); + assert!(format!("{:?}", g().unwrap_err()).starts_with(EXPECTED_DEBUG_G)); + assert!(format!("{:?}", h().unwrap_err()).starts_with(EXPECTED_DEBUG_H)); } #[test] fn test_altdebug() { - assert_eq!(EXPECTED_ALTDEBUG_F, format!("{:#?}", f().unwrap_err())); - assert_eq!(EXPECTED_ALTDEBUG_G, format!("{:#?}", g().unwrap_err())); - assert_eq!(EXPECTED_ALTDEBUG_H, format!("{:#?}", h().unwrap_err())); + assert!(format!("{:#?}", f().unwrap_err()).starts_with(EXPECTED_ALTDEBUG_F)); + assert!(format!("{:#?}", g().unwrap_err()).starts_with(EXPECTED_ALTDEBUG_G)); + assert!(format!("{:#?}", h().unwrap_err()).starts_with(EXPECTED_ALTDEBUG_H)); } -- cgit v1.2.3