Misc Skylark cleanups and small features
--
MOS_MIGRATED_REVID=88224368
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTests.java b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTests.java
index 6085ba5..d235100 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTests.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTests.java
@@ -13,10 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.syntax;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
import com.google.common.base.Joiner;
import com.google.devtools.build.lib.actions.Artifact;
@@ -668,71 +665,83 @@
@Test
public void testParentWithSkylarkModule() throws Exception {
- assertTrue(SkylarkList.class.isAnnotationPresent(SkylarkModule.class));
- assertEquals(SkylarkList.class,
- EvalUtils.getParentWithSkylarkModule(SkylarkList.class));
- assertEquals(SkylarkList.class,
- EvalUtils.getParentWithSkylarkModule(SkylarkList.EMPTY_LIST.getClass()));
- assertEquals(SkylarkList.class,
- EvalUtils.getParentWithSkylarkModule(
- SkylarkList.tuple(Arrays.<Object>asList(1, 2, 3)).getClass()));
- // TODO(bazel-team): fix that!
- assertFalse(ClassObject.class.isAnnotationPresent(SkylarkModule.class));
- assertTrue(ClassObject.SkylarkClassObject.class
- .isAnnotationPresent(SkylarkModule.class));
- assertEquals(ClassObject.SkylarkClassObject.class,
- EvalUtils.getParentWithSkylarkModule(ClassObject.SkylarkClassObject.class));
- assertNull(EvalUtils.getParentWithSkylarkModule(ClassObject.class));
+ Class<?> emptyListClass = SkylarkList.EMPTY_LIST.getClass();
+ Class<?> simpleListClass = SkylarkList.list(Arrays.<Integer>asList(1, 2, 3), SkylarkType.INT)
+ .getClass();
+ Class<?> tupleClass = SkylarkList.tuple(Arrays.<Object>asList(1, "a", "b")).getClass();
+
+ assertThat(SkylarkList.class.isAnnotationPresent(SkylarkModule.class)).isTrue();
+ assertThat(EvalUtils.getParentWithSkylarkModule(SkylarkList.class))
+ .isEqualTo(SkylarkList.class);
+ assertThat(EvalUtils.getParentWithSkylarkModule(emptyListClass)).isEqualTo(SkylarkList.class);
+ assertThat(EvalUtils.getParentWithSkylarkModule(simpleListClass)).isEqualTo(SkylarkList.class);
+ // TODO(bazel-team): make a tuple not a list anymore.
+ assertThat(EvalUtils.getParentWithSkylarkModule(tupleClass)).isEqualTo(SkylarkList.class);
+
+ // TODO(bazel-team): fix that?
+ assertThat(ClassObject.class.isAnnotationPresent(SkylarkModule.class))
+ .isFalse();
+ assertThat(ClassObject.SkylarkClassObject.class.isAnnotationPresent(SkylarkModule.class))
+ .isTrue();
+ assertThat(EvalUtils.getParentWithSkylarkModule(ClassObject.SkylarkClassObject.class)
+ == ClassObject.SkylarkClassObject.class).isTrue();
+ assertThat(EvalUtils.getParentWithSkylarkModule(ClassObject.class))
+ .isNull();
}
@Test
public void testSkylarkTypeEquivalence() throws Exception {
// All subclasses of SkylarkList are made equivalent
- assertEquals(SkylarkType.LIST, SkylarkType.of(SkylarkList.class));
- assertEquals(SkylarkType.LIST, SkylarkType.of(SkylarkList.EMPTY_LIST.getClass()));
- assertEquals(SkylarkType.LIST, SkylarkType.of(
- SkylarkList.list(Arrays.<Object>asList(1, 2, 3), SkylarkType.INT).getClass()));
+ Class<?> emptyListClass = SkylarkList.EMPTY_LIST.getClass();
+ Class<?> simpleListClass = SkylarkList.list(Arrays.<Integer>asList(1, 2, 3), SkylarkType.INT)
+ .getClass();
+ Class<?> tupleClass = SkylarkList.tuple(Arrays.<Object>asList(1, "a", "b")).getClass();
+
+ assertThat(SkylarkType.of(SkylarkList.class)).isEqualTo(SkylarkType.LIST);
+ assertThat(SkylarkType.of(emptyListClass)).isEqualTo(SkylarkType.LIST);
+ assertThat(SkylarkType.of(simpleListClass)).isEqualTo(SkylarkType.LIST);
// TODO(bazel-team): make a tuple not a list anymore.
- assertEquals(SkylarkType.LIST, SkylarkType.of(
- SkylarkList.tuple(Arrays.<Object>asList(1, "a", "b")).getClass()));
+ assertThat(SkylarkType.of(tupleClass)).isEqualTo(SkylarkType.LIST);
+
// Also for ClassObject
- assertEquals(SkylarkType.of(ClassObject.SkylarkClassObject.class),
- SkylarkType.of(ClassObject.SkylarkClassObject.class));
- assertFalse(SkylarkType.of(ClassObject.class).equals(
- SkylarkType.of(ClassObject.SkylarkClassObject.class)));
+ assertThat(SkylarkType.of(ClassObject.SkylarkClassObject.class))
+ .isEqualTo(SkylarkType.STRUCT);
+ // TODO(bazel-team): fix that?
+ assertThat(SkylarkType.of(ClassObject.class))
+ .isNotEqualTo(SkylarkType.STRUCT);
- // Also for these bazel classes, to avoid some regression.
+ // Also test for these bazel classes, to avoid some regression.
// TODO(bazel-team): move to some other place to remove dependency of syntax tests on Artifact?
- assertEquals(SkylarkType.of(Artifact.class), SkylarkType.of(Artifact.SpecialArtifact.class));
- assertFalse(SkylarkType.of(RuleConfiguredTarget.class).equals(
- SkylarkType.STRUCT));
+ assertThat(SkylarkType.of(Artifact.SpecialArtifact.class))
+ .isEqualTo(SkylarkType.of(Artifact.class));
+ assertThat(SkylarkType.of(RuleConfiguredTarget.class))
+ .isNotEqualTo(SkylarkType.STRUCT);
}
@Test
public void testSkylarkTypeInclusion() throws Exception {
- assertTrue(SkylarkType.INT.includes(SkylarkType.BOTTOM));
- assertFalse(SkylarkType.BOTTOM.includes(SkylarkType.INT));
- assertTrue(SkylarkType.TOP.includes(SkylarkType.INT));
+ assertThat(SkylarkType.INT.includes(SkylarkType.BOTTOM)).isTrue();
+ assertThat(SkylarkType.BOTTOM.includes(SkylarkType.INT)).isFalse();
+ assertThat(SkylarkType.TOP.includes(SkylarkType.INT)).isTrue();
SkylarkType combo1 = SkylarkType.Combination.of(SkylarkType.LIST, SkylarkType.INT);
- assertTrue(SkylarkType.LIST.includes(combo1));
+ assertThat(SkylarkType.LIST.includes(combo1)).isTrue();
SkylarkType union1 = SkylarkType.Union.of(
SkylarkType.MAP, SkylarkType.LIST, SkylarkType.STRUCT);
- assertTrue(union1.includes(SkylarkType.MAP));
- assertTrue(union1.includes(SkylarkType.LIST));
- assertTrue(union1.includes(SkylarkType.STRUCT));
- assertTrue(union1.includes(combo1));
- assertFalse(union1.includes(SkylarkType.STRING));
+ assertThat(union1.includes(SkylarkType.MAP)).isTrue();
+ assertThat(union1.includes(SkylarkType.STRUCT)).isTrue();
+ assertThat(union1.includes(combo1)).isTrue();
+ assertThat(union1.includes(SkylarkType.STRING)).isFalse();
SkylarkType union2 = SkylarkType.Union.of(
SkylarkType.LIST, SkylarkType.MAP, SkylarkType.STRING, SkylarkType.INT);
SkylarkType inter1 = SkylarkType.intersection(union1, union2);
- assertTrue(inter1.includes(SkylarkType.MAP));
- assertTrue(inter1.includes(SkylarkType.LIST));
- assertTrue(inter1.includes(combo1));
- assertFalse(inter1.includes(SkylarkType.INT));
+ assertThat(inter1.includes(SkylarkType.MAP)).isTrue();
+ assertThat(inter1.includes(SkylarkType.LIST)).isTrue();
+ assertThat(inter1.includes(combo1)).isTrue();
+ assertThat(inter1.includes(SkylarkType.INT)).isFalse();
}
private void parse(String... lines) {