Skip tests that aren't CPU-compatible with the current build.

We don't yet have a SKIPPED test status. So for now we report
"NO STATUS".

Also moved top-level constraint checking to its own file,
since its logic is getting more complicated.

PiperOrigin-RevId: 162790879
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java
index 8bbc62c..741ef98 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.buildtool;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
@@ -42,6 +43,7 @@
   private Collection<ConfiguredTarget> actualTargets;
   private Collection<ConfiguredTarget> testTargets;
   private Collection<ConfiguredTarget> successfulTargets;
+  private Collection<ConfiguredTarget> skippedTargets;
 
   public BuildResult(long startTimeMillis) {
     this.startTimeMillis = startTimeMillis;
@@ -207,6 +209,22 @@
     return successfulTargets;
   }
 
+  /**
+   * See {@link #getSkippedTargets()}.
+   */
+  void setSkippedTargets(Collection<ConfiguredTarget> skippedTargets) {
+    this.skippedTargets = skippedTargets;
+  }
+
+  /**
+   * Returns the set of targets which were skipped (Blaze didn't attempt to execute them)
+   * because they're not compatible with the build's target platform.
+   */
+  @VisibleForTesting
+  public Collection<ConfiguredTarget> getSkippedTargets() {
+    return skippedTargets;
+  }
+
   /** For debugging. */
   @Override
   public String toString() {