Add the ExecGroup object and `exec_group(toolchains = [], exec_compatible_with = [])` to Starlark.
ExecGroup constructor doesn't do a whole lot yet, just gets and stores the inputs.
PiperOrigin-RevId: 303969136
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index d22076b..b15fc6d 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -33,6 +33,7 @@
import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.BuildType;
+import com.google.devtools.build.lib.packages.ExecGroup;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.PredicateWithMessage;
import com.google.devtools.build.lib.packages.RequiredProviders;
@@ -1791,4 +1792,22 @@
assertThat(lookup("p")).isEqualTo("Provider");
assertThat(lookup("s")).isEqualTo("struct");
}
+
+ @Test
+ public void testCreateExecGroup() throws Exception {
+ setSkylarkSemanticsOptions("--experimental_exec_groups=true");
+ reset();
+
+ scratch.file("test/BUILD", "toolchain_type(name = 'my_toolchain_type')");
+ evalAndExport(
+ "group = exec_group(",
+ " toolchains=['//test:my_toolchain_type'],",
+ " exec_compatible_with=['//constraint:cv1', '//constraint:cv2'],",
+ ")");
+ ExecGroup group = ((ExecGroup) lookup("group"));
+ assertThat(group.getRequiredToolchains())
+ .containsExactly(makeLabel("//test:my_toolchain_type"));
+ assertThat(group.getExecutionPlatformConstraints())
+ .containsExactly(makeLabel("//constraint:cv1"), makeLabel("//constraint:cv2"));
+ }
}