aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/skylark
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2017-03-02 14:39:52 +0000
committerGravatar Yue Gan <yueg@google.com>2017-03-03 10:35:22 +0000
commit654717f6f2e9e626b60debc657d3a8723f057b97 (patch)
tree007f6f91cf0c67098be1900cc97550c5c7d912f0 /src/test/java/com/google/devtools/build/lib/skylark
parent83514648f2e4e63dcd039e976f3b5d47552e0383 (diff)
Refactor implementation of native and Skylark declared providers.
1) Instead of having a single class for both, split them into {Skylark,Native}ClassObjectConstructors 2) Allow NativeClassObjectConstructors to customize their instantiation logic. 3) Prepare ClassObjectConstructor.Key to be serializable. -- PiperOrigin-RevId: 148997553 MOS_MIGRATED_REVID=148997553
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skylark')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java13
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java8
3 files changed, 14 insertions, 12 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
index bf366466ab..14f783e915 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
@@ -36,6 +36,7 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.AttributeContainer;
import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
+import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.packages.SkylarkClassObjectConstructor;
import com.google.devtools.build.lib.rules.test.InstrumentedFilesProvider;
@@ -932,7 +933,7 @@ public class SkylarkIntegrationTest extends BuildViewTestCase {
);
ConfiguredTarget configuredTarget = getConfiguredTarget("//test:r");
- SkylarkClassObjectConstructor.Key key = new SkylarkClassObjectConstructor.SkylarkKey(
+ ClassObjectConstructor.Key key = new SkylarkClassObjectConstructor.SkylarkKey(
Label.create(configuredTarget.getLabel().getPackageIdentifier(), "extension.bzl"),
"my_provider");
SkylarkProviders skylarkProviders = configuredTarget.getProvider(SkylarkProviders.class);
@@ -959,7 +960,7 @@ public class SkylarkIntegrationTest extends BuildViewTestCase {
);
ConfiguredTarget configuredTarget = getConfiguredTarget("//test:r");
- SkylarkClassObjectConstructor.Key key = new SkylarkClassObjectConstructor.SkylarkKey(
+ ClassObjectConstructor.Key key = new SkylarkClassObjectConstructor.SkylarkKey(
Label.create(configuredTarget.getLabel().getPackageIdentifier(), "extension.bzl"),
"my_provider");
SkylarkProviders skylarkProviders = configuredTarget.getProvider(SkylarkProviders.class);
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 9067b89952..2966fc8fd7 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
@@ -32,6 +32,7 @@ import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
+import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.PredicateWithMessage;
import com.google.devtools.build.lib.packages.RequiredProviders;
import com.google.devtools.build.lib.packages.RuleClass;
@@ -1039,17 +1040,17 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase {
}
private static SkylarkClassObject makeStruct(String field, Object value) {
- return SkylarkClassObjectConstructor.STRUCT.create(
+ return NativeClassObjectConstructor.STRUCT.create(
ImmutableMap.of(field, value),
"no field '%'");
}
private static SkylarkClassObject makeBigStruct(Environment env) {
// struct(a=[struct(x={1:1}), ()], b=(), c={2:2})
- return SkylarkClassObjectConstructor.STRUCT.create(
+ return NativeClassObjectConstructor.STRUCT.create(
ImmutableMap.<String, Object>of(
"a", MutableList.<Object>of(env,
- SkylarkClassObjectConstructor.STRUCT.create(ImmutableMap.<String, Object>of(
+ NativeClassObjectConstructor.STRUCT.create(ImmutableMap.<String, Object>of(
"x", SkylarkDict.<Object, Object>of(env, 1, 1)),
"no field '%s'"),
Tuple.of()),
@@ -1138,10 +1139,10 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase {
"data = struct(x = 1)"
);
SkylarkClassObject data = (SkylarkClassObject) lookup("data");
- assertThat(SkylarkClassObjectConstructor.STRUCT.isExported()).isTrue();
- assertThat(data.getConstructor()).isEqualTo(SkylarkClassObjectConstructor.STRUCT);
+ assertThat(NativeClassObjectConstructor.STRUCT.isExported()).isTrue();
+ assertThat(data.getConstructor()).isEqualTo(NativeClassObjectConstructor.STRUCT);
assertThat(data.getConstructor().getKey())
- .isEqualTo(SkylarkClassObjectConstructor.STRUCT.getKey());
+ .isEqualTo(NativeClassObjectConstructor.STRUCT.getKey());
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index 36bdd8d696..343e03cac5 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -886,7 +886,7 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase {
Object provider = configuredTarget.getProvider(SkylarkProviders.class).getValue("default");
assertThat(provider).isInstanceOf(SkylarkClassObject.class);
SkylarkClassObject defaultProvider = (SkylarkClassObject) provider;
- assertThat((defaultProvider).getConstructor().getKey().getExportedName())
+ assertThat((defaultProvider).getConstructor().getPrintableName())
.isEqualTo("default_provider");
// Test .runfiles
@@ -936,7 +936,7 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase {
Object provider = configuredTarget.getProvider(SkylarkProviders.class).getValue("default");
assertThat(provider).isInstanceOf(SkylarkClassObject.class);
SkylarkClassObject defaultProvider = (SkylarkClassObject) provider;
- assertThat((defaultProvider).getConstructor().getKey().getExportedName())
+ assertThat((defaultProvider).getConstructor().getPrintableName())
.isEqualTo("default_provider");
}
@@ -1008,7 +1008,7 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase {
ConfiguredTarget configuredTarget = getConfiguredTarget("//test:my_rule");
Object provider = configuredTarget.getProvider(SkylarkProviders.class).getValue("proxy");
assertThat(provider).isInstanceOf(SkylarkClassObject.class);
- assertThat(((SkylarkClassObject) provider).getConstructor().getKey().getExportedName())
+ assertThat(((SkylarkClassObject) provider).getConstructor().getPrintableName())
.isEqualTo("foo_provider");
}
@@ -1054,7 +1054,7 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase {
ConfiguredTarget configuredTarget = getConfiguredTarget("//test:my_rule");
Object provider = configuredTarget.getProvider(SkylarkProviders.class).getValue("proxy");
assertThat(provider).isInstanceOf(SkylarkClassObject.class);
- assertThat(((SkylarkClassObject) provider).getConstructor().getKey().getExportedName())
+ assertThat(((SkylarkClassObject) provider).getConstructor().getPrintableName())
.isEqualTo("foo_provider");
}