diff --git a/runner/android_junit_runner/CHANGELOG.md b/runner/android_junit_runner/CHANGELOG.md index 43ae3fda7..5e886f303 100644 --- a/runner/android_junit_runner/CHANGELOG.md +++ b/runner/android_junit_runner/CHANGELOG.md @@ -6,6 +6,8 @@ **Bug Fixes** +* Catch LinkageError when loading annotation classes (b/536117227) + **New Features** * Make perfetto trace sections for tests more identifiable by prefixing with "test:" and using fully qualified class name. (b/204992764) diff --git a/runner/android_junit_runner/java/androidx/test/internal/runner/TestRequestBuilder.java b/runner/android_junit_runner/java/androidx/test/internal/runner/TestRequestBuilder.java index 043ab6a4f..0ed9bac6f 100644 --- a/runner/android_junit_runner/java/androidx/test/internal/runner/TestRequestBuilder.java +++ b/runner/android_junit_runner/java/androidx/test/internal/runner/TestRequestBuilder.java @@ -449,7 +449,7 @@ private void maybeAddLegacySuppressFilter() { (Class) Class.forName("android.test.suitebuilder.annotation.Suppress"); filter = filter.intersect(new AnnotationExclusionFilter(legacySuppressClass)); - } catch (ClassNotFoundException e) { + } catch (ClassNotFoundException | LinkageError e) { // ignore } } @@ -817,7 +817,7 @@ private Class loadAnnotationClass(String className) { try { Class clazz = Class.forName(className); return (Class) clazz; - } catch (ClassNotFoundException e) { + } catch (ClassNotFoundException | LinkageError e) { Log.e(TAG, String.format("Could not find annotation class: %s", className)); } catch (ClassCastException e) { Log.e(TAG, String.format("Class %s is not an annotation", className));