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 2022/06/02 15:25:39 UTC

[GitHub] [beam] damccorm commented on a diff in pull request #17813: [BEAM-14546] Fix errant pass for empty collections in Count

damccorm commented on code in PR #17813:
URL: https://github.com/apache/beam/pull/17813#discussion_r888079762


##########
sdks/go/pkg/beam/testing/passert/count.go:
##########
@@ -30,6 +30,10 @@ func Count(s beam.Scope, col beam.PCollection, name string, count int) {
 	if typex.IsKV(col.Type()) {
 		col = beam.DropKey(s, col)
 	}
+
+	if count > 0 {
+		NonEmpty(s, col)

Review Comment:
   Do we need to add the same thing to [Hash](https://github.com/apache/beam/blob/9e986e74efff2a7293ec5c7a86917479882d9590/sdks/go/pkg/beam/testing/passert/hash.go#L36) and [Sum](https://github.com/apache/beam/blob/9e986e74efff2a7293ec5c7a86917479882d9590/sdks/go/pkg/beam/testing/passert/sum.go#L33)? I think an empty pcollection would silently pass for both of those as well



##########
sdks/go/pkg/beam/testing/passert/count_test.go:
##########
@@ -22,24 +22,62 @@ import (
 	"github.com/apache/beam/sdks/v2/go/pkg/beam/testing/ptest"
 )
 
-func TestCount_Good(t *testing.T) {
-	p, s := beam.NewPipelineWithRoot()
-	col := beam.Create(s, "a", "b", "c", "d", "e")
-	count := 5
+func TestCount(t *testing.T) {
+	var tests = []struct {
+		name     string
+		elements []string
+		count    int
+	}{
+		{
+			"full",
+			[]string{"a", "b", "c", "d", "e"},
+			5,
+		},
+		{
+			"empty",
+			[]string{},
+			0,
+		},
+	}
+	for _, test := range tests {
+		t.Run(test.name, func(t *testing.T) {
+			p, s := beam.NewPipelineWithRoot()
+			col := beam.CreateList(s, test.elements)
 
-	Count(s, col, "TestCount_Good", count)
-	if err := ptest.Run(p); err != nil {
-		t.Errorf("Pipeline failed: %v", err)
+			Count(s, col, test.name, test.count)
+			if err := ptest.Run(p); err != nil {
+				t.Errorf("Pipeline failed: %v", err)
+			}
+		})
 	}
 }
 
 func TestCount_Bad(t *testing.T) {

Review Comment:
   Can we simplify and combine these tests into 1 by adding a `expectErr` variable to the tests struct?



-- 
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