Commit Graph

107 Commits

Author SHA1 Message Date
Petteri Aimonen
6d0e0695d0 Check for supported GCC CCFLAGS when building tests. 2013-12-29 20:26:58 +02:00
Petteri Aimonen
1fc90ab4c4 Add a SCons tool for nanopb protos.
This tool script is useful both for building the tests and also for use in other applications.
2013-12-29 20:26:58 +02:00
Petteri Aimonen
f4146edf01 Bring alltypes_pointer testcase up to date 2013-12-29 18:44:58 +02:00
Petteri Aimonen
8da15d8b80 Improve alltypes_pointer test case 2013-12-29 18:35:57 +02:00
Petteri Aimonen
25516b0591 Organize allocation logic in generator, add pb_bytes_ptr_t.
Allocation decision is now made before the field data type is decided.
This way the data type decisions can more cleanly account for the allocation
type, i.e. FT_DEFAULT logic etc.

Added pb_bytes_ptr_t for pointer-allocated bytes-fields. There is no point
generating separate structs for these, as they would all be of the same type.
2013-12-29 18:35:57 +02:00
Martin Donath
4ae3b2e566 Generating and encoding messages with dynamic allocaiton 2013-12-29 18:35:57 +02:00
Petteri Aimonen
ed93db08dc Fix problem with decode_legacy test case on Windows. 2013-12-21 18:08:04 +02:00
Petteri Aimonen
cd9004089f Add test for extreme integer values (INT32_MAX etc.) in AllTypes. 2013-12-21 12:41:20 +02:00
Petteri Aimonen
9cc19a5e99 Modify the alltypes test to check re-encoding through protoc.
This way we can verify that the message is encoded exactly the same way
as the official protobuf implementation would do it.
2013-12-21 12:14:20 +02:00
Petteri Aimonen
5813144246 Make tests build in a separate folder, add to gitignore 2013-11-13 22:10:42 +02:00
Petteri Aimonen
dcdd7f98fd Generate #define tags for extension fields also.
Update issue 93
Status: FixedInGit
2013-11-02 22:05:49 +02:00
Petteri Aimonen
287207841d Remove the NANOPB_INTERNALS functions from public API.
These have been deprecated since nanopb-0.1.6 (some since 0.1.3).
Equivalent functions with better interface are available in the API.

Update issue 91
Status: FixedInGit
2013-10-29 16:32:47 +02:00
Petteri Aimonen
ed564186e1 Detect invalid sizes when encoding bytes fields. 2013-10-24 21:45:39 +03:00
Petteri Aimonen
49bd3f35a0 Generate message size #defines also for messages defined in multiple files.
Add testcase for the same.
2013-10-23 21:01:11 +03:00
Petteri Aimonen
e83fbd18d3 Check array max size when encoding.
Update issue 90
Status: FixedInGit
2013-10-20 21:42:00 +03:00
Petteri Aimonen
388d4de833 Add #defines for the maximum encoded message size.
Update issue 89
Status: FixedInGit
2013-09-26 10:23:37 +03:00
Petteri Aimonen
59cba0beea Expand extra_fields test to cover field skipping in case of streams. 2013-09-11 17:33:50 +03:00
Petteri Aimonen
152c2c910c Disable warning about uint64_t (long long) 2013-09-11 16:51:53 +03:00
Petteri Aimonen
2b72815036 Fix build error when path contains spaces 2013-09-11 16:45:52 +03:00
Petteri Aimonen
9f93d39f72 Add tests for different compilation options 2013-09-11 14:55:56 +03:00
Petteri Aimonen
d395768c8d Windows build fixes 2013-09-11 13:42:56 +03:00
Petteri Aimonen
b9f14bddf7 Make all the tests ANSI C compatible. 2013-09-11 13:16:20 +03:00
Petteri Aimonen
e2e9980627 Move the rest of the tests to scons 2013-09-10 22:34:54 +03:00
Petteri Aimonen
0bbcb7b367 Compiler options for GCC, clang and tcc 2013-09-10 20:54:29 +03:00
Petteri Aimonen
f04ab838ab Build fixes for Windows/Visual C++ 2013-09-10 17:53:07 +03:00
Petteri Aimonen
e681dd0d75 Add an example pb_syshdr.h file for platforms without C99.
This allows building the tests easily on Visual C++ in C mode.

Also add checks to pb.h that the defined integer types are of
the proper sizes. This may prevent some difficult to debug problems
later..
2013-09-10 12:39:39 +03:00
Petteri Aimonen
4dccf28ba9 Convert more test cases to scons 2013-09-10 11:34:57 +03:00
Petteri Aimonen
262c62676c Start moving the tests into subfolders. Transition to SCons for build system for the tests.
Only a few tests updated so far. Have to include all the rest before merging to mainline.

Update issue 63
Status: Started
2013-09-08 17:52:03 +03:00
Petteri Aimonen
d7f3a74388 Handle unsupported extension field types more gracefully.
Previously the generator would stop with NotImplementedException as
soon as a required or repeated extension field is found. New behaviour
is to just ignore the unsupported field and note that in a comment
in the generated file.

Furthermore, allow skipping of extension fields using the generator
option (nanopb).type = FT_IGNORE.

Update issue 83
Status: FixedInGit
2013-09-08 11:05:20 +03:00
Petteri Aimonen
ba40cacd3c Finish the testcase for extensions 2013-07-22 19:00:04 +03:00
Petteri Aimonen
0343e2bcfe Add test case for extensions decoding 2013-07-17 19:29:06 +03:00
Petteri Aimonen
7c5e184c26 Implement generator support for extension fields (no encoder/decoder support yet) 2013-07-17 00:06:54 +03:00
Petteri Aimonen
a01856f4ab Add test case for extra fields in AllTypes 2013-07-16 11:07:34 +03:00
Petteri Aimonen
bb985e9927 Add pb_decode_delimited and pb_encode_delimited wrapper functions.
Update issue 74
Status: FixedInGit
2013-07-06 16:16:00 +03:00
Petteri Aimonen
d2063ff0b6 Handle unterminated strings when encoding.
If the null terminator is not present, string will be limited to the
data size of the field.

If you are still using the pb_enc_string (deprecated since 0.1.3) from
callbacks, now would be an excellent time to stop. The pb_field_t for
the callback will not contain proper data_size. Use pb_encode_string()
instead.

Update issue 68
Status: FixedInGit
2013-04-14 09:46:39 +03:00
Petteri Aimonen
9939910833 Fix bug with empty strings in repeated string callbacks.
Fix suggested by Henrik Carlgren. Added also unit test for the bug.

Update issue 73
Status: FixedInGit
2013-04-14 09:26:42 +03:00
Petteri Aimonen
214b0eae8a Change the callback function to use void**.
NOTE: This change breaks backwards-compatibility by default.
If you have old callback functions, you can define PB_OLD_CALLBACK_STYLE
to retain the old behaviour.

If you want to convert your old callbacks to new signature, you need
to do the following:

1) Change decode callback argument to   void **arg
      and encode callback argument to   void * const *arg.

2) Change any reference to arg into *arg.

The rationale for making the new behaviour the default is that it
simplifies the common case of "allocate some memory in decode callback".

Update issue 69
Status: FixedInGit
2013-04-02 19:55:21 +03:00
Petteri Aimonen
0352647118 Implement error message support for the encoder side.
Update issue 7
Status: FixedInGit
2013-03-09 14:49:15 +02:00
Petteri Aimonen
9b6641ac64 alltypes.proto no longer needs to include nanopb.proto 2013-03-09 14:45:41 +02:00
Petteri Aimonen
5f3bf35e01 Switch alltypes.proto to use the new .options file mechanism. 2013-03-09 14:23:44 +02:00
Petteri Aimonen
60109c0be1 Add option to run the tests with mudflap to detect pointer errors. 2013-03-09 13:09:14 +02:00
Petteri Aimonen
96d4016838 Improve the fuzztest.
Enable -fstack-protector-all to detect any stack smashing bugs. Also
use test_decode3 for maximal vulnerable surface.
2013-03-09 12:51:47 +02:00
Petteri Aimonen
a9c88f5570 Fix error in backwards compatibility testcase 2013-03-09 12:43:35 +02:00
Petteri Aimonen
d2e3c1ad93 Fix bug with decoding empty message types. Add test for the same.
Note: the bug only applies to empty message types. Empty messages
of non-empty message types are not affected.

Update issue 65
Status: FixedInGit
2013-03-09 12:35:07 +02:00
Petteri Aimonen
69085d9387 Rename PB_HTYPE_ARRAY -> PB_HTYPE_REPEATED.
This is a more logical name in parallel with PB_HTYPE_REQUIRED and PB_HTYPE_OPTIONAL.

Warning: This breaks backwards-compatibility of generated .pb.c files.
You will have to regenerate the files and recompile.
2013-02-20 21:58:18 +02:00
Petteri Aimonen
47b10ec0ab Sanitize filenames before putting them in #ifndef.
Update issue 50
Status: FixedInGit
2013-02-07 17:40:17 +02:00
Petteri Aimonen
4ba6a3027d Add compile-time option PB_BUFFER_ONLY.
This allows slight optimizations if only memory buffer support
(as opposed to stream callbacks) is wanted. On ARM difference
is -12% execution time, -4% code size when enabled.
2013-02-06 20:54:25 +02:00
Petteri Aimonen
d32d322658 Add field type FT_IGNORE to generator.
This allows ignoring fields that are unnecessary or too large for an
embedded system using nanopb, while allowing them to remain in the .proto
for other platforms.

Update issue 51
Status: FixedInGit
2013-01-14 17:30:49 +02:00
Petteri Aimonen
b9baec6b4c Add a test for the backwards compatibility of generated files.
It is not necessary to maintain full compatibility of generated files
for all of eternity, but this test will warn us if there is
a need to regenerate the files.
2013-01-13 18:44:15 +02:00
Petteri Aimonen
d2c1604d6d Add generator option for packed structs.
Usage is:
message Foo
{
   option (nanopb_msgopt).packed_struct = true;
   ...
}

Valid also in file scope.

Update issue 49
Status: FixedInGit
2013-01-10 17:32:27 +02:00