diff options
6 files changed, 102 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index 8b04b5e418..af26c284c0 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD @@ -63,6 +63,7 @@ filegroup( "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java:srcs", "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform:srcs", "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository:srcs", + "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test:srcs", "//src/main/java/com/google/devtools/build/lib/skylarkdebug/module:srcs", "//src/main/java/com/google/devtools/build/lib/skylarkdebug/proto:srcs", "//src/main/java/com/google/devtools/build/lib/skylarkdebug/server:srcs", @@ -577,6 +578,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/shell", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi", + "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java index 63c3abf0a4..f8aa3b4299 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java @@ -17,7 +17,7 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.packages.NativeProvider; -import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkbuildapi.test.ExecutionInfoApi; import java.util.Map; /** @@ -25,7 +25,7 @@ import java.util.Map; * tests). */ @Immutable -public final class ExecutionInfo extends NativeInfo { +public final class ExecutionInfo extends NativeInfo implements ExecutionInfoApi { /** Skylark constructor and identifier for ExecutionInfo. */ public static final NativeProvider<ExecutionInfo> PROVIDER = @@ -43,11 +43,7 @@ public final class ExecutionInfo extends NativeInfo { * platforms, etc. Rule tags, such as "requires-XXX", may also be added * as keys to the map. */ - @SkylarkCallable( - name = "requirements", - doc = "A dict indicating special execution requirements, such as hardware platforms.", - structField = true - ) + @Override public ImmutableMap<String, String> getExecutionInfo() { return executionInfo; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java index 858f46adeb..b197ba4c2a 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java @@ -18,12 +18,12 @@ import com.google.common.base.Preconditions; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.packages.NativeProvider; -import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkbuildapi.test.TestEnvironmentInfoApi; import java.util.Map; /** Provider containing any additional environment variables for use in the test action. */ @Immutable -public final class TestEnvironmentInfo extends NativeInfo { +public final class TestEnvironmentInfo extends NativeInfo implements TestEnvironmentInfoApi { /** Skylark constructor and identifier for TestEnvironmentInfo. */ public static final NativeProvider<TestEnvironmentInfo> PROVIDER = @@ -41,11 +41,7 @@ public final class TestEnvironmentInfo extends NativeInfo { /** * Returns environment variables which should be set on the test action. */ - @SkylarkCallable( - name = "environment", - doc = "A dict containing environment variables which should be set on the test action.", - structField = true - ) + @Override public Map<String, String> getEnvironment() { return environment; } diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/BUILD b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/BUILD new file mode 100644 index 0000000000..a8d8e947de --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/BUILD @@ -0,0 +1,27 @@ +# Description: +# This package contains interfaces representing the skylark "build API" +# (but not the implementation of that API). Ultimately, this package +# may be broken out of the Bazel package hierarchy to be standalone. +# Thus, this package should not depend on Bazel-specific packages (only +# those which contain pure-Skylark concepts, such as the interpreter or +# annotation interfaces). + +package(default_visibility = ["//src:__subpackages__"]) + +licenses(["notice"]) # Apache 2.0 + +filegroup( + name = "srcs", + srcs = glob(["**"]), +) + +java_library( + name = "test", + srcs = glob(["*.java"]), + deps = [ + "//src/main/java/com/google/devtools/build/lib:skylarkinterface", + "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi", + "//third_party:guava", + "//third_party:jsr305", + ], +) diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/ExecutionInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/ExecutionInfoApi.java new file mode 100644 index 0000000000..25d2919e06 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/ExecutionInfoApi.java @@ -0,0 +1,35 @@ +// Copyright 2018 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.skylarkbuildapi.test; + +import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.skylarkbuildapi.StructApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; + +/** + * This provider can be implemented by rules which need special environments to run in (especially + * tests). + */ +@SkylarkModule(name = "ExecutionInfo", doc = "", documented = false) +public interface ExecutionInfoApi extends StructApi { + + @SkylarkCallable( + name = "requirements", + doc = "A dict indicating special execution requirements, such as hardware platforms.", + structField = true + ) + public ImmutableMap<String, String> getExecutionInfo(); +} diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestEnvironmentInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestEnvironmentInfoApi.java new file mode 100644 index 0000000000..5724b34116 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestEnvironmentInfoApi.java @@ -0,0 +1,32 @@ +// Copyright 2018 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.skylarkbuildapi.test; + +import com.google.devtools.build.lib.skylarkbuildapi.StructApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import java.util.Map; + +/** Provider containing any additional environment variables for use in the test action. */ +@SkylarkModule(name = "TestEnvironmentInfo", doc = "", documented = false) +public interface TestEnvironmentInfoApi extends StructApi { + + @SkylarkCallable( + name = "environment", + doc = "A dict containing environment variables which should be set on the test action.", + structField = true + ) + public Map<String, String> getEnvironment(); +} |