-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix YAML tests handling of lists of structs that contain lists. #13142
Fix YAML tests handling of lists of structs that contain lists. #13142
Conversation
49c1da5
to
4138f0e
Compare
PR #13142: Size comparison from d6aac1f to 4138f0e Increases above 0.2%:
Increases (5 builds for esp32, linux, mbed, p6)
Full report (31 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r+ with some nits.
4138f0e
to
50595f2
Compare
PR #13142: Size comparison from 46541fb to 50595f2 Increases above 0.2%:
Increases (2 builds for linux, p6)
Full report (14 builds for efr32, k32w, linux, p6, qpg, telink)
|
The main issue was that comparing to such a value failed because we ended up with "iter" variables for both levels of list nesting that name-collided. The fix for that was to add "depth" disabmbiguation like we have in the Darwin codegen already. While adding a test for this, a few other issues were encountered: 1) The "commandValue" partial, when dealing with an optional or nullable struct, would do an Emplace() or SetNonNull() for every single member, which would wipe out earlier members. The fix for that is to do them once, and then use .Value() for the recursive partial invocation. 2) When sending a struct with optional fields, we were requiring the YAML to specify values for all the fields. Added if_include_struct_item_value to allow the YAML to not include values for such fields. 3) The YAML for checking struct values expected struct field names in the YAML to be lowerCamelCase instead of matching the XML case. The code for sending struct values expected struct field names to match the XML case. This inconsistency was very confusing, and this PR makes both expect the XML case. I verified that the only codegen changes due to this were in the TestModeSelectCluster and Test_TC_DM_2_2 tests. The latter had actually had its struct fields ignored because they were the "wrong" case.... Both tests fixed.
50595f2
to
b1c5973
Compare
PR #13142: Size comparison from 89b87f1 to b1c5973 Increases above 0.2%:
Increases (4 builds for esp32, linux, p6)
Full report (26 builds for efr32, esp32, k32w, linux, nrfconnect, p6, qpg, telink)
|
…ect-chip#13142) The main issue was that comparing to such a value failed because we ended up with "iter" variables for both levels of list nesting that name-collided. The fix for that was to add "depth" disabmbiguation like we have in the Darwin codegen already. While adding a test for this, a few other issues were encountered: 1) The "commandValue" partial, when dealing with an optional or nullable struct, would do an Emplace() or SetNonNull() for every single member, which would wipe out earlier members. The fix for that is to do them once, and then use .Value() for the recursive partial invocation. 2) When sending a struct with optional fields, we were requiring the YAML to specify values for all the fields. Added if_include_struct_item_value to allow the YAML to not include values for such fields. 3) The YAML for checking struct values expected struct field names in the YAML to be lowerCamelCase instead of matching the XML case. The code for sending struct values expected struct field names to match the XML case. This inconsistency was very confusing, and this PR makes both expect the XML case. I verified that the only codegen changes due to this were in the TestModeSelectCluster and Test_TC_DM_2_2 tests. The latter had actually had its struct fields ignored because they were the "wrong" case.... Both tests fixed.
The main issue was that comparing to such a value failed because we
ended up with "iter" variables for both levels of list nesting that
name-collided.
The fix for that was to add "depth" disabmbiguation like we have in
the Darwin codegen already.
While adding a test for this, a few other issues were encountered:
The "commandValue" partial, when dealing with an optional or
nullable struct, would do an Emplace() or SetNonNull() for every
single member, which would wipe out earlier members. The fix for that
is to do them once, and then use .Value() for the recursive partial
invocation.
When sending a struct with optional fields, we were requiring the
YAML to specify values for all the fields. Added
if_include_struct_item_value to allow the YAML to not include values
for such fields.
The YAML for checking struct values expected struct field names in
the YAML to be lowerCamelCase instead of matching the XML case. The
code for sending struct values expected struct field names to match
the XML case. This inconsistency was very confusing, and this PR
makes both expect the XML case. I verified that the only codegen
changes due to this were in the TestModeSelectCluster and
Test_TC_DM_2_2 tests. The latter had actually had its struct fields
ignored because they were the "wrong" case.... Both tests fixed.
Problem
See above.
Change overview
See above.
Testing
New tests pass. Manually examined codegen changes for tests for sanity.