parser: ensure prefix is separated when traversing (#353)

This commit is contained in:
Arun Babu Neelicattu 2022-03-12 10:08:03 +01:00 committed by GitHub
parent 69f4192341
commit 62da35b3ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 2 deletions

View File

@ -44,12 +44,12 @@ def traverse(
for i, item in enumerate(items):
# Adjust the name since we flatten the hierarchy.
# Todo: don't change the name, but include full name in returned tuple
item.name = next_prefix = prefix + item.name
item.name = next_prefix = f"{prefix}_{item.name}"
yield item, path + [i]
if isinstance(item, DescriptorProto):
for enum in item.enum_type:
enum.name = next_prefix + enum.name
enum.name = f"{next_prefix}_{enum.name}"
yield enum, path + [i, 4]
if item.nested_type:

View File

@ -0,0 +1,11 @@
// https://github.com/danielgtaylor/python-betterproto/issues/344
syntax = "proto3";
package casing_inner_class;
message Test {
message inner_class {
sint32 old_exp = 1;
}
inner_class inner = 2;
}

View File

@ -0,0 +1,14 @@
import tests.output_betterproto.casing_inner_class as casing_inner_class
def test_message_casing_inner_class_name():
assert hasattr(
casing_inner_class, "TestInnerClass"
), "Inline defined Message is correctly converted to CamelCase"
def test_message_casing_inner_class_attributes():
message = casing_inner_class.Test()
assert hasattr(
message.inner, "old_exp"
), "Inline defined Message attribute is snake_case"