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 4918e71
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
47 changes: 47 additions & 0 deletions solver/pb/proto_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package pb

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

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/golang/protobuf/proto"
)

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

func TestProto(t *testing.T) {
// Because of stable_marshaler_all, the map will be sorted in the result binary.
r := &SourceOp{
Identifier: "docker-image://docker.io/library/foo:latest",
Attrs: map[string]string{
"a": "foo",
"b": "bar",
"c": "baz",
},
}

gogo, err := r.Marshal()
require.NoError(t, err)
assertProto(t, gogo, "SourceOp")

google, err := proto.Marshal(r)
require.NoError(t, err)
assertProto(t, google, "SourceOp")
}

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 solver/pb/testdata/SourceOp.bin
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

+docker-image://docker.io/library/foo:latest
afoo
bbar
cbaz

0 comments on commit 4918e71

Please sign in to comment.