Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions protoresolve/registry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,33 @@ import (
"github.com/stretchr/testify/require"
"google.golang.org/protobuf/reflect/protoregistry"

"github.com/jhump/protoreflect/v2/internal/testprotos"
"github.com/jhump/protoreflect/v2/protoresolve"
)

func TestRegistry(t *testing.T) {
// TODO
testResolver(t, &protoresolve.Registry{})
reg := &protoresolve.Registry{}
// Register the file locally (safe, as 'reg' is a new variable introduced here)
require.NoError(t, reg.RegisterFile(testprotos.File_desc_test1_proto))

testResolver(t, reg)
}

func TestFromFiles(t *testing.T) {
// TODO
// Setting up GlobalFiles .We check if the file is already there. If not found, we register it.
if _, err := protoregistry.GlobalFiles.FindFileByPath("desc_test1.proto"); err != nil {
_ = protoregistry.GlobalFiles.RegisterFile(testprotos.File_desc_test1_proto)
}

reg, err := protoresolve.FromFiles(protoregistry.GlobalFiles)
require.NoError(t, err)
testResolver(t, reg)

reg, err = protoresolve.FromFiles(&protoregistry.Files{})
// Setting up local Files
var files protoregistry.Files
require.NoError(t, files.RegisterFile(testprotos.File_desc_test1_proto))

reg, err = protoresolve.FromFiles(&files)
require.NoError(t, err)
testResolver(t, reg)
}
18 changes: 17 additions & 1 deletion protoresolve/resolver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,21 @@ import (
)

func testResolver(t *testing.T, res protoresolve.Resolver) {
// TODO
// Verify that the resolver can find the known file
path := "desc_test1.proto"

fd, err := res.FindFileByPath(path)
if err != nil {
t.Errorf("unexpected error finding %s: %v", path, err)
} else if fd == nil {
t.Errorf("expected to find %s, but got nil", path)
} else if fd.Path() != path {
t.Errorf("expected found descriptor to have path %s, got %q", path, fd.Path())
}

// Verify that the resolver returns an error for a missing file
_, err = res.FindFileByPath("does_not_exist.proto")
if err == nil {
t.Error("expected error finding does_not_exist.proto, but got nil")
}
}
24 changes: 20 additions & 4 deletions protoresolve/resolvers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -241,11 +241,27 @@ func TestGlobalDescriptors(t *testing.T) {
}

func TestResolverFromPool(t *testing.T) {
// TODO
testResolver(t, protoresolve.ResolverFromPool(nil))
var files protoregistry.Files
require.NoError(t, files.RegisterFile(testprotos.File_desc_test1_proto))
require.NoError(t, files.RegisterFile(testprotos.File_desc_test2_proto))
require.NoError(t, files.RegisterFile(testprotos.File_desc_test_complex_proto))

// Wrap the registry in the ResolverFromPool adapter
res := protoresolve.ResolverFromPool(&files)

// Run the standard validation suite (defined in this package)
testResolver(t, res)
}

func TestResolverFromPools(t *testing.T) {
// TODO
testResolver(t, protoresolve.ResolverFromPools(nil, nil))
var files protoregistry.Files
require.NoError(t, files.RegisterFile(testprotos.File_desc_test1_proto))
require.NoError(t, files.RegisterFile(testprotos.File_desc_test2_proto))
require.NoError(t, files.RegisterFile(testprotos.File_desc_test_complex_proto))

// Wrap the registry in the ResolverFromPools adapter using GlobalTypes
res := protoresolve.ResolverFromPools(&files, protoregistry.GlobalTypes)

// Run the standard validation suite (defined in this package)
testResolver(t, res)
}