diff options
author | 2017-03-02 14:39:52 +0000 | |
---|---|---|
committer | 2017-03-03 10:35:22 +0000 | |
commit | 654717f6f2e9e626b60debc657d3a8723f057b97 (patch) | |
tree | 007f6f91cf0c67098be1900cc97550c5c7d912f0 /src/test/java/com/google/devtools/build/lib/skylark | |
parent | 83514648f2e4e63dcd039e976f3b5d47552e0383 (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')
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"); } |