Skip to content

Commit ecb27d3

Browse files
authored
test(sidekick/rust): prepare for strict package mappings (#3873)
The Rust codec is about to get more strict w.r.t. package names. Prepare all the test for it.
1 parent d43ab05 commit ecb27d3

7 files changed

Lines changed: 264 additions & 257 deletions

File tree

internal/librarian/rust/generate_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ func TestGenerateVeneer(t *testing.T) {
4949
{Name: "wkt", Package: "google-cloud-wkt", Source: "google.protobuf"},
5050
{Name: "iam_v1", Package: "google-cloud-iam-v1", Source: "google.iam.v1"},
5151
{Name: "location", Package: "google-cloud-location", Source: "google.cloud.location"},
52+
{Name: "google-cloud-api", Package: "google-cloud-api", Source: "google.api"},
53+
{Name: "google-cloud-type", Package: "google-cloud-type", Source: "google.type"},
5254
},
5355
},
5456
Modules: []*config.RustModule{
@@ -248,6 +250,8 @@ func TestGenerate(t *testing.T) {
248250
{Name: "wkt", Package: "google-cloud-wkt", Source: "google.protobuf"},
249251
{Name: "iam_v1", Package: "google-cloud-iam-v1", Source: "google.iam.v1"},
250252
{Name: "location", Package: "google-cloud-location", Source: "google.cloud.location"},
253+
{Name: "google-cloud-api", Package: "google-cloud-api", Source: "google.api"},
254+
{Name: "google-cloud-type", Package: "google-cloud-type", Source: "google.type"},
251255
},
252256
},
253257
},

internal/sidekick/rust/annotate_field_test.go

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,21 @@ import (
2323
"github.com/googleapis/librarian/internal/sidekick/api"
2424
)
2525

26+
func newTestCodec(t *testing.T, specificationFormat, packageName string, options map[string]string) *codec {
27+
t.Helper()
28+
codec, err := newCodec(specificationFormat, options)
29+
if err != nil {
30+
t.Fatal(err)
31+
}
32+
codec.packageMapping = map[string]*packagez{
33+
"google.protobuf": &packagez{name: "wkt"},
34+
}
35+
if packageName != "" {
36+
codec.packageMapping[packageName] = &packagez{name: "external-rust-pkg"}
37+
}
38+
return codec
39+
}
40+
2641
func TestFieldAnnotations(t *testing.T) {
2742
key_field := &api.Field{Name: "key", Typez: api.INT32_TYPE}
2843
value_field := &api.Field{Name: "value", Typez: api.INT64_TYPE}
@@ -74,10 +89,7 @@ func TestFieldAnnotations(t *testing.T) {
7489
model.State.MessageByID[map_message.ID] = map_message
7590
api.CrossReference(model)
7691
api.LabelRecursiveFields(model)
77-
codec, err := newCodec("protobuf", map[string]string{})
78-
if err != nil {
79-
t.Fatal(err)
80-
}
92+
codec := newTestCodec(t, "protobuf", "test", map[string]string{})
8193
annotateModel(model, codec)
8294
wantMessage := &messageAnnotation{
8395
Name: "TestMessage",
@@ -247,10 +259,7 @@ func TestRecursiveFieldAnnotations(t *testing.T) {
247259
model.State.MessageByID[map_message.ID] = map_message
248260
api.CrossReference(model)
249261
api.LabelRecursiveFields(model)
250-
codec, err := newCodec("protobuf", map[string]string{})
251-
if err != nil {
252-
t.Fatal(err)
253-
}
262+
codec := newTestCodec(t, "protobuf", "test", map[string]string{})
254263
annotateModel(model, codec)
255264
wantMessage := &messageAnnotation{
256265
Name: "TestMessage",
@@ -440,10 +449,8 @@ func TestSameTypeNameFieldAnnotations(t *testing.T) {
440449
model.State.MessageByID[inner_message.ID] = inner_message
441450
api.CrossReference(model)
442451
api.LabelRecursiveFields(model)
443-
codec, err := newCodec("protobuf", map[string]string{})
444-
if err != nil {
445-
t.Fatal(err)
446-
}
452+
codec := newTestCodec(t, "protobuf", "test", map[string]string{})
453+
codec.packageMapping["test.v1.inner"] = &packagez{name: "rusty-test-inner-v1"}
447454
annotateModel(model, codec)
448455
wantMessage := &messageAnnotation{
449456
Name: "TestMessage",
@@ -469,12 +476,12 @@ func TestSameTypeNameFieldAnnotations(t *testing.T) {
469476
SetterName: "map_field",
470477
BranchName: "MapField",
471478
FQMessageName: "crate::model::TestMessage",
472-
FieldType: "std::collections::HashMap<i32,test.v1.inner::TestMessage>",
473-
PrimitiveFieldType: "std::collections::HashMap<i32,test.v1.inner::TestMessage>",
479+
FieldType: "std::collections::HashMap<i32,rusty_test_inner_v1::model::TestMessage>",
480+
PrimitiveFieldType: "std::collections::HashMap<i32,rusty_test_inner_v1::model::TestMessage>",
474481
AddQueryParameter: `let builder = { use gaxi::query_parameter::QueryParameter; serde_json::to_value(&req.map_field).map_err(Error::ser)?.add(builder, "mapField") };`,
475482
KeyType: "i32",
476483
KeyField: key_field,
477-
ValueType: "test.v1.inner::TestMessage",
484+
ValueType: "rusty_test_inner_v1::model::TestMessage",
478485
ValueField: value_field,
479486
SerdeAs: "std::collections::HashMap<wkt::internal::I32, serde_with::Same>",
480487
SkipIfIsDefault: true,
@@ -495,9 +502,9 @@ func TestSameTypeNameFieldAnnotations(t *testing.T) {
495502
SetterName: "oneof_field",
496503
BranchName: "OneofField",
497504
FQMessageName: "crate::model::TestMessage",
498-
FieldType: "std::boxed::Box<test.v1.inner::TestMessage>",
505+
FieldType: "std::boxed::Box<rusty_test_inner_v1::model::TestMessage>",
499506
MessageType: inner_message,
500-
PrimitiveFieldType: "test.v1.inner::TestMessage",
507+
PrimitiveFieldType: "rusty_test_inner_v1::model::TestMessage",
501508
AddQueryParameter: `let builder = req.oneof_field().map(|p| serde_json::to_value(p).map_err(Error::ser) ).transpose()?.into_iter().fold(builder, |builder, p| { use gaxi::query_parameter::QueryParameter; p.add(builder, "oneofField") });`,
502509
IsBoxed: true,
503510
SkipIfIsDefault: true,
@@ -519,9 +526,9 @@ func TestSameTypeNameFieldAnnotations(t *testing.T) {
519526
SetterName: "repeated_field",
520527
BranchName: "RepeatedField",
521528
FQMessageName: "crate::model::TestMessage",
522-
FieldType: "std::vec::Vec<test.v1.inner::TestMessage>",
529+
FieldType: "std::vec::Vec<rusty_test_inner_v1::model::TestMessage>",
523530
MessageType: inner_message,
524-
PrimitiveFieldType: "test.v1.inner::TestMessage",
531+
PrimitiveFieldType: "rusty_test_inner_v1::model::TestMessage",
525532
AddQueryParameter: `let builder = req.repeated_field.as_ref().map(|p| serde_json::to_value(p).map_err(Error::ser) ).transpose()?.into_iter().fold(builder, |builder, v| { use gaxi::query_parameter::QueryParameter; v.add(builder, "repeatedField") });`,
526533
SkipIfIsDefault: true,
527534
AliasInExamples: "RepeatedField",
@@ -541,9 +548,9 @@ func TestSameTypeNameFieldAnnotations(t *testing.T) {
541548
SetterName: "message_field",
542549
BranchName: "MessageField",
543550
FQMessageName: "crate::model::TestMessage",
544-
FieldType: "test.v1.inner::TestMessage",
551+
FieldType: "rusty_test_inner_v1::model::TestMessage",
545552
MessageType: inner_message,
546-
PrimitiveFieldType: "test.v1.inner::TestMessage",
553+
PrimitiveFieldType: "rusty_test_inner_v1::model::TestMessage",
547554
AddQueryParameter: `let builder = { use gaxi::query_parameter::QueryParameter; serde_json::to_value(&req.message_field).map_err(Error::ser)?.add(builder, "messageField") };`,
548555
SkipIfIsDefault: true,
549556
AliasInExamples: "MessageField",
@@ -594,10 +601,7 @@ func TestPrimitiveFieldAnnotations(t *testing.T) {
594601
model := api.NewTestAPI([]*api.Message{message}, []*api.Enum{}, []*api.Service{})
595602
api.CrossReference(model)
596603
api.LabelRecursiveFields(model)
597-
codec, err := newCodec("protobuf", map[string]string{})
598-
if err != nil {
599-
t.Fatal(err)
600-
}
604+
codec := newTestCodec(t, "protobuf", "test", map[string]string{})
601605
annotateModel(model, codec)
602606

603607
wantField := &fieldAnnotations{
@@ -645,10 +649,7 @@ func TestBytesAnnotations(t *testing.T) {
645649
model := api.NewTestAPI([]*api.Message{message}, []*api.Enum{}, []*api.Service{})
646650
api.CrossReference(model)
647651
api.LabelRecursiveFields(model)
648-
codec, err := newCodec(test.sourceSpecification, map[string]string{})
649-
if err != nil {
650-
t.Fatal(err)
651-
}
652+
codec := newTestCodec(t, test.sourceSpecification, "test", map[string]string{})
652653
annotateModel(model, codec)
653654

654655
wantField := &fieldAnnotations{

internal/sidekick/rust/annotate_map_test.go

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,7 @@ func TestMapValueAnnotations(t *testing.T) {
155155
model := api.NewTestAPI([]*api.Message{message, mapMessage}, []*api.Enum{}, []*api.Service{})
156156
api.CrossReference(model)
157157
api.LabelRecursiveFields(model)
158-
codec, err := newCodec(test.spec, map[string]string{})
159-
if err != nil {
160-
t.Fatal(err)
161-
}
158+
codec := newTestCodec(t, test.spec, "test", map[string]string{})
162159
annotateModel(model, codec)
163160

164161
got := field.Codec.(*fieldAnnotations).SerdeAs
@@ -207,10 +204,7 @@ func TestMapAnnotationsSameSame(t *testing.T) {
207204
model := api.NewTestAPI([]*api.Message{message, mapMessage}, []*api.Enum{}, []*api.Service{})
208205
api.CrossReference(model)
209206
api.LabelRecursiveFields(model)
210-
codec, err := newCodec("protobuf", map[string]string{})
211-
if err != nil {
212-
t.Fatal(err)
213-
}
207+
codec := newTestCodec(t, "protobuf", "test", map[string]string{})
214208
annotateModel(model, codec)
215209

216210
got := field.Codec.(*fieldAnnotations).SerdeAs

internal/sidekick/rust/annotate_method_test.go

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,9 @@ func TestAnnotateMethodNames(t *testing.T) {
2828
if err != nil {
2929
t.Fatal(err)
3030
}
31-
codec, err := newCodec("protobuf", map[string]string{
31+
codec := newTestCodec(t, "protobuf", "", map[string]string{
3232
"include-grpc-only-methods": "true",
3333
})
34-
if err != nil {
35-
t.Fatal(err)
36-
}
3734
_ = annotateModel(model, codec)
3835

3936
for _, test := range []struct {
@@ -98,7 +95,7 @@ func TestAnnotateDiscoveryAnnotations(t *testing.T) {
9895
if err != nil {
9996
t.Fatal(err)
10097
}
101-
codec, err := newCodec("protobuf", map[string]string{
98+
codec := newTestCodec(t, "protobuf", "", map[string]string{
10299
"include-grpc-only-methods": "true",
103100
})
104101
if err != nil {
@@ -141,10 +138,7 @@ func TestAnnotateMethodAPIVersion(t *testing.T) {
141138
}
142139
gotMethod.APIVersion = "v1_20260205"
143140

144-
codec, err := newCodec("disco", map[string]string{})
145-
if err != nil {
146-
t.Fatal(err)
147-
}
141+
codec := newTestCodec(t, "disco", "", map[string]string{})
148142
_ = annotateModel(model, codec)
149143

150144
got := gotMethod.Codec.(*methodAnnotation)
@@ -164,12 +158,9 @@ func TestAnnotateMethodInternalBuilders(t *testing.T) {
164158
t.Fatal(err)
165159
}
166160

167-
codec, err := newCodec("protobuf", map[string]string{
161+
codec := newTestCodec(t, "protobuf", "", map[string]string{
168162
"internal-builders": "true",
169163
})
170-
if err != nil {
171-
t.Fatal(err)
172-
}
173164
_ = annotateModel(model, codec)
174165

175166
methodID := ".test.v1.ResourceService.Delete"

internal/sidekick/rust/annotate_model_test.go

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,7 @@ func TestDefaultFeatures(t *testing.T) {
5454
},
5555
} {
5656
model := newTestAnnotateModelAPI()
57-
codec, err := newCodec("protobuf", test.Options)
58-
if err != nil {
59-
t.Fatal(err)
60-
}
57+
codec := newTestCodec(t, "protobuf", "", test.Options)
6158
got := annotateModel(model, codec)
6259
t.Logf("Options=%v", test.Options)
6360
if diff := cmp.Diff(test.Want, got.DefaultFeatures); diff != "" {
@@ -89,10 +86,7 @@ func TestRustdocWarnings(t *testing.T) {
8986
},
9087
} {
9188
model := newTestAnnotateModelAPI()
92-
codec, err := newCodec("protobuf", test.Options)
93-
if err != nil {
94-
t.Fatal(err)
95-
}
89+
codec := newTestCodec(t, "protobuf", "", test.Options)
9690
got := annotateModel(model, codec)
9791
t.Logf("Options=%v", test.Options)
9892
if diff := cmp.Diff(test.Want, got.DisabledRustdocWarnings); diff != "" {
@@ -124,10 +118,7 @@ func TestClippyWarnings(t *testing.T) {
124118
},
125119
} {
126120
model := newTestAnnotateModelAPI()
127-
codec, err := newCodec("protobuf", test.Options)
128-
if err != nil {
129-
t.Fatal(err)
130-
}
121+
codec := newTestCodec(t, "protobuf", "", test.Options)
131122
got := annotateModel(model, codec)
132123
t.Logf("Options=%v", test.Options)
133124
if diff := cmp.Diff(test.Want, got.DisabledClippyWarnings); diff != "" {
@@ -163,10 +154,7 @@ func TestInternalBuildersAnnotation(t *testing.T) {
163154
},
164155
} {
165156
model := newTestAnnotateModelAPI()
166-
codec, err := newCodec("protobuf", test.Options)
167-
if err != nil {
168-
t.Fatal(err)
169-
}
157+
codec := newTestCodec(t, "protobuf", "", test.Options)
170158
got := annotateModel(model, codec)
171159
if got.InternalBuilders != test.Want {
172160
t.Errorf("mismatch in InternalBuilders, want=%v, got=%v", test.Want, got.InternalBuilders)

0 commit comments

Comments
 (0)