CI improvements (#695)
	
		
	
				
					
				
			
							parent
							
								
									bb3b23e69a
								
							
						
					
					
						commit
						859904ec6a
					
				| @ -1,17 +0,0 @@ | ||||
| package com.otaliastudios.cameraview; | ||||
| 
 | ||||
| import java.lang.annotation.Retention; | ||||
| import java.lang.annotation.RetentionPolicy; | ||||
| 
 | ||||
| /** | ||||
|  * Thanks to a testInstrumentationRunnerArgument in our build file, we will not | ||||
|  * execute these tests on Travis CI. | ||||
|  * The {@link RetentionPolicy#RUNTIME} is needed! | ||||
|  * | ||||
|  * https://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner
 | ||||
|  * | ||||
|  */ | ||||
| @Retention(RetentionPolicy.RUNTIME) | ||||
| public @interface DoNotRunOnTravis { | ||||
|     String because() default ""; | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| package com.otaliastudios.cameraview.runner; | ||||
| 
 | ||||
| import java.lang.annotation.ElementType; | ||||
| import java.lang.annotation.Retention; | ||||
| import java.lang.annotation.RetentionPolicy; | ||||
| import java.lang.annotation.Target; | ||||
| 
 | ||||
| /** | ||||
|  * Like {@link androidx.test.filters.SdkSuppress}, but negative. | ||||
|  */ | ||||
| @Retention(RetentionPolicy.RUNTIME) | ||||
| @Target({ElementType.TYPE, ElementType.METHOD}) | ||||
| public @interface SdkExclude { | ||||
|     /** The minimum API level to drop (inclusive) */ | ||||
|     int minSdkVersion() default 1; | ||||
|     /** The maximum API level to drop (inclusive) */ | ||||
|     int maxSdkVersion() default Integer.MAX_VALUE; | ||||
| } | ||||
| @ -0,0 +1,46 @@ | ||||
| package com.otaliastudios.cameraview.runner; | ||||
| 
 | ||||
| 
 | ||||
| import android.os.Build; | ||||
| 
 | ||||
| import androidx.annotation.Nullable; | ||||
| import androidx.test.internal.runner.filters.ParentFilter; | ||||
| 
 | ||||
| import org.junit.runner.Description; | ||||
| 
 | ||||
| /** | ||||
|  * Filter for {@link SdkExclude}, based on | ||||
|  * {@link androidx.test.internal.runner.TestRequestBuilder}'s SdkSuppressFilter. | ||||
|  */ | ||||
| public class SdkExcludeFilter extends ParentFilter { | ||||
| 
 | ||||
|     protected boolean evaluateTest(Description description) { | ||||
|         final SdkExclude sdkSuppress = getAnnotationForTest(description); | ||||
|         if (sdkSuppress != null) { | ||||
|             if (Build.VERSION.SDK_INT >= sdkSuppress.minSdkVersion() | ||||
|                     && Build.VERSION.SDK_INT <= sdkSuppress.maxSdkVersion()) { | ||||
|                 return false; // exclude the test
 | ||||
|             } | ||||
|             return true; // run the test
 | ||||
|         } | ||||
|         return true; // no annotation, run the test
 | ||||
|     } | ||||
| 
 | ||||
|     @Nullable | ||||
|     private SdkExclude getAnnotationForTest(Description description) { | ||||
|         final SdkExclude s = description.getAnnotation(SdkExclude.class); | ||||
|         if (s != null) { | ||||
|             return s; | ||||
|         } | ||||
|         final Class<?> testClass = description.getTestClass(); | ||||
|         if (testClass != null) { | ||||
|             return testClass.getAnnotation(SdkExclude.class); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String describe() { | ||||
|         return "Skip tests annotated with SdkExclude"; | ||||
|     } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue