Merge "Revert "Add `RepeatRule` back to WorkManager to avoid degrading semver."" into androidx-master-dev
diff --git a/work/workmanager/build.gradle b/work/workmanager/build.gradle
index 5d16029..1c15e53 100644
--- a/work/workmanager/build.gradle
+++ b/work/workmanager/build.gradle
@@ -77,6 +77,7 @@
androidTestImplementation(ESPRESSO_CORE)
androidTestImplementation(MOCKITO_CORE, libs.exclude_bytebuddy) // DexMaker has its own MockMaker
androidTestImplementation(DEXMAKER_MOCKITO, libs.exclude_bytebuddy) // DexMaker has its own MockMaker
+ androidTestImplementation project(':internal-testutils-runtime')
testImplementation(JUNIT)
lintPublish(project(':work:work-runtime-lint'))
}
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkManagerImplTest.java b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkManagerImplTest.java
index bbb97c2..4db00a1 100644
--- a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkManagerImplTest.java
+++ b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkManagerImplTest.java
@@ -71,6 +71,7 @@
import androidx.test.filters.MediumTest;
import androidx.test.filters.SdkSuppress;
import androidx.test.filters.SmallTest;
+import androidx.testutils.RepeatRule;
import androidx.work.BackoffPolicy;
import androidx.work.Configuration;
import androidx.work.Constraints;
@@ -94,7 +95,6 @@
import androidx.work.impl.utils.CancelWorkRunnable;
import androidx.work.impl.utils.ForceStopRunnable;
import androidx.work.impl.utils.PreferenceUtils;
-import androidx.work.impl.utils.RepeatRule;
import androidx.work.impl.utils.taskexecutor.InstantWorkTaskExecutor;
import androidx.work.impl.workers.ConstraintTrackingWorker;
import androidx.work.worker.InfiniteTestWorker;
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcherTest.java b/work/workmanager/src/androidTest/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcherTest.java
index 95b6d4c..9fc8d71 100644
--- a/work/workmanager/src/androidTest/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcherTest.java
+++ b/work/workmanager/src/androidTest/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcherTest.java
@@ -39,6 +39,7 @@
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
+import androidx.testutils.RepeatRule;
import androidx.work.Configuration;
import androidx.work.Constraints;
import androidx.work.DatabaseTest;
@@ -55,7 +56,6 @@
import androidx.work.impl.constraints.trackers.Trackers;
import androidx.work.impl.model.WorkSpec;
import androidx.work.impl.model.WorkSpecDao;
-import androidx.work.impl.utils.RepeatRule;
import androidx.work.impl.utils.SynchronousExecutor;
import androidx.work.impl.utils.taskexecutor.InstantWorkTaskExecutor;
import androidx.work.impl.utils.taskexecutor.TaskExecutor;
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/utils/RepeatRule.java b/work/workmanager/src/androidTest/java/androidx/work/impl/utils/RepeatRule.java
deleted file mode 100644
index ea74196..0000000
--- a/work/workmanager/src/androidTest/java/androidx/work/impl/utils/RepeatRule.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.work.impl.utils;
-
-import androidx.annotation.NonNull;
-
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * A {@link TestRule} which can be used to run the same test multiple times. Useful when trying
- * to debug flaky tests.
- *
- * To use this {@link TestRule} do the following. <br/><br/>
- *
- * Add the Rule to your JUnit test. <br/><br>
- * {@code
- * @Rule
- * RepeatRule mRepeatRule = new RepeatRule();
- * }
- * <br/><br>
- *
- * Add the {@link Repeat} annotation to your test case. <br/><br>
- * {@code
- * @Test
- * @Repeat(times=10)
- * public void yourTestCase() {
- *
- * }
- * }
- * <br/><br>
- */
-public class RepeatRule implements TestRule {
- @Target(ElementType.METHOD)
- @Retention(RetentionPolicy.RUNTIME)
- public @interface Repeat {
- int times();
- }
-
- public static class RepeatStatement extends Statement {
- private final int mTimes;
- private final Statement mStatement;
-
- public RepeatStatement(int times, @NonNull Statement statement) {
- mTimes = times;
- mStatement = statement;
- }
-
- @Override
- public void evaluate() throws Throwable {
- for (int i = 0; i < mTimes; i++) {
- mStatement.evaluate();
- }
- }
- }
-
- @Override
- public Statement apply(Statement base, Description description) {
- Repeat repeat = description.getAnnotation(Repeat.class);
- if (repeat != null) {
- return new RepeatStatement(repeat.times(), base);
- } else {
- return base;
- }
- }
-}