From af0825dd2d588e4074f84392af16f4799895f6c4 Mon Sep 17 00:00:00 2001 From: twerth Date: Tue, 26 Jun 2018 06:23:24 -0700 Subject: Add convenience methods to check for flag existence and values in command lines. RELNOTES: None PiperOrigin-RevId: 202118168 --- .../build/lib/analysis/util/BuildViewTestCase.java | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java index 704e7d1e00..fa47f7a6c3 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java @@ -163,6 +163,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @@ -2095,6 +2096,37 @@ public abstract class BuildViewTestCase extends FoundationTestCase { return directories.getExecRoot(ruleClassProvider.getRunfilesPrefix()); } + /** Returns true iff commandLine contains the option --flagName followed by arg. */ + protected static boolean containsFlag(String flagName, String arg, Iterable commandLine) { + Iterator iterator = commandLine.iterator(); + while (iterator.hasNext()) { + if (flagName.equals(iterator.next()) && iterator.hasNext() && arg.equals(iterator.next())) { + return true; + } + } + return false; + } + + /** Returns the list of arguments in commandLine that follow after --flagName. */ + protected static ImmutableList flagValue(String flagName, Iterable commandLine) { + ImmutableList.Builder resultBuilder = ImmutableList.builder(); + Iterator iterator = commandLine.iterator(); + boolean found = false; + while (iterator.hasNext()) { + String val = iterator.next(); + if (found) { + if (val.startsWith("--")) { + break; + } + resultBuilder.add(val); + } else if (flagName.equals(val)) { + found = true; + } + } + Preconditions.checkArgument(found); + return resultBuilder.build(); + } + /** Creates instances of {@link ActionExecutionContext} consistent with test case. */ public class ActionExecutionContextBuilder { private MetadataProvider actionInputFileCache = null; -- cgit v1.2.3