diff --git a/java/shared/java/org/signal/libsignal/internal/FilterExceptions.java b/java/shared/java/org/signal/libsignal/internal/FilterExceptions.java index dbcaa8be..1a278ca7 100644 --- a/java/shared/java/org/signal/libsignal/internal/FilterExceptions.java +++ b/java/shared/java/org/signal/libsignal/internal/FilterExceptions.java @@ -66,8 +66,9 @@ public class FilterExceptions { } private static AssertionError reportUnexpectedException(Exception e) { - Log.e("libsignal", "Unexpected checked exception " + e.getClass(), e); - return new AssertionError(e); + String message = "Unexpected checked exception " + e.getClass(); + Log.e("libsignal", message, e); + return new AssertionError(message, e); } /** diff --git a/java/shared/test/java/org/signal/libsignal/internal/FilterExceptionsTest.java b/java/shared/test/java/org/signal/libsignal/internal/FilterExceptionsTest.java new file mode 100644 index 00000000..b00dd4dd --- /dev/null +++ b/java/shared/test/java/org/signal/libsignal/internal/FilterExceptionsTest.java @@ -0,0 +1,39 @@ +// +// Copyright 2024 Signal Messenger, LLC. +// SPDX-License-Identifier: AGPL-3.0-only +// + +package org.signal.libsignal.media; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertThrows; +import static org.signal.libsignal.internal.FilterExceptions.filterExceptions; + +import org.junit.Test; +import org.signal.libsignal.internal.FilterExceptions.ThrowingNativeVoidOperation; + +public class FilterExceptionsTest { + + private static class UnexpectedException extends Exception { + public UnexpectedException(String message) { + super(message); + } + } + + @Test + public void exceptionTextIncludesClass() { + AssertionError error = + assertThrows( + AssertionError.class, + () -> { + filterExceptions( + (ThrowingNativeVoidOperation) + () -> { + throw new UnexpectedException("not expected"); + }); + }); + + assertThat(error.getMessage(), containsString("FilterExceptionsTest$UnexpectedException")); + } +}