You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@beam.apache.org by GitBox <gi...@apache.org> on 2021/10/12 23:02:10 UTC

[GitHub] [beam] lukecwik commented on a change in pull request #15685: [BEAM-13019] Add `containsInAnyOrder` with matchers to the `IterableAssert` interface

lukecwik commented on a change in pull request #15685:
URL: https://github.com/apache/beam/pull/15685#discussion_r727569260



##########
File path: sdks/java/core/src/main/java/org/apache/beam/sdk/testing/PAssert.java
##########
@@ -299,6 +299,13 @@ public int hashCode() {
      */
     IterableAssert<T> containsInAnyOrder(T... expectedElements);
 
+    /**
+     * Asserts that the iterable in question matches the provided elements.
+     *
+     * @return the same {@link IterableAssert} builder for further assertions
+     */

Review comment:
       The reason why this wasn't exposed is because the method is ambiguous as you noticed that you had to modify the tests. Others have run into similar issues like https://stackoverflow.com/questions/18614621/conflicting-overloads-for-hamcrest-matcher
   
   I think this is a good idea as well but as you can see users will need to change their code. Please send a message to dev@beam.apache.org to see what the larger community thinks.

##########
File path: sdks/java/core/src/main/java/org/apache/beam/sdk/testing/PAssert.java
##########
@@ -299,6 +299,13 @@ public int hashCode() {
      */
     IterableAssert<T> containsInAnyOrder(T... expectedElements);
 
+    /**
+     * Asserts that the iterable in question matches the provided elements.
+     *
+     * @return the same {@link IterableAssert} builder for further assertions
+     */
+    IterableAssert<T> containsInAnyOrder(SerializableMatcher<? super T>... expectedElements);
+

Review comment:
       There are still additional tests failing:
   ```
   14:59:05 > Task :sdks:java:extensions:sql:zetasql:compileTestJava
   14:59:05 /home/jenkins/jenkins-slave/workspace/beam_PreCommit_Java_Commit@3/src/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlDialectSpecTest.java:1226: error: reference to containsInAnyOrder is ambiguous
   14:59:05     PAssert.that(stream).containsInAnyOrder();
   14:59:05                         ^
   14:59:05   both method containsInAnyOrder(T...) in IterableAssert and method containsInAnyOrder(SerializableMatcher<? super T>...) in IterableAssert match
   14:59:05   where T is a type-variable:
   14:59:05     T extends Object declared in interface IterableAssert
   14:59:05 /home/jenkins/jenkins-slave/workspace/beam_PreCommit_Java_Commit@3/src/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlDialectSpecTest.java:1554: error: reference to containsInAnyOrder is ambiguous
   14:59:05     PAssert.that(stream).containsInAnyOrder();
   14:59:05                         ^
   14:59:05   both method containsInAnyOrder(T...) in IterableAssert and method containsInAnyOrder(SerializableMatcher<? super T>...) in IterableAssert match
   14:59:05   where T is a type-variable:
   14:59:05     T extends Object declared in interface IterableAssert
   14:59:05 /home/jenkins/jenkins-slave/workspace/beam_PreCommit_Java_Commit@3/src/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlDialectSpecTest.java:1857: error: reference to containsInAnyOrder is ambiguous
   14:59:05     PAssert.that(stream).containsInAnyOrder();
   14:59:05                         ^
   14:59:05   both method containsInAnyOrder(T...) in IterableAssert and method containsInAnyOrder(SerializableMatcher<? super T>...) in IterableAssert match
   14:59:05   where T is a type-variable:
   14:59:05     T extends Object declared in interface IterableAssert
   14:59:05 /home/jenkins/jenkins-slave/workspace/beam_PreCommit_Java_Commit@3/src/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlDialectSpecTest.java:2578: error: reference to containsInAnyOrder is ambiguous
   14:59:05     PAssert.that(stream).containsInAnyOrder();
   14:59:05                         ^
   14:59:05   both method containsInAnyOrder(T...) in IterableAssert and method containsInAnyOrder(SerializableMatcher<? super T>...) in IterableAssert match
   14:59:05   where T is a type-variable:
   14:59:05     T extends Object declared in interface IterableAssert
   14:59:05 /home/jenkins/jenkins-slave/workspace/beam_PreCommit_Java_Commit@3/src/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlDialectSpecTest.java:2846: error: reference to containsInAnyOrder is ambiguous
   14:59:05     PAssert.that(stream).containsInAnyOrder();
   14:59:05                         ^
   14:59:05   both method containsInAnyOrder(T...) in IterableAssert and method containsInAnyOrder(SerializableMatcher<? super T>...) in IterableAssert match
   14:59:05   where T is a type-variable:
   14:59:05     T extends Object declared in interface IterableAssert
   14:59:05 Note: Some input files use or override a deprecated API.
   14:59:05 Note: Recompile with -Xlint:deprecation for details.
   14:59:05 Note: /home/jenkins/jenkins-slave/workspace/beam_PreCommit_Java_Commit@3/src/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/BeamZetaSqlCalcRelTest.java uses unchecked or unsafe operations.
   14:59:05 Note: Recompile with -Xlint:unchecked for details.
   14:59:05 5 errors
   ```
   
   You can verify locally by running `./gradle compileTestJava`




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org