diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d83ae19..b92a6e4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,13 +10,22 @@ env: CARGO_TERM_COLOR: always jobs: - build: - + test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Build - run: cargo build --verbose - - name: Run tests - run: cargo test --verbose + - name: Install Rust + run: rustup update nightly && rustup default nightly + - name: Run Example Binary + run: (cargo run --release 2>&1 | tee ../run.log) || true + working-directory: example + - name: Check Log + run: | + grep "panicked at 'panic', example/src/main.rs:36:5" run.log + grep 'note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace' run.log + grep 'dropped: "string"' run.log + grep 'caught' run.log + grep "panicked at 'panic', example/src/main.rs:46:5" run.log + grep "panicked at 'panic on drop', example/src/main.rs:25:9" run.log + grep "thread panicked while processing panic. aborting." run.log diff --git a/example/src/main.rs b/example/src/main.rs index 24ada05..c5295a3 100644 --- a/example/src/main.rs +++ b/example/src/main.rs @@ -14,7 +14,7 @@ struct PrintOnDrop(String); impl Drop for PrintOnDrop { fn drop(&mut self) { - println!("dropped: {:?}", self.0); + eprintln!("dropped: {:?}", self.0); } } @@ -26,6 +26,7 @@ impl Drop for PanicOnDrop { } } +#[track_caller] fn foo() { panic!("panic"); } @@ -38,9 +39,9 @@ fn bar() { fn main() { let _ = unwinding::panic::catch_unwind(|| { bar(); - println!("done"); + eprintln!("done"); }); - println!("caught"); + eprintln!("caught"); let _p = PanicOnDrop; foo(); }