aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java71
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/LateBoundSplitUtil.java17
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/config/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java30
5 files changed, 80 insertions, 40 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java
index b55ac0ce59..d367ceec6a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.analysis.config;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.shell.ShellUtils;
@@ -41,15 +42,17 @@ public class RunUnderConverter implements Converter<RunUnder> {
throw new OptionsParsingException("Empty command");
}
final String runUnderCommand = runUnderList.get(0);
+ ImmutableList<String> runUnderSuffix =
+ ImmutableList.copyOf(runUnderList.subList(1, runUnderList.size()));
if (runUnderCommand.startsWith("//")) {
try {
final Label runUnderLabel = Label.parseAbsolute(runUnderCommand);
- return new RunUnderLabel(input, runUnderLabel, runUnderList);
+ return new RunUnderLabel(input, runUnderLabel, runUnderSuffix);
} catch (LabelSyntaxException e) {
throw new OptionsParsingException("Not a valid label " + e.getMessage());
}
} else {
- return new RunUnderCommand(input, runUnderCommand, runUnderList);
+ return new RunUnderCommand(input, runUnderCommand, runUnderSuffix);
}
}
@@ -60,33 +63,41 @@ public class RunUnderConverter implements Converter<RunUnder> {
private final String input;
private final Label runUnderLabel;
- private final List<String> runUnderList;
+ private final ImmutableList<String> runUnderList;
- public RunUnderLabel(String input, Label runUnderLabel, List<String> runUnderList) {
+ @AutoCodec.Constructor
+ RunUnderLabel(String input, Label runUnderLabel, ImmutableList<String> runUnderList) {
this.input = input;
this.runUnderLabel = runUnderLabel;
- this.runUnderList = new ArrayList<>(runUnderList.subList(1, runUnderList.size()));
+ this.runUnderList = runUnderList;
}
- @Override public String getValue() { return input; }
- @Override public Label getLabel() { return runUnderLabel; }
- @Override public String getCommand() { return null; }
- @Override public List<String> getOptions() { return runUnderList; }
- @Override public String toString() { return input; }
-
- String getInput() {
+ @Override
+ public String getValue() {
return input;
}
- Label getRunUnderLabel() {
+ @Override
+ public Label getLabel() {
return runUnderLabel;
}
- List<String> getRunUnderList() {
+ @Override
+ public String getCommand() {
+ return null;
+ }
+
+ @Override
+ public ImmutableList<String> getOptions() {
return runUnderList;
}
@Override
+ public String toString() {
+ return input;
+ }
+
+ @Override
public boolean equals(Object other) {
if (this == other) {
return true;
@@ -113,33 +124,41 @@ public class RunUnderConverter implements Converter<RunUnder> {
private final String input;
private final String runUnderCommand;
- private final List<String> runUnderList;
+ private final ImmutableList<String> runUnderList;
- public RunUnderCommand(String input, String runUnderCommand, List<String> runUnderList) {
+ @AutoCodec.Constructor
+ RunUnderCommand(String input, String runUnderCommand, ImmutableList<String> runUnderList) {
this.input = input;
this.runUnderCommand = runUnderCommand;
- this.runUnderList = new ArrayList<>(runUnderList.subList(1, runUnderList.size()));
+ this.runUnderList = runUnderList;
}
- @Override public String getValue() { return input; }
- @Override public Label getLabel() { return null; }
- @Override public String getCommand() { return runUnderCommand; }
- @Override public List<String> getOptions() { return runUnderList; }
- @Override public String toString() { return input; }
-
- String getInput() {
+ @Override
+ public String getValue() {
return input;
}
- String getRunUnderCommand() {
+ @Override
+ public Label getLabel() {
+ return null;
+ }
+
+ @Override
+ public String getCommand() {
return runUnderCommand;
}
- List<String> getRunUnderList() {
+ @Override
+ public ImmutableList<String> getOptions() {
return runUnderList;
}
@Override
+ public String toString() {
+ return input;
+ }
+
+ @Override
public boolean equals(Object other) {
if (this == other) {
return true;
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 9e4dbf3213..5b5c0f53ce 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -752,6 +752,7 @@ java_test(
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
+ "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/lib/vfs/inmemoryfs",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/LateBoundSplitUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/LateBoundSplitUtil.java
index a721f4ee1b..0be1b97e4e 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/LateBoundSplitUtil.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/LateBoundSplitUtil.java
@@ -29,6 +29,8 @@ import com.google.devtools.build.lib.analysis.util.MockRule;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.BuildType;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.lib.util.FileTypeSet;
import com.google.devtools.common.options.Option;
@@ -39,10 +41,12 @@ import com.google.devtools.common.options.OptionEffectTag;
* Rule and configuration class definitions for testing late-bound split attributes.
*/
public class LateBoundSplitUtil {
- /**
- * A custom {@link FragmentOptions} with the option to be split.
- */
+ /** A custom {@link FragmentOptions} with the option to be split. */
+ @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public static class TestOptions extends FragmentOptions { // public for options loader
+ public static final ObjectCodec<TestOptions> CODEC =
+ new LateBoundSplitUtil_TestOptions_AutoCodec();
+
@Option(
name = "foo",
documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
@@ -64,10 +68,11 @@ public class LateBoundSplitUtil {
return ImmutableList.of(split1, split2);
};
- /**
- * The {@link BuildConfiguration.Fragment} that contains the options.
- */
+ /** The {@link BuildConfiguration.Fragment} that contains the options. */
+ @AutoCodec
static class TestFragment extends BuildConfiguration.Fragment {
+ public static final ObjectCodec<TestFragment> CODEC =
+ new LateBoundSplitUtil_TestFragment_AutoCodec();
}
/**
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/BUILD b/src/test/java/com/google/devtools/build/lib/rules/config/BUILD
index feedac96ae..b34f0065ec 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/config/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/config/BUILD
@@ -23,6 +23,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/rules/config",
+ "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/common/options",
"//src/test/java/com/google/devtools/build/lib:actions_testutil",
"//src/test/java/com/google/devtools/build/lib:analysis_testutil",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
index 4bc2d49503..cfedf7bc91 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
@@ -28,6 +28,8 @@ import com.google.devtools.build.lib.analysis.config.InvalidConfigurationExcepti
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Rule;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.testutil.TestConstants;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.common.options.Option;
@@ -45,10 +47,12 @@ import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class ConfigSettingTest extends BuildViewTestCase {
- /**
- * Test option that has its null default overridden by its fragment.
- */
+ /** Test option that has its null default overridden by its fragment. */
+ @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public static class LateBoundTestOptions extends FragmentOptions {
+ public static final ObjectCodec<LateBoundTestOptions> CODEC =
+ new ConfigSettingTest_LateBoundTestOptions_AutoCodec();
+
public LateBoundTestOptions() {}
@Option(
@@ -60,7 +64,11 @@ public class ConfigSettingTest extends BuildViewTestCase {
public String optwithDefault;
}
- private static class LateBoundTestOptionsFragment extends BuildConfiguration.Fragment {
+ @AutoCodec
+ static class LateBoundTestOptionsFragment extends BuildConfiguration.Fragment {
+ public static final ObjectCodec<LateBoundTestOptionsFragment> CODEC =
+ new ConfigSettingTest_LateBoundTestOptionsFragment_AutoCodec();
+
@Override
public Map<String, Object> lateBoundOptionDefaults() {
return ImmutableMap.<String, Object>of("opt_with_default", "overridden");
@@ -85,10 +93,12 @@ public class ConfigSettingTest extends BuildViewTestCase {
}
}
- /**
- * Test option which is private.
- */
+ /** Test option which is private. */
+ @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public static class InternalTestOptions extends FragmentOptions {
+ public static final ObjectCodec<InternalTestOptions> CODEC =
+ new ConfigSettingTest_InternalTestOptions_AutoCodec();
+
public InternalTestOptions() {}
@Option(
@@ -101,7 +111,11 @@ public class ConfigSettingTest extends BuildViewTestCase {
public String optwithDefault;
}
- private static class InternalTestOptionsFragment extends BuildConfiguration.Fragment {}
+ @AutoCodec
+ static class InternalTestOptionsFragment extends BuildConfiguration.Fragment {
+ public static final ObjectCodec<InternalTestOptionsFragment> CODEC =
+ new ConfigSettingTest_InternalTestOptionsFragment_AutoCodec();
+ }
private static class InternalTestOptionsLoader implements ConfigurationFragmentFactory {
@Override