MCPcopy Create free account
hub / github.com/bufbuild/buf / TestDuplicateProtoPathError

Function TestDuplicateProtoPathError

private/bufpkg/bufmodule/bufmodule_test.go:447–503  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

445}
446
447func TestDuplicateProtoPathError(t *testing.T) {
448 t.Parallel()
449
450 ctx := t.Context()
451
452 moduleSet, err := bufmoduletesting.NewOmniProvider(
453 bufmoduletesting.ModuleData{
454 Name: "buf.build/foo/a",
455 PathToData: map[string][]byte{
456 "a.proto": []byte(
457 `syntax = proto3; package a; import "b.proto";`,
458 ),
459 },
460 },
461 bufmoduletesting.ModuleData{
462 Name: "buf.build/foo/b",
463 PathToData: map[string][]byte{
464 "a.proto": []byte(
465 `syntax = proto3; package b;`,
466 ),
467 "b.proto": []byte(
468 `syntax = proto3; package b;`,
469 ),
470 },
471 },
472 )
473 require.NoError(t, err)
474
475 moduleA := moduleSet.GetModuleForOpaqueID("buf.build/foo/a")
476 require.NotNil(t, moduleA)
477
478 checkError := func(err error) {
479 require.Error(t, err)
480 duplicateProtoPathError := &bufmodule.DuplicateProtoPathError{}
481 require.True(t, errors.As(err, &duplicateProtoPathError), err.Error())
482 require.Equal(
483 t,
484 "a.proto",
485 duplicateProtoPathError.ProtoPath,
486 )
487 require.Equal(
488 t,
489 []string{
490 "buf.build/foo/a",
491 "buf.build/foo/b",
492 },
493 duplicateProtoPathError.ModuleDescriptions,
494 )
495 }
496 _, err = moduleA.ModuleDeps()
497 checkError(err)
498 moduleReadBucket := bufmodule.ModuleSetToModuleReadBucketWithOnlyProtoFiles(moduleSet)
499 _, err = moduleReadBucket.StatFileInfo(ctx, "a.proto")
500 checkError(err)
501 err = moduleReadBucket.WalkFileInfos(ctx, func(bufmodule.FileInfo) error { return nil })
502 checkError(err)
503}
504

Callers

nothing calls this directly

Calls 7

NewOmniProviderFunction · 0.92
GetModuleForOpaqueIDMethod · 0.65
ModuleDepsMethod · 0.65
StatFileInfoMethod · 0.65
WalkFileInfosMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…