[
https://issues.apache.org/jira/browse/BEAM-13019?focusedWorklogId=664381&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-664381
]
ASF GitHub Bot logged work on BEAM-13019:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 12/Oct/21 23:02
Start Date: 12/Oct/21 23:02
Worklog Time Spent: 10m
Work Description: 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 [email protected] 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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 664381)
Time Spent: 50m (was: 40m)
> PAssert.PCollectionContentsAssert contains unusable assertion methods
> ---------------------------------------------------------------------
>
> Key: BEAM-13019
> URL: https://issues.apache.org/jira/browse/BEAM-13019
> Project: Beam
> Issue Type: Bug
> Components: testing
> Affects Versions: 2.32.0
> Reporter: Chris Gray
> Priority: P3
> Time Spent: 50m
> Remaining Estimate: 0h
>
> The method
> {code:java}
> final PCollectionContentsAssert<T> containsInAnyOrder( SerializableMatcher<?
> super T>... elementMatchers){code}
> is in PAssert.PCollectionContentsAssert but is not usable since it is not in
> the IterableAssert interface. It would be a useful method to have access to.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)