From 10f295eae7099addd566235a2da25c9b19b34770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Va=C5=99e=C4=8Dka?= Date: Sun, 21 Apr 2024 21:28:11 +0200 Subject: [PATCH 1/2] Evaluate TestRequestBuilder.CustomFilters also on class, not just on test. --- .../internal/runner/TestRequestBuilder.java | 9 +++ .../runner/TestRequestBuilderTest.java | 62 +++++++++++++++++++ 2 files changed, 71 insertions(+) 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 f837e2946..1c13bf814 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 @@ -243,6 +243,15 @@ static Suite createSuite(List runners) { } private static class CustomFilters extends AbstractFilter { + + @Override + public boolean shouldRun(Description description) { + if (description.isSuite() && !evaluateTest(description)) { + return false; + } + return super.shouldRun(description); + } + @Override protected boolean evaluateTest(Description description) { Collection allAnnotations = description.getAnnotations(); diff --git a/runner/android_junit_runner/javatests/androidx/test/internal/runner/TestRequestBuilderTest.java b/runner/android_junit_runner/javatests/androidx/test/internal/runner/TestRequestBuilderTest.java index 61b13ba40..62d61b04b 100644 --- a/runner/android_junit_runner/javatests/androidx/test/internal/runner/TestRequestBuilderTest.java +++ b/runner/android_junit_runner/javatests/androidx/test/internal/runner/TestRequestBuilderTest.java @@ -227,6 +227,50 @@ public String describe() { } } + @SampleCustomAnnotationOnClass(runTests = true) + public static class SampleCustomFilterOnClassRunTestsTestClass { + @Test + public void testOneRun() {} + + @Test + public void testTwoRun() {} + } + + @SampleCustomAnnotationOnClass(runTests = false) + public static class SampleCustomFilterOnClassSkipTestsTestClass { + @Test + public void testOneSkip() {} + + @Test + public void testTwoSkip() {} + } + + public static class SampleCustomFilterOnClass extends AbstractFilter { + public SampleCustomFilterOnClass() {} + + @Override + public boolean shouldRun(Description description) { + return evaluateTest(description); + } + + @Override + protected boolean evaluateTest(Description description) { + return description.getAnnotation(SampleCustomAnnotationOnClass.class).runTests(); + } + + @Override + public String describe() { + return "skip all tests in class if runTests is false"; + } + } + + @Retention(RetentionPolicy.RUNTIME) + @Target({ElementType.TYPE}) + @CustomFilter(filterClass = SampleCustomFilterOnClass.class) + public @interface SampleCustomAnnotationOnClass { + boolean runTests() default true; + } + @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) @CustomFilter(filterClass = SampleCustomFilter.class) @@ -971,6 +1015,24 @@ public void testCustomFilter() { Assert.assertEquals(1, result.getRunCount()); } + /** Test that {@link CustomFilter} filters the class as appropriate */ + @Test + public void testCustomFilterAnnotation_onClass_runTests() { + Request request = builder.addTestClass(SampleCustomFilterOnClassRunTestsTestClass.class.getName()).build(); + JUnitCore testRunner = new JUnitCore(); + Result result = testRunner.run(request); + Assert.assertEquals(2, result.getRunCount()); + } + + /** Test that {@link CustomFilter} filters the class as appropriate */ + @Test + public void testCustomFilterAnnotation_onClass_skipTests() { + Request request = builder.addTestClass(SampleCustomFilterOnClassSkipTestsTestClass.class.getName()).build(); + JUnitCore testRunner = new JUnitCore(); + Result result = testRunner.run(request); + Assert.assertEquals(0, result.getRunCount()); + } + /** Test that a custom RunnerBuilder is used. */ @Test public void testCustomRunnerBuilder() { From e943fc4158843bc6ebf24ad176b609219d16f985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Va=C5=99e=C4=8Dka?= Date: Wed, 1 May 2024 23:37:22 +0200 Subject: [PATCH 2/2] Changelog update --- runner/android_junit_runner/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/runner/android_junit_runner/CHANGELOG.md b/runner/android_junit_runner/CHANGELOG.md index 23a5de372..a4d2d2007 100644 --- a/runner/android_junit_runner/CHANGELOG.md +++ b/runner/android_junit_runner/CHANGELOG.md @@ -11,6 +11,8 @@ **New Features** +* Evaluate annotation with @CustomFilter on test class + **Breaking Changes** **API Changes**