Commit Graph

82 Commits

Author SHA1 Message Date
Thomas Van Lenten
030a38b954 Fix typo that snuck in with last commit. 2019-08-30 11:43:08 -04:00
Thomas Van Lenten
6ec27f0d08 Add an explicit test using secure coding for added safety. 2019-08-30 09:46:30 -04:00
Thomas Van Lenten
b273cba192 Fix enum writing.
Enums use varint, so if the value is negative it should end up being longer.

This was caught my new conformance test cases.
2019-08-26 17:17:32 -04:00
Thomas Van Lenten
1c8a7a10f8 Update some tests for newer clang error messages. 2019-06-06 15:29:59 -04:00
Thomas Van Lenten
d529720e2f If enum aliases overlap in ObjC names skip generating the extras.
Some protos have enum values of "FOO" and "Foo", which the ObjC generation
then makes into the same thing. Just skip generating the enum element for
the duplicate as it would be a compile error because of the name collision.

The descriptors are still generated to support reflection and TextFormat
more completely.
2018-12-18 08:11:58 -05:00
Thomas Van Lenten
1484b58056 [ObjC] Properly annotate extensions for ARC.
Just like fields, some extension fieldnames can be named such that they appear
to have meaning to ARC. Add the annotation to the compiler will get things
correct.

Add a bunch of extensions to allow inspection on generation to ensure things
are correct.
2018-12-05 13:15:30 -05:00
Dave MacLachlan
ef3a725002 Make sure Objective C Proto compiler doesn't "duplicate" prefixes unnecessarily.
In some cases proto files that want/need to use the objc_class_prefix option have
types that already have the prefix on a subset of their names. In this case we don't
want to duplicate the prefix.

Added tests for this (and prefixes in general).
2018-11-27 08:06:36 -05:00
Thomas Van Lenten
92a879b2eb Add a unittest for ObjC TextFormat extension support. 2018-11-14 17:06:51 -05:00
Dave MacLachlan
be83b29bdd Fix bugs in our keyword conversion support for objectivec
We have code for converting C/C++/Objc keywords that appear in protos
to convert them so that they can be compiled.
One of the things we need to be careful of is accidentally overriding methods
that Apple declares in NSObject. It turns out that we have run into issues
where we conflict with "hidden" methods in NSObject or methods added by
categories. method_dump.sh collects all of the methods we care about for
macOS and iOS and dumps them into objectivec_nsobject_methods.h which
is then included in objectivec_helpers.cc as part of the build.

Added a pile of tests to verify that conversions are happening as expected.
2018-11-08 10:29:03 -05:00
Thomas Van Lenten
8c1748f1cd Add tests to confirm strings/bytes are copied. 2018-10-02 13:45:18 -04:00
Feng Xiao
afe98de32a Replace repo links. 2018-08-22 11:55:30 -07:00
Benjamin Barenblat
048f5c26a7 objectivec: Quash -Wself-assign and -Wvla (#4897)
* objectivec: Quash -Wself-assign

* objectivec: Set -Wno-vla when building

Objective-C protobuf uses VLAs for performance reasons. Ensure Clang
doesn’t complain about them.
2018-07-11 13:20:01 -04:00
leovitch
2804902446 [ObjC] Add ability to introspect list of enum values (#4678)
Added new API to GPBEnumDescriptor to enable introspection of enum values.

Refactored implementation so that this contains a minimum of added code.

Clarified comments regarding behavior in the presence of the alias_allowed option.

Added unit tests for new functionality and for the alias case.
2018-05-29 08:08:00 -04:00
Thomas Van Lenten
b59da6d099 Remove the iOS Test App.
The tests can run as what Apple calls a Logic Test (under xctest), which means
it doesn't have to load an full UI App under the simulator, which speeds things
up a fair amount.
2018-04-20 17:26:38 -04:00
Thomas Van Lenten
e998b8ff66 Add compile test sources for to test include order.
To ensure all headers aren't dependent on other things being imported
before/after them, make a source that just imports each header and add
it to the unittesting target, that way we ensure it can be included on
its own with ordering issues.

Also do this testing with a few generated headers that aren't part of
the library to help ensure the different generated imports needed are
complete.
2018-04-02 09:54:29 -04:00
Felix Jendrusch
38508e9bbb Add test for failing write of raw pointer to output stream 2018-03-08 16:20:05 +01:00
Thomas Van Lenten
953adb16ff Add casts to removed undefined behaviors around shifts.
Fixes #4246
Fixes #4247
2018-01-31 12:36:54 -05:00
Thomas Van Lenten
156161dfcd Properly copy maps with string keys but pod values.
Add tests to cover all the common special casing in the runtime code to
ensure things come out correctly.
2018-01-03 11:46:03 -05:00
dmaclach
8537f1e6d5 Fix up warnings from Xcode 9.1 (#3887)
Fix up warnings from Xcode 9.1
2017-11-16 08:24:17 -05:00
Sergio Campama
02129f0a87 Fixes 32bit tests. 2017-11-15 13:14:41 -05:00
Dave MacLachlan
8ae6844cf4 codereview cleanup 2017-11-15 08:49:59 -08:00
Dave MacLachlan
9d7f313372 Reduce size of GPBDictionary by getting rid of class creation methods 2017-11-14 15:37:28 -08:00
Sergio Campama
b1f954e639 Improves coverage of GPBCodedInputStream 2017-10-24 10:44:41 -04:00
Thomas Van Lenten
a274c67caf Build out more complete code coverage in the tests. 2017-10-03 11:54:44 -04:00
Thomas Van Lenten
3f2dcaebe3 ObjC: Fix merging of length delimited unknown fields.
- Add a test to cover this and tweak the test to not use two merge
  paths to be sure things are as expected.
2017-10-02 19:56:25 -04:00
Thomas Van Lenten
1d0988b8ef ObjC: Preserve unknown fields in proto3 syntax files.
As announced: https://groups.google.com/forum/#!topic/protobuf/VX5qEmTW3y0

The ObjC side of https://github.com/google/protobuf/issues/272
2017-06-06 10:44:14 -04:00
Thomas Van Lenten
ecc0f54127 Properly error on a tag with field number zero. 2017-06-06 10:14:41 -04:00
Thomas Van Lenten
46f36d79a2 Fix some cases of reading of 64bit map values.
Fixes https://github.com/google/protobuf/issues/3164.
2017-06-01 14:25:45 -04:00
Sergio Campama
2465ae7e23 Adds serial and parallel parsing tests to check if parallel parsing is faster than serial parsing, which it should 2017-05-23 11:04:35 -04:00
Thomas Van Lenten
49e4ba6098 Fix ExtensionRegistry copying and add tests.
- Fix up -copyWithZone: to not leave the two registries sharing
  some of the storage by using -addExtensions:.
- Improve -addExtensions: to clone the sub dict when there is
  nothing to merge into.
- A ExtensionRegistry unittests.
- Update project schemes to not have extra things in perf scheme.
2017-05-17 14:51:02 -04:00
Thomas Van Lenten
ddb438855a Raise the recursion limit to 100 to match other languages. 2017-03-28 09:10:20 -04:00
Thomas Van Lenten
d07176654b Add GPBMessageDropUnknownFieldsRecursively() and tests.
GPBMessageDropUnknownFieldsRecursively() is a new helper to drop the
unknownFields from a message and all sub messages (in fields or extensions).
2017-02-23 15:04:06 -05:00
Thomas Van Lenten
d0bc096b4a Timestamp helper fix, Duration helper cleanup.
- The Timestamp proto does not allow for negative nanos fields, so the seconds
  must be shifted and a positive nanos then applied.
- Tweak the helpers on Duration to make it clear there is no "base" time
  involved.
- Update the unittests for duration and timestamp to cover positive and
  negative NSTimeIntervals and what their impact is on the protos.
2017-01-12 19:33:25 -05:00
Thomas Van Lenten
1651342501 Revert "Fix Timestamps with dates before the Unix epoch that contain fractional seconds." 2017-01-12 16:00:13 -05:00
Thomas Van Lenten
adcccd0f81 Fix Timestamps with dates before the Unix epoch that contain fractional seconds.
The Timestamp proto does not allow for negative nanos fields, so the seconds must be shifted and
a positive nanos then applied.
2017-01-12 15:46:50 -05:00
Thomas Van Lenten
988ffe0a78 Minor fix for autocreated object repeated fields and maps.
- If setting/clearing a repeated field/map that was objects, check the class
  before checking the autocreator.
- Just to be paranoid, don’t mutate within copy/mutableCopy for the autocreated
  classes to ensure there is less chance of issues if someone does something
  really crazy threading wise.
- Some more tests for the internal AutocreatedArray/AutocreatedDictionary
  classes to ensure things are working as expected.
- Add Xcode 8.2 to the full_mac_build.sh supported list.
2017-01-05 09:15:40 -05:00
Thomas Van Lenten
dad775b798 Improve ObjC deprecated annotation support.
- Check the parent file options for deprecation when deciding to tag Messages
  and Enums as deprecated.
- Within the generated source push/pop the warning for implementing deprecated
  things around a deprecated class implementation.
- Annotate the methods generated for extension fields as deprecated.
- Add a testing .proto file that covers deprecated fields, messages, enums,
  enum values and compile it into the unittests to confirm things compile
  cleanly.
- Add a testing .proto file that uses the file level option to make everything
  deprecated and compile it into the unittests to confirm things compile
  cleanly.
2016-12-08 12:12:50 -05:00
Thomas Van Lenten
297449aaf4 Update the ObjC projects for Xcode 8
- Let Xcode 8 update settings on the projects/schemes.
- Migrate Swift tests to Swift 3 syntax.
- Update the build/test script:
  - Require Xcode 8 (because of the Swift 3 requirement for tests)
  - Update the devices to what Xcode 8 has (8.x simulator seem to fail even
    though they can be downloaded in Xcode 8)
- Update the travis images to ones with Xcode 8.
2016-10-03 13:24:24 -04:00
Thomas Van Lenten
337ec3065f Add ObjC helpers for Any WKT.
- Capture the ObjC prefix used when generating the the file.
- Track the containing type on descriptors.
- Mark descriptors where the message class name got a suffix added to it.
- Expose a fullName property on Descriptors.
- Add helpers for packing/unpacking Any messages.
- Bump the ObjC runtime version number. Since we added methods and invoke them
  in the generated code, ensure the code is running against a matching version.
  Otherwise, someone could compile against headers, but run with a framework
  that is older and get unknown selector failures.  This should trip clearer
  messaging.

Fixes https://github.com/google/protobuf/issues/1674
2016-09-08 11:59:57 -04:00
Thomas Van Lenten
13a41246dd Make Root's +extensionRegistry generation smarter.
At generation time, walk the file's dependencies to see what really contains
extensions so we can generate more minimal code that only links together the
roots that provided extensions. Gets a bunch of otherwise noop code out of
the call flow when the roots are +initialized.
2016-09-01 18:08:59 -04:00
Thomas Van Lenten
ff85a1735f More complete nil/reset tests within a oneof 2016-08-12 11:59:07 -04:00
Thomas Van Lenten
a0df678df9 Fix some constants to be correct for the message class in use. 2016-08-12 11:53:04 -04:00
Thomas Van Lenten
17d601a2b6 More explicit tests for nil behaviors on fields.
Code already works, but make a bank of tests that call it out so things are
very clean in the future just to be safe.
2016-08-12 11:46:55 -04:00
Thomas Van Lenten
ca5b7751e5 Record zero for "has" for proto3 if in a oneof.
If a message is proto3, then the zero values still count as being set one the
field is in a oneof.

Add tests to confirm oneofs work as expected in both syntaxes.
2016-08-11 13:14:15 -04:00
Thomas Van Lenten
1a6c1d092d Never use strlen on utf8 runs so null characters work.
Fixes https://github.com/google/protobuf/issues/1933

Add a new test that forces strings into two different implementations from the
NSString class cluster to help confirm we're exercising both paths by which
CodedOutputStream will extract data from an NSString.

Move the old +load test (that was flawed because the behavior really depends on
the type of string from the NSString class cluster); into a unittest that
targets the specific case we're adding a behavior confirmation on.

As a bonus, improve the TextFormat generation of string characters < 0x20.
2016-08-09 10:37:16 -04:00
Sergio Campamá
237f321e33 Adds support for appledoc in generated code. (#1928)
Convert mapping of proto comments to appledoc format so they show up in Xcode and cocoadocs.

Fixes https://github.com/google/protobuf/issues/1866
2016-08-09 08:26:24 -04:00
Dia Kharrat
523bfd4f23 add nullable qualifier to nil return types
Add the `nullable` qualifier to return types of Objective-C methods that
can return a nil due to errors. This change makes these methods
compatible with the Swift 2 try-catch syntax.
2016-07-05 01:30:41 -07:00
Thomas Van Lenten
6cfc19edde Xcode project cleanup/setup.
- Correct some cases sources were compiled into the static lib and the tests.
- Enable Xcodes code coverage support on the unittests.  We aren't complete on
  coverage, but having the data always there should make it easier to chip away
  at this going forward.
- Drop method in tests that isn't used, wire up a validator in another test.
2016-06-29 09:53:46 -04:00
Thomas Van Lenten
fc4c617199 Fix GPBGetMessage{Repeated,Map}Field()
- Correct impl by using helpers the message wiring does.
- Add unittests.

Fixes https://github.com/google/protobuf/issues/1716
2016-06-27 20:46:26 -04:00
Thomas Van Lenten
2bcd43afe4 Merge pull request #1714 from dnkoutso/master
Get value from text format name in GPBEnumDescriptor
2016-06-26 21:09:40 -04:00