Skip to content

Commit

Permalink
Keep serialized protobuf binaries for testing
Browse files Browse the repository at this point in the history
These serialized binaries can be used to test changes like moby#4422.

Signed-off-by: Kazuyoshi Kato <kato.kazuyoshi@gmail.com>
  • Loading branch information
kzys committed Feb 1, 2024
1 parent 1981eb1 commit d4e6c66
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
45 changes: 45 additions & 0 deletions api/proto_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package api

import (
"flag"
"fmt"
"os"
"testing"

"github.com/golang/protobuf/proto"
moby_buildkit_v1_types "github.com/moby/buildkit/api/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

var record = flag.Bool("record", false, "record actual values as fixtures")

func TestProto(t *testing.T) {
r := &moby_buildkit_v1_types.WorkerRecord{
ID: "hello",
Labels: map[string]string{
"a": "foo",
"b": "bar",
"c": "baz",
},
}

var buf proto.Buffer
buf.SetDeterministic(true)
err := buf.Marshal(r)
require.NoError(t, err)

assertProto(t, buf.Bytes(), "WorkerRecord")
}

func assertProto(tb testing.TB, actual []byte, name string) {
path := fmt.Sprintf("testdata/%s.bin", name)
if *record {
err := os.WriteFile(path, actual, 0600)
require.NoError(tb, err)
return
}
expected, err := os.ReadFile(path)
require.NoError(tb, err)
assert.Equal(tb, expected, actual)
}
5 changes: 5 additions & 0 deletions api/testdata/WorkerRecord.bin
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

hello
afoo
cbaz
bbar

0 comments on commit d4e6c66

Please sign in to comment.