Skip to content

Commit 6b46daf

Browse files
committed
more tests
1 parent 1e30e84 commit 6b46daf

File tree

1 file changed

+33
-21
lines changed

1 file changed

+33
-21
lines changed

src/tests.rs

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -376,9 +376,12 @@ fn test_tuple_struct_basic() {
376376

377377
#[add_meta]
378378
#[derive(n0_error::Error)]
379+
#[error(from_sources)]
379380
enum TupleEnum {
380381
#[display("io failed")]
381382
Io(#[error(source, std_err)] io::Error),
383+
#[error(transparent)]
384+
Transparent(MyError),
382385
}
383386

384387
#[test]
@@ -391,6 +394,18 @@ fn test_tuple_enum_source_and_meta() {
391394
// Std source is the inner io::Error
392395
let src = std::error::Error::source(&e).unwrap();
393396
assert_eq!(src.to_string(), "oops");
397+
398+
let err = e!(MyError::A);
399+
let err = TupleEnum::from(err);
400+
assert_eq!(format!("{err}"), "A failure");
401+
assert_eq!(format!("{err:?}"), "A failure");
402+
n0_error::set_backtrace_enabled(true);
403+
let err = e!(MyError::A);
404+
let err = TupleEnum::from(err);
405+
assert_eq!(
406+
format!("{err:?}"),
407+
"TupleEnum::Transparent (src/tests.rs:404:15)\nCaused by:\n A failure (src/tests.rs:403:15)"
408+
);
394409
}
395410

396411
// TODO: turn into actual test
@@ -409,7 +424,7 @@ pub fn test_skip_transparent_errors() {
409424
#[error(std_sources)]
410425
enum ErrorB {
411426
#[error(transparent)]
412-
IoTransparent { source: io::Error },
427+
IoTransparent(io::Error),
413428
#[display("io error")]
414429
Io { source: io::Error },
415430
}
@@ -421,7 +436,7 @@ pub fn test_skip_transparent_errors() {
421436

422437
fn err_b(transparent: bool) -> Result<(), ErrorB> {
423438
if transparent {
424-
io().map_err(|err| e!(ErrorB::IoTransparent, err))
439+
io().map_err(|err| ErrorB::IoTransparent(err, meta()))
425440
} else {
426441
io().map_err(|err| e!(ErrorB::Io, err))
427442
}
@@ -433,40 +448,37 @@ pub fn test_skip_transparent_errors() {
433448

434449
let _guard = wait_sequential();
435450
set_backtrace_enabled(false);
436-
println!("no bt, transparent");
451+
println!("#### no bt, transparent");
437452
println!("{:?}", err_a(true).unwrap_err());
438453
set_backtrace_enabled(true);
439-
println!("bt, transparent");
454+
println!("#### bt, transparent");
440455
println!("{:?}", err_a(true).unwrap_err());
441-
println!("{:#?}", err_a(true).unwrap_err());
456+
442457
set_backtrace_enabled(false);
443-
println!("no bt, not transparent");
458+
println!("#### no bt, not transparent");
444459
println!("{:?}", err_a(false).unwrap_err());
460+
445461
set_backtrace_enabled(true);
446-
println!("bt, transparent");
462+
println!("#### bt, transparent");
447463
println!("{:?}", err_a(true).unwrap_err());
448-
println!("bt, not transparent");
449-
println!("{:?}", err_a(false).unwrap_err());
450-
println!("===");
451-
println!("===");
452-
println!("===");
464+
453465
set_backtrace_enabled(true);
454-
println!("bt, transparent, display alt");
466+
println!("#### bt, transparent, display alt");
455467
println!("{:#}", err_a(true).unwrap_err());
456-
println!("bt, not transparent, display alt");
468+
println!("#### bt, not transparent, display alt");
457469
println!("{:#}", err_a(false).unwrap_err());
458-
println!("bt, transparent, display");
470+
println!("#### bt, transparent, display");
459471
println!("{}", err_a(true).unwrap_err());
460-
println!("bt, not transparent, display");
472+
println!("#### bt, not transparent, display");
461473
println!("{}", err_a(false).unwrap_err());
462-
println!("===");
474+
463475
set_backtrace_enabled(false);
464-
println!("no bt, transparent, display alt");
476+
println!("#### no bt, transparent, display alt");
465477
println!("{:#}", err_a(true).unwrap_err());
466-
println!("no bt, not transparent, display alt");
478+
println!("#### no bt, not transparent, display alt");
467479
println!("{:#}", err_a(false).unwrap_err());
468-
println!("no bt, transparent, display");
480+
println!("#### no bt, transparent, display");
469481
println!("{}", err_a(true).unwrap_err());
470-
println!("no bt, not transparent, display");
482+
println!("#### no bt, not transparent, display");
471483
println!("{}", err_a(false).unwrap_err());
472484
}

0 commit comments

Comments
 (0)