Improve .proto options parsing.
Options can now be defined on command line, file, message or in field scope. Update issue 12 Status: Started
This commit is contained in:
@@ -55,7 +55,7 @@ coverage: run_unittests
|
||||
gcov pb_encode.gcda
|
||||
gcov pb_decode.gcda
|
||||
|
||||
run_unittests: decode_unittests encode_unittests test_cxxcompile test_encode1 test_encode2 test_encode3 test_decode1 test_decode2 test_decode3 test_encode_callbacks test_decode_callbacks test_missing_fields
|
||||
run_unittests: decode_unittests encode_unittests test_cxxcompile test_encode1 test_encode2 test_encode3 test_decode1 test_decode2 test_decode3 test_encode_callbacks test_decode_callbacks test_missing_fields test_options
|
||||
rm -f *.gcda
|
||||
|
||||
./decode_unittests > /dev/null
|
||||
@@ -82,5 +82,13 @@ run_unittests: decode_unittests encode_unittests test_cxxcompile test_encode1 te
|
||||
|
||||
./test_missing_fields
|
||||
|
||||
test_options: options.pb.h options.expected
|
||||
for p in $$(grep . options.expected); do \
|
||||
if ! grep -qF "$$p" $<; then \
|
||||
echo Expected: $$p; \
|
||||
exit 1; \
|
||||
fi \
|
||||
done
|
||||
|
||||
run_fuzztest: test_decode2
|
||||
bash -c 'I=1; while true; do cat /dev/urandom | ./test_decode2 > /dev/null; I=$$(($$I+1)); echo -en "\r$$I"; done'
|
||||
|
||||
3
tests/options.expected
Normal file
3
tests/options.expected
Normal file
@@ -0,0 +1,3 @@
|
||||
char filesize[20];
|
||||
char msgsize[30];
|
||||
char fieldsize[40];
|
||||
28
tests/options.proto
Normal file
28
tests/options.proto
Normal file
@@ -0,0 +1,28 @@
|
||||
/* Test nanopb option parsing.
|
||||
* options.expected lists the patterns that are searched for in the output.
|
||||
*/
|
||||
|
||||
import "nanopb.proto";
|
||||
|
||||
// File level options
|
||||
option (nanopb_fileopt).max_size = 20;
|
||||
|
||||
message Message1
|
||||
{
|
||||
required string filesize = 1;
|
||||
}
|
||||
|
||||
// Message level options
|
||||
message Message2
|
||||
{
|
||||
option (nanopb_msgopt).max_size = 30;
|
||||
required string msgsize = 1;
|
||||
}
|
||||
|
||||
// Field level options
|
||||
message Message3
|
||||
{
|
||||
required string fieldsize = 1 [(nanopb).max_size = 40];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user