Skip to content

Commit

Permalink
Merge pull request #31 from TheThingsIndustries/fix/oneof-setfields
Browse files Browse the repository at this point in the history
Fix nested oneof fields code generation
  • Loading branch information
rvolosatovs authored Sep 23, 2019
2 parents 8402da4 + 2b19758 commit dcc6c3c
Show file tree
Hide file tree
Showing 7 changed files with 165 additions and 52 deletions.
43 changes: 43 additions & 0 deletions main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,26 @@ func TestFieldMaskPaths(t *testing.T) {
"testOneof.d",
"testOneof.e",
"testOneof.f",
"testOneof.k",
"testOneof.k.a",
"testOneof.k.a.a",
"testOneof.k.a.b",
"testOneof.k.a.c",
"testOneof.k.a.d",
"testOneof.k.a.h",
"testOneof.k.a.h.nested_field",
"testOneof.k.a.i",
"testOneof.k.a.i.nested_field_2",
"testOneof.k.a.testNestedNestedOneOf",
"testOneof.k.a.testNestedNestedOneOf.e",
"testOneof.k.a.testNestedNestedOneOf.f",
"testOneof.k.a.testNestedNestedOneOf.g",
"testOneof.k.b",
"testOneof.k.c",
"testOneof.k.d",
"testOneof.k.e",
"testOneof.k.f",
"testOneof.k.g",
})
a.So(testdata.TestFieldPathsTopLevel, should.Resemble, []string{
"a",
Expand Down Expand Up @@ -391,6 +411,29 @@ func TestSetFields(t *testing.T) {
G: &testdata.Empty{},
},
},
{
Name: "testOneof.k.a.a",
Destination: &testdata.Test{},
Source: &testdata.Test{
TestOneof: &testdata.Test_K{
K: &testdata.Test_TestNested{
A: &testdata.Test_TestNested_TestNestedNested{
A: 42,
},
},
},
},
Paths: []string{"testOneof.k.a.a"},
Result: &testdata.Test{
TestOneof: &testdata.Test_K{
K: &testdata.Test_TestNested{
A: &testdata.Test_TestNested_TestNestedNested{
A: 42,
},
},
},
},
},
{
Name: "testOneof.e",
Destination: &testdata.Test{
Expand Down
4 changes: 2 additions & 2 deletions module/setter.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,10 @@ func (m *setterModule) buildSetFieldsCase(buf *strings.Builder, imports importMa
))
}

buildIndented(buf, tabCount+1, ` if err := newDst.SetFields(newSrc, subs...); err != nil {
buildIndented(buf, tabCount+1, fmt.Sprintf(` if err := newDst.SetFields(newSrc, %s...); err != nil {
return err
}
} else {`)
} else {`, subs))
if err := buildFinal(tabCount + 2); err != nil {
return err
}
Expand Down
110 changes: 62 additions & 48 deletions testdata/testdata.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions testdata/testdata.pb.paths.fm.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 25 additions & 1 deletion testdata/testdata.pb.setters.fm.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 12 additions & 1 deletion testdata/testdata.pb.validate.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions testdata/testdata.proto
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ message Test {
int32 d = 4;
uint32 e = 5 [(gogoproto.customname) = "CustomNameOneof"];
bytes f = 6;
TestNested k = 10;
}
Empty g = 7;
google.protobuf.StringValue h = 8;
Expand Down

0 comments on commit dcc6c3c

Please sign in to comment.