aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google
diff options
context:
space:
mode:
authorGravatar ccalvarin <ccalvarin@google.com>2017-10-17 23:27:19 +0200
committerGravatar Jakob Buchgraber <buchgr@google.com>2017-10-18 10:28:26 +0200
commit34a9fea78f201caed8ace5c714a0cf288cb97c65 (patch)
treec3bf1099536ea9b4160c346822833ac47dd56554 /src/test/java/com/google
parent1606cf208cc5194b13ca212819371f7e4ba43a6b (diff)
Remove feature to allow expansion flags to have values.
It was added as a potential fix for --config (an expansion flag with values), but this would have required forcing the parser to know the config's expansions at parsing time, which is not currently possible. Instead, we will use the new addition of option-location tracking to make sure we expand options at a the correct place, even if the expansion is triggered after the fact. This is mostly a straight forward undoing of https://github.com/bazelbuild/bazel/commit/7c7255ec8d6da20526c2c4078c57aadaf3dd3612, except where the context has changed. Notably, implicit requirements are effectively treated like expansion flags, so special casing in OptionDescription could be removed. RELNOTES: None. PiperOrigin-RevId: 172514997
Diffstat (limited to 'src/test/java/com/google')
-rw-r--r--src/test/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansionTest.java4
-rw-r--r--src/test/java/com/google/devtools/common/options/InvocationPolicySetValueTest.java129
-rw-r--r--src/test/java/com/google/devtools/common/options/InvocationPolicyUseDefaultTest.java23
-rw-r--r--src/test/java/com/google/devtools/common/options/OptionsParserTest.java61
-rw-r--r--src/test/java/com/google/devtools/common/options/OptionsTest.java18
-rw-r--r--src/test/java/com/google/devtools/common/options/OptionsUsageTest.java55
-rw-r--r--src/test/java/com/google/devtools/common/options/TestOptions.java69
7 files changed, 17 insertions, 342 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansionTest.java b/src/test/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansionTest.java
index 8b978d0e3d..1c34878715 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansionTest.java
@@ -21,9 +21,9 @@ import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.UseDefault;
import com.google.devtools.common.options.Converters;
-import com.google.devtools.common.options.ExpansionContext;
import com.google.devtools.common.options.ExpansionFunction;
import com.google.devtools.common.options.InvocationPolicyEnforcer;
+import com.google.devtools.common.options.IsolatedOptionsData;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.OptionEffectTag;
@@ -110,7 +110,7 @@ public class AllIncompatibleChangesExpansionTest {
/** Dummy comment (linter suppression) */
public static class YExpansion implements ExpansionFunction {
@Override
- public ImmutableList<String> getExpansion(ExpansionContext context) {
+ public ImmutableList<String> getExpansion(IsolatedOptionsData optionsData) {
return ImmutableList.of("--noY");
}
}
diff --git a/src/test/java/com/google/devtools/common/options/InvocationPolicySetValueTest.java b/src/test/java/com/google/devtools/common/options/InvocationPolicySetValueTest.java
index 1bb13cfea4..c8d08cc110 100644
--- a/src/test/java/com/google/devtools/common/options/InvocationPolicySetValueTest.java
+++ b/src/test/java/com/google/devtools/common/options/InvocationPolicySetValueTest.java
@@ -262,80 +262,6 @@ public class InvocationPolicySetValueTest extends InvocationPolicyEnforcerTestBa
}
@Test
- public void testSetValueWithExpansionFunctionFlags() throws Exception {
- InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
- invocationPolicyBuilder
- .addFlagPoliciesBuilder()
- .setFlagName("test_expansion_function")
- .getSetValueBuilder()
- .addFlagValue(TestOptions.TEST_EXPANSION_FUNCTION_ACCEPTED_VALUE);
-
- InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
- // Unrelated flag, but --test_expansion_function is not set
- parser.parse("--test_string=throwaway value");
-
- // The flags that --test_expansion_function expands into should still be their default values
- TestOptions testOptions = getTestOptions();
- assertThat(testOptions.expandedD).isEqualTo(TestOptions.EXPANDED_D_DEFAULT);
-
- enforcer.enforce(parser, BUILD_COMMAND);
-
- // After policy enforcement, the flags should be the values from
- // --test_expansion_function=valueA
- testOptions = getTestOptions();
- assertThat(testOptions.expandedD).isEqualTo(TestOptions.EXPANDED_D_EXPANSION_FUNCTION_VALUE);
- }
-
- @Test
- public void testSetValueWithExpansionFunctionFlagsDefault() throws Exception {
- InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
- invocationPolicyBuilder
- .addFlagPoliciesBuilder()
- .setFlagName("test_expansion_function")
- .getSetValueBuilder();
-
- InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
- // Unrelated flag, but --test_expansion_function is not set
- parser.parse("--test_string=throwaway value");
-
- // The flags that --test_expansion_function expands into should still be their default values
- TestOptions testOptions = getTestOptions();
- assertThat(testOptions.expandedD).isEqualTo(TestOptions.EXPANDED_D_DEFAULT);
-
- try {
- enforcer.enforce(parser, BUILD_COMMAND);
- fail();
- } catch (OptionsParsingException e) {
- assertThat(e).hasMessage("Expansion value not set.");
- }
- }
-
- @Test
- public void testSetValueWithExpansionFunctionFlagsWrongValue() throws Exception {
- InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
- invocationPolicyBuilder
- .addFlagPoliciesBuilder()
- .setFlagName("test_expansion_function")
- .getSetValueBuilder()
- .addFlagValue("unknown_value");
-
- InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
- // Unrelated flag, but --test_expansion_function is not set
- parser.parse("--test_string=throwaway value");
-
- // The flags that --test_expansion_function expands into should still be their default values
- TestOptions testOptions = getTestOptions();
- assertThat(testOptions.expandedD).isEqualTo(TestOptions.EXPANDED_D_DEFAULT);
-
- try {
- enforcer.enforce(parser, BUILD_COMMAND);
- fail();
- } catch (OptionsParsingException e) {
- assertThat(e).hasMessage("Unrecognized expansion value: unknown_value");
- }
- }
-
- @Test
public void testOverridableSetValueWithExpansionFlags() throws Exception {
InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
invocationPolicyBuilder
@@ -369,33 +295,6 @@ public class InvocationPolicySetValueTest extends InvocationPolicyEnforcerTestBa
}
@Test
- public void testOverridableSetValueWithExpansionFunction() throws Exception {
- InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
- invocationPolicyBuilder
- .addFlagPoliciesBuilder()
- .setFlagName("test_expansion_function")
- .getSetValueBuilder()
- .addFlagValue(TestOptions.TEST_EXPANSION_FUNCTION_ACCEPTED_VALUE)
- .setOverridable(true);
-
- InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
- // Unrelated flag, but --test_expansion_function is not set
- parser.parse("--expanded_d=value that overrides");
-
- // The flags that --test_expansion_function expands into should still be their default values
- // except for the explicitly marked flag.
- TestOptions testOptions = getTestOptions();
- assertThat(testOptions.expandedD).isEqualTo("value that overrides");
-
- enforcer.enforce(parser, "build");
-
- // After policy enforcement, the flags should be the values from --test_expansion_function,
- // except for the user-set value, since the expansion flag was set to overridable.
- testOptions = getTestOptions();
- assertThat(testOptions.expandedD).isEqualTo("value that overrides");
- }
-
- @Test
public void testOverridableSetValueWithExpansionToRepeatingFlag() throws Exception {
InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
invocationPolicyBuilder
@@ -456,34 +355,6 @@ public class InvocationPolicySetValueTest extends InvocationPolicyEnforcerTestBa
}
@Test
- public void testNonoverridableSetValueWithExpansionFlags() throws Exception {
- InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
- invocationPolicyBuilder
- .addFlagPoliciesBuilder()
- .setFlagName("test_expansion_function")
- .getSetValueBuilder()
- .addFlagValue(TestOptions.TEST_EXPANSION_FUNCTION_ACCEPTED_VALUE)
- .setOverridable(false);
-
- InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
- // Unrelated flag, but --test_expansion_function is not set
- parser.parse("--expanded_d=value to override");
-
- // The flags that --test_expansion_function expands into should still be their default values
- // except for the explicitly marked flag.
- TestOptions testOptions = getTestOptions();
- assertThat(testOptions.expandedD).isEqualTo("value to override");
-
- enforcer.enforce(parser, "build");
-
- // After policy enforcement, the flags should be the values from --test_expansion_function,
- // including the value that the user tried to set, since the expansion flag was set
- // non-overridably.
- testOptions = getTestOptions();
- assertThat(testOptions.expandedD).isEqualTo(TestOptions.EXPANDED_D_EXPANSION_FUNCTION_VALUE);
- }
-
- @Test
public void testNonOverridableSetValueWithExpansionToRepeatingFlag() throws Exception {
InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
invocationPolicyBuilder
diff --git a/src/test/java/com/google/devtools/common/options/InvocationPolicyUseDefaultTest.java b/src/test/java/com/google/devtools/common/options/InvocationPolicyUseDefaultTest.java
index 3a41915a03..e66f7e02ce 100644
--- a/src/test/java/com/google/devtools/common/options/InvocationPolicyUseDefaultTest.java
+++ b/src/test/java/com/google/devtools/common/options/InvocationPolicyUseDefaultTest.java
@@ -14,7 +14,6 @@
package com.google.devtools.common.options;
import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.fail;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import org.junit.Test;
@@ -124,28 +123,6 @@ public class InvocationPolicyUseDefaultTest extends InvocationPolicyEnforcerTest
}
@Test
- public void testUseDefaultWithExpansionFunction() throws Exception {
- InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
- invocationPolicyBuilder
- .addFlagPoliciesBuilder()
- .setFlagName("test_expansion_function")
- .getUseDefaultBuilder();
-
- InvocationPolicyEnforcer enforcer = createOptionsPolicyEnforcer(invocationPolicyBuilder);
- parser.parse("--expanded_d=value to override");
-
- TestOptions testOptions = getTestOptions();
- assertThat(testOptions.expandedD).isEqualTo("value to override");
-
- try {
- enforcer.enforce(parser, BUILD_COMMAND);
- fail();
- } catch (OptionsParsingException e) {
- assertThat(e).hasMessage("Expansion value not set.");
- }
- }
-
- @Test
public void testUseDefaultWithExpansionFlagAndLaterOverride() throws Exception {
InvocationPolicy.Builder invocationPolicyBuilder = InvocationPolicy.newBuilder();
invocationPolicyBuilder
diff --git a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
index 7d3c244003..79fd59880f 100644
--- a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
+++ b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
@@ -38,11 +38,11 @@ import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -979,7 +979,7 @@ public class OptionsParserTest {
/** ExpFunc */
public static class ExpFunc implements ExpansionFunction {
@Override
- public ImmutableList<String> getExpansion(ExpansionContext context) {
+ public ImmutableList<String> getExpansion(IsolatedOptionsData optionsData) {
return null;
}
}
@@ -1002,41 +1002,8 @@ public class OptionsParserTest {
newOptionsParser(NullExpansionsOptions.class);
fail("Should have failed due to null expansion function result");
} catch (OptionsParser.ConstructionException e) {
- assertThat(e).hasCauseThat().isInstanceOf(IllegalStateException.class);
- }
- }
-
- /** NullExpansionOptions */
- public static class NullExpansionsWithArgumentOptions extends OptionsBase {
-
- /** ExpFunc */
- public static class ExpFunc implements ExpansionFunction {
- @Override
- public ImmutableList<String> getExpansion(ExpansionContext context) {
- return null;
- }
- }
-
- @Option(
- name = "badness",
- expansionFunction = ExpFunc.class,
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.NO_OP},
- defaultValue = "null"
- )
- public String badness;
- }
-
- @Test
- public void nullExpansionsWithArgument() throws Exception {
- try {
- // When an expansion takes a value, this exception should still happen at parse time.
- newOptionsParser(NullExpansionsWithArgumentOptions.class);
- fail("Should have failed due to null expansion function result");
- } catch (OptionsParser.ConstructionException e) {
- assertThat(e)
- .hasMessageThat()
- .isEqualTo("Error calling expansion function for option '--badness'");
+ assertThat(e).hasCauseThat().isInstanceOf(NullPointerException.class);
+ assertThat(e).hasCauseThat().hasMessageThat().contains("null value in entry");
}
}
@@ -1062,7 +1029,7 @@ public class OptionsParserTest {
/** ExpFunc */
public static class ExpFunc implements ExpansionFunction {
@Override
- public ImmutableList<String> getExpansion(ExpansionContext context) {
+ public ImmutableList<String> getExpansion(IsolatedOptionsData optionsData) {
return ImmutableList.of("--expands");
}
}
@@ -1091,14 +1058,8 @@ public class OptionsParserTest {
/** ExpFunc */
public static class ExpFunc implements ExpansionFunction {
@Override
- public ImmutableList<String> getExpansion(ExpansionContext context)
- throws OptionsParsingException {
- String value = context.getUnparsedValue();
- if (value == null) {
- throw new ExpansionNeedsValueException("No value given to 'expands_by_function'");
- }
-
- return ImmutableList.of("--underlying=pre_" + value, "--underlying=post_" + value);
+ public ImmutableList<String> getExpansion(IsolatedOptionsData optionsData) {
+ return ImmutableList.of("--underlying=pre_value", "--underlying=post_value");
}
}
@@ -1174,9 +1135,11 @@ public class OptionsParserTest {
parser.parse(
OptionPriority.PriorityCategory.COMMAND_LINE,
null,
- Arrays.asList("--expands_by_function=a", "--expands_by_function=b"));
+ Arrays.asList("--expands_by_function", "--expands_by_function"));
ExpansionMultipleOptions options = parser.getOptions(ExpansionMultipleOptions.class);
- assertThat(options.underlying).containsExactly("pre_a", "post_a", "pre_b", "post_b").inOrder();
+ assertThat(options.underlying)
+ .containsExactly("pre_value", "post_value", "pre_value", "post_value")
+ .inOrder();
}
@Test
@@ -2395,7 +2358,7 @@ public class OptionsParserTest {
}
private List<String> visitOptionsToCollectTheirNames(Predicate<OptionDefinition> predicate) {
- List<String> names = new LinkedList<>();
+ List<String> names = new ArrayList<>();
Consumer<OptionDefinition> visitor = option -> names.add(option.getOptionName());
OptionsParser parser = OptionsParser.newOptionsParser(CompletionOptions.class);
diff --git a/src/test/java/com/google/devtools/common/options/OptionsTest.java b/src/test/java/com/google/devtools/common/options/OptionsTest.java
index 49c5767a76..5aec0b26b3 100644
--- a/src/test/java/com/google/devtools/common/options/OptionsTest.java
+++ b/src/test/java/com/google/devtools/common/options/OptionsTest.java
@@ -532,22 +532,4 @@ public class OptionsTest {
Options.parse(TestOptions.class, new String[] {"--specialexp_foo", "--specialexp_bar"});
assertThat(options1.getOptions()).isEqualTo(options2.getOptions());
}
- @Test
- public void dynamicExpansionFunctionWorks() throws Exception {
- Options<TestOptions> options1 =
- Options.parse(TestOptions.class, new String[] {"--dynamicexp=foo_bar"});
- Options<TestOptions> options2 =
- Options.parse(TestOptions.class, new String[] {"--specialexp_foo", "--specialexp_bar"});
- assertThat(options1.getOptions()).isEqualTo(options2.getOptions());
- }
-
- @Test
- public void dynamicExpansionFunctionUnknowValue() throws Exception {
- try {
- Options.parse(TestOptions.class, new String[] {"--dynamicexp=foo"});
- fail("Unknown expansion argument should cause a failure.");
- } catch (OptionsParsingException e) {
- assertThat(e).hasMessage("Unexpected expansion argument: foo");
- }
- }
}
diff --git a/src/test/java/com/google/devtools/common/options/OptionsUsageTest.java b/src/test/java/com/google/devtools/common/options/OptionsUsageTest.java
index 3fa5a8602a..6f3550649b 100644
--- a/src/test/java/com/google/devtools/common/options/OptionsUsageTest.java
+++ b/src/test/java/com/google/devtools/common/options/OptionsUsageTest.java
@@ -565,61 +565,6 @@ public final class OptionsUsageTest {
}
@Test
- public void expansionFunctionOptionThatReadsUserValue_shortTerminalOutput() {
- assertThat(getTerminalUsageWithoutTags("test_expansion_function", HelpVerbosity.SHORT))
- .isEqualTo(" --test_expansion_function\n");
- assertThat(getTerminalUsageWithoutTags("test_expansion_function", HelpVerbosity.SHORT))
- .isEqualTo(getTerminalUsageWithTags("test_expansion_function", HelpVerbosity.SHORT));
- }
-
- @Test
- public void expansionFunctionOptionThatReadsUserValue_mediumTerminalOutput() {
- assertThat(getTerminalUsageWithoutTags("test_expansion_function", HelpVerbosity.MEDIUM))
- .isEqualTo(" --test_expansion_function\n");
- assertThat(getTerminalUsageWithoutTags("test_expansion_function", HelpVerbosity.MEDIUM))
- .isEqualTo(getTerminalUsageWithTags("test_expansion_function", HelpVerbosity.MEDIUM));
- }
-
- @Test
- public void expansionFunctionOptionThatReadsUserValue_longTerminalOutput() {
- assertThat(getTerminalUsageWithoutTags("test_expansion_function", HelpVerbosity.LONG))
- .isEqualTo(
- " --test_expansion_function\n"
- + " this is for testing expansion-by-function functionality.\n"
- + " Expands to unknown options.\n");
- assertThat(getTerminalUsageWithTags("test_expansion_function", HelpVerbosity.LONG))
- .isEqualTo(
- " --test_expansion_function\n"
- + " this is for testing expansion-by-function functionality.\n"
- + " Expands to unknown options.\n"
- + " Tags: no_op\n");
- }
-
- @Test
- public void expansionFunctionOptionThatReadsUserValue_htmlOutput() {
- assertThat(getHtmlUsageWithoutTags("test_expansion_function"))
- .isEqualTo(
- "<dt><code><a name=\"flag--test_expansion_function\"></a>"
- + "--test_expansion_function</code></dt>\n"
- + "<dd>\n"
- + "this is for testing expansion-by-function functionality.\n"
- + "<br/>\n"
- + "Expands to unknown options.<br/>\n"
- + "</dd>\n");
- assertThat(getHtmlUsageWithTags("test_expansion_function"))
- .isEqualTo(
- "<dt><code><a name=\"flag--test_expansion_function\"></a>"
- + "--test_expansion_function</code></dt>\n"
- + "<dd>\n"
- + "this is for testing expansion-by-function functionality.\n"
- + "<br/>\n"
- + "Expands to unknown options.<br/>\n"
- + "<br>Tags: \n"
- + "<a href=\"#effect_tag_NO_OP\"><code>no_op</code></a>"
- + "</dd>\n");
- }
-
- @Test
public void expansionFunctionOptionThatExpandsBasedOnOtherLoadedOptions_shortTerminalOutput() {
assertThat(getTerminalUsageWithoutTags("prefix_expansion", HelpVerbosity.SHORT))
.isEqualTo(" --prefix_expansion\n");
diff --git a/src/test/java/com/google/devtools/common/options/TestOptions.java b/src/test/java/com/google/devtools/common/options/TestOptions.java
index fe7b8e0729..2067b28672 100644
--- a/src/test/java/com/google/devtools/common/options/TestOptions.java
+++ b/src/test/java/com/google/devtools/common/options/TestOptions.java
@@ -237,45 +237,12 @@ public class TestOptions extends OptionsBase {
)
public String testRecursiveImplicitRequirement;
- public static final String TEST_EXPANSION_FUNCTION_ACCEPTED_VALUE = "valueA";
- public static final String EXPANDED_D_EXPANSION_FUNCTION_VALUE = "expanded valueA";
-
- /*
- * Expansion function flags
- */
-
- /** Used for testing an expansion flag that requires a value. */
- public static class TestExpansionFunction implements ExpansionFunction {
- @Override
- public ImmutableList<String> getExpansion(ExpansionContext expansionContext)
- throws OptionsParsingException {
- String value = expansionContext.getUnparsedValue();
- if (value == null) {
- throw new ExpansionNeedsValueException("Expansion value not set.");
- } else if (value.equals(TEST_EXPANSION_FUNCTION_ACCEPTED_VALUE)) {
- return ImmutableList.of("--expanded_d", EXPANDED_D_EXPANSION_FUNCTION_VALUE);
- } else {
- throw new OptionsParsingException("Unrecognized expansion value: " + value);
- }
- }
- }
-
- @Option(
- name = "test_expansion_function",
- defaultValue = "null",
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.NO_OP},
- expansionFunction = TestExpansionFunction.class,
- help = "this is for testing expansion-by-function functionality."
- )
- public Void testExpansionFunction;
-
public static final String EXPANDED_D_VOID_EXPANSION_FUNCTION_VALUE = "void expanded";
/** Used for testing an expansion flag that doesn't requires a value. */
public static class TestVoidExpansionFunction implements ExpansionFunction {
@Override
- public ImmutableList<String> getExpansion(ExpansionContext expansionContext) {
+ public ImmutableList<String> getExpansion(IsolatedOptionsData optionsData) {
return ImmutableList.of("--expanded_d", EXPANDED_D_VOID_EXPANSION_FUNCTION_VALUE);
}
}
@@ -303,9 +270,9 @@ public class TestOptions extends OptionsBase {
*/
public static class ExpansionDependsOnOtherOptionDefinitions implements ExpansionFunction {
@Override
- public ImmutableList<String> getExpansion(ExpansionContext context) {
+ public ImmutableList<String> getExpansion(IsolatedOptionsData optionsData) {
TreeSet<String> flags = new TreeSet<>();
- for (Map.Entry<String, ?> entry : context.getOptionsData().getAllOptionDefinitions()) {
+ for (Map.Entry<String, ?> entry : optionsData.getAllOptionDefinitions()) {
if (entry.getKey().startsWith("specialexp_")) {
flags.add("--" + entry.getKey());
}
@@ -324,36 +291,6 @@ public class TestOptions extends OptionsBase {
)
public Void specialExp;
- /**
- * Defines an expansion function that adapts its expansion to the value assigned to the original
- * expansion option.
- */
- public static class ExpansionDependsOnFlagValue implements ExpansionFunction {
- @Override
- public ImmutableList<String> getExpansion(ExpansionContext context)
- throws OptionsParsingException {
- String value = context.getUnparsedValue();
- if (value == null) {
- throw new ExpansionNeedsValueException("Expansion value not set.");
- }
- if (value.equals("foo_bar")) {
- return ImmutableList.<String>of("--specialexp_foo", "--specialexp_bar");
- }
-
- throw new OptionsParsingException("Unexpected expansion argument: " + value);
- }
- }
-
- @Option(
- name = "dynamicexp",
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.NO_OP},
- defaultValue = "null",
- expansionFunction = ExpansionDependsOnFlagValue.class,
- help = "Expands depending on the value provided."
- )
- public Void variableExpansion;
-
@Option(
name = "specialexp_foo",
documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,