Ensure we don't go into the auto-retry if the runner doesn't support it

For subprocess invocation, it's possible that the subprocess
runner create attempts, so we don't want the parent to
override those.

Test: unit tests
Bug: 155180527
Change-Id: I933a758118b122a9b63b4c2f0f3f69106b2fd5fc
diff --git a/src/com/android/tradefed/invoker/InvocationExecution.java b/src/com/android/tradefed/invoker/InvocationExecution.java
index 395fe6e..bd35c72 100644
--- a/src/com/android/tradefed/invoker/InvocationExecution.java
+++ b/src/com/android/tradefed/invoker/InvocationExecution.java
@@ -63,6 +63,8 @@
 import com.android.tradefed.testtype.IDeviceTest;
 import com.android.tradefed.testtype.IInvocationContextReceiver;
 import com.android.tradefed.testtype.IRemoteTest;
+import com.android.tradefed.testtype.ITestFilterReceiver;
+import com.android.tradefed.testtype.retry.IAutoRetriableTest;
 import com.android.tradefed.testtype.suite.ITestSuite;
 import com.android.tradefed.testtype.suite.ModuleListener;
 import com.android.tradefed.util.CommandResult;
@@ -585,12 +587,15 @@
                         || RetryStrategy.NO_RETRY.equals(decision.getRetryStrategy())
                         || test instanceof ITestSuite
                         // TODO: Handle auto-retry in local-sharding for non-suite
-                        || test instanceof TestsPoolPoller) {
+                        || test instanceof TestsPoolPoller
+                        // If test doesn't support auto-retry
+                        || (!(test instanceof ITestFilterReceiver)
+                                && !(test instanceof IAutoRetriableTest))) {
                     runTest(config, info, listener, test);
                     remainingTests.remove(test);
                     continue;
                 }
-
+                CLog.d("Using RetryLogSaverResultForwarder to forward results.");
                 ModuleListener mainGranularRunListener = new ModuleListener(null);
                 RetryLogSaverResultForwarder runListener =
                         initializeListeners(config, listener, mainGranularRunListener);