diff options
author | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2014-07-20 14:02:56 +0300 |
---|---|---|
committer | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2014-07-20 14:02:56 +0300 |
commit | f2f9f8a9ed2f59e4ed229f09fc95f9168cc4b473 (patch) | |
tree | 645afbebb2e9774723edfbbf916a00f4bf739e3e | |
parent | 788d2825b06426f50064dc5f29b07ce0be105b2b (diff) |
Fix problem with .options file and extension fields.
The options for an extension field were being looked up under wrong name
(MessageName instead of MessageName.fieldname).
Fixed the problem and added regression test. Created a new subfolder for
regression test cases.
Update issue 125
Status: FixedInGit
-rwxr-xr-x | generator/nanopb_generator.py | 2 | ||||
-rw-r--r-- | tests/SConstruct | 2 | ||||
-rw-r--r-- | tests/regression/issue_125/SConscript | 9 | ||||
-rw-r--r-- | tests/regression/issue_125/extensionbug.expected | 3 | ||||
-rw-r--r-- | tests/regression/issue_125/extensionbug.options | 4 | ||||
-rw-r--r-- | tests/regression/issue_125/extensionbug.proto | 16 |
6 files changed, 34 insertions, 2 deletions
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 1f263a74..3bc8b39a 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -645,7 +645,7 @@ def parse_file(fdesc, file_options): enums.append(Enum(names, enum, enum_options)) for names, extension in iterate_extensions(fdesc, base_name): - field_options = get_nanopb_suboptions(extension, file_options, names) + field_options = get_nanopb_suboptions(extension, file_options, names + extension.name) if field_options.type != nanopb_pb2.FT_IGNORE: extensions.append(ExtensionField(names, extension, field_options)) diff --git a/tests/SConstruct b/tests/SConstruct index 7a278443..57167ccc 100644 --- a/tests/SConstruct +++ b/tests/SConstruct @@ -141,6 +141,6 @@ import os.path env['VARIANT_DIR'] = 'build' env['BUILD'] = '#' + env['VARIANT_DIR'] env['COMMON'] = '#' + env['VARIANT_DIR'] + '/common' -for subdir in Glob('*/SConscript'): +for subdir in Glob('*/SConscript') + Glob('regression/*/SConscript'): SConscript(subdir, exports = 'env', variant_dir = env['VARIANT_DIR'] + '/' + os.path.dirname(str(subdir))) diff --git a/tests/regression/issue_125/SConscript b/tests/regression/issue_125/SConscript new file mode 100644 index 00000000..f2155e63 --- /dev/null +++ b/tests/regression/issue_125/SConscript @@ -0,0 +1,9 @@ +# Regression test for Issue 125: Wrong identifier name for extension fields + +Import("env") + +env.NanopbProto(["extensionbug", "extensionbug.options"]) +env.Object('extensionbug.pb.c') + +env.Match(['extensionbug.pb.h', 'extensionbug.expected']) + diff --git a/tests/regression/issue_125/extensionbug.expected b/tests/regression/issue_125/extensionbug.expected new file mode 100644 index 00000000..fc213354 --- /dev/null +++ b/tests/regression/issue_125/extensionbug.expected @@ -0,0 +1,3 @@ +pb_extension_type_t Message2_extras +uint32_t field2 + diff --git a/tests/regression/issue_125/extensionbug.options b/tests/regression/issue_125/extensionbug.options new file mode 100644 index 00000000..30b464a4 --- /dev/null +++ b/tests/regression/issue_125/extensionbug.options @@ -0,0 +1,4 @@ +* type:FT_IGNORE + +Message2.extras type:FT_STATIC +Message2.field2 type:FT_STATIC diff --git a/tests/regression/issue_125/extensionbug.proto b/tests/regression/issue_125/extensionbug.proto new file mode 100644 index 00000000..c4ac6860 --- /dev/null +++ b/tests/regression/issue_125/extensionbug.proto @@ -0,0 +1,16 @@ +message Message1 +{ + optional uint32 fieldA = 1; + extensions 30 to max; +} + +message Message2 +{ + extend Message1 + { + optional Message2 extras = 30; + } + + optional uint32 field1 = 1; + optional uint32 field2 = 2; +} |