فهرست منبع

Merge branch '3.2.x' into ruby24

Joshua Haberman 8 سال پیش
والد
کامیت
82c7017891

+ 1 - 1
Protobuf.podspec

@@ -5,7 +5,7 @@
 # dependent projects use the :git notation to refer to the library.
 # dependent projects use the :git notation to refer to the library.
 Pod::Spec.new do |s|
 Pod::Spec.new do |s|
   s.name     = 'Protobuf'
   s.name     = 'Protobuf'
-  s.version  = '3.2.0-rc.2'
+  s.version  = '3.2.0'
   s.summary  = 'Protocol Buffers v.3 runtime library for Objective-C.'
   s.summary  = 'Protocol Buffers v.3 runtime library for Objective-C.'
   s.homepage = 'https://github.com/google/protobuf'
   s.homepage = 'https://github.com/google/protobuf'
   s.license  = 'New BSD'
   s.license  = 'New BSD'

+ 1 - 1
configure.ac

@@ -17,7 +17,7 @@ AC_PREREQ(2.59)
 # In the SVN trunk, the version should always be the next anticipated release
 # In the SVN trunk, the version should always be the next anticipated release
 # version with the "-pre" suffix.  (We used to use "-SNAPSHOT" but this pushed
 # version with the "-pre" suffix.  (We used to use "-SNAPSHOT" but this pushed
 # the size of one file name in the dist tarfile over the 99-char limit.)
 # the size of one file name in the dist tarfile over the 99-char limit.)
-AC_INIT([Protocol Buffers],[3.2.0rc2],[protobuf@googlegroups.com],[protobuf])
+AC_INIT([Protocol Buffers],[3.2.0],[protobuf@googlegroups.com],[protobuf])
 
 
 AM_MAINTAINER_MODE([enable])
 AM_MAINTAINER_MODE([enable])
 
 

+ 1 - 1
csharp/Google.Protobuf.Tools.nuspec

@@ -5,7 +5,7 @@
     <title>Google Protocol Buffers tools</title>
     <title>Google Protocol Buffers tools</title>
     <summary>Tools for Protocol Buffers - Google's data interchange format.</summary>
     <summary>Tools for Protocol Buffers - Google's data interchange format.</summary>
     <description>See project site for more info.</description>
     <description>See project site for more info.</description>
-    <version>3.2.0-rc2</version>
+    <version>3.2.0</version>
     <authors>Google Inc.</authors>
     <authors>Google Inc.</authors>
     <owners>protobuf-packages</owners>
     <owners>protobuf-packages</owners>
     <licenseUrl>https://github.com/google/protobuf/blob/master/LICENSE</licenseUrl>
     <licenseUrl>https://github.com/google/protobuf/blob/master/LICENSE</licenseUrl>

+ 1 - 1
csharp/src/Google.Protobuf/project.json

@@ -1,5 +1,5 @@
 {
 {
-  "version": "3.2.0-rc2",
+  "version": "3.2.0",
   "title": "Google Protocol Buffers",
   "title": "Google Protocol Buffers",
   "description": "See project site for more info.",
   "description": "See project site for more info.",
   "authors": [ "Google Inc." ],
   "authors": [ "Google Inc." ],

+ 1 - 1
java/core/pom.xml

@@ -6,7 +6,7 @@
   <parent>
   <parent>
     <groupId>com.google.protobuf</groupId>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-parent</artifactId>
     <artifactId>protobuf-parent</artifactId>
-    <version>3.2.0rc2</version>
+    <version>3.2.0</version>
   </parent>
   </parent>
 
 
   <artifactId>protobuf-java</artifactId>
   <artifactId>protobuf-java</artifactId>

+ 1 - 1
java/pom.xml

@@ -11,7 +11,7 @@
 
 
   <groupId>com.google.protobuf</groupId>
   <groupId>com.google.protobuf</groupId>
   <artifactId>protobuf-parent</artifactId>
   <artifactId>protobuf-parent</artifactId>
-  <version>3.2.0rc2</version>
+  <version>3.2.0</version>
   <packaging>pom</packaging>
   <packaging>pom</packaging>
 
 
   <name>Protocol Buffers [Parent]</name>
   <name>Protocol Buffers [Parent]</name>

+ 1 - 1
java/util/pom.xml

@@ -6,7 +6,7 @@
   <parent>
   <parent>
     <groupId>com.google.protobuf</groupId>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-parent</artifactId>
     <artifactId>protobuf-parent</artifactId>
-    <version>3.2.0rc2</version>
+    <version>3.2.0</version>
   </parent>
   </parent>
 
 
   <artifactId>protobuf-java-util</artifactId>
   <artifactId>protobuf-java-util</artifactId>

+ 1 - 1
javanano/pom.xml

@@ -10,7 +10,7 @@
   </parent>
   </parent>
   <groupId>com.google.protobuf.nano</groupId>
   <groupId>com.google.protobuf.nano</groupId>
   <artifactId>protobuf-javanano</artifactId>
   <artifactId>protobuf-javanano</artifactId>
-  <version>3.2.0rc2</version>
+  <version>3.2.0</version>
   <packaging>bundle</packaging>
   <packaging>bundle</packaging>
   <name>Protocol Buffer JavaNano API</name>
   <name>Protocol Buffer JavaNano API</name>
   <description>
   <description>

+ 1 - 1
js/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "google-protobuf",
   "name": "google-protobuf",
-  "version": "3.2.0-rc.2",
+  "version": "3.2.0",
   "description": "Protocol Buffers for JavaScript",
   "description": "Protocol Buffers for JavaScript",
   "main": "google-protobuf.js",
   "main": "google-protobuf.js",
   "files": [
   "files": [

+ 21 - 21
objectivec/GPBArray.h

@@ -96,7 +96,7 @@ NS_ASSUME_NONNULL_BEGIN
  *
  *
  * @return A newly initialized GPBInt32Array with a copy of the values.
  * @return A newly initialized GPBInt32Array with a copy of the values.
  **/
  **/
-- (instancetype)initWithValues:(const int32_t [])values
+- (instancetype)initWithValues:(const int32_t [__nullable])values
                          count:(NSUInteger)count;
                          count:(NSUInteger)count;
 
 
 /**
 /**
@@ -161,7 +161,7 @@ NS_ASSUME_NONNULL_BEGIN
  * @param values The values to add to this array.
  * @param values The values to add to this array.
  * @param count  The number of elements to add.
  * @param count  The number of elements to add.
  **/
  **/
-- (void)addValues:(const int32_t [])values count:(NSUInteger)count;
+- (void)addValues:(const int32_t [__nullable])values count:(NSUInteger)count;
 
 
 /**
 /**
  * Adds the values from the given array to this array.
  * Adds the values from the given array to this array.
@@ -268,7 +268,7 @@ NS_ASSUME_NONNULL_BEGIN
  *
  *
  * @return A newly initialized GPBUInt32Array with a copy of the values.
  * @return A newly initialized GPBUInt32Array with a copy of the values.
  **/
  **/
-- (instancetype)initWithValues:(const uint32_t [])values
+- (instancetype)initWithValues:(const uint32_t [__nullable])values
                          count:(NSUInteger)count;
                          count:(NSUInteger)count;
 
 
 /**
 /**
@@ -333,7 +333,7 @@ NS_ASSUME_NONNULL_BEGIN
  * @param values The values to add to this array.
  * @param values The values to add to this array.
  * @param count  The number of elements to add.
  * @param count  The number of elements to add.
  **/
  **/
-- (void)addValues:(const uint32_t [])values count:(NSUInteger)count;
+- (void)addValues:(const uint32_t [__nullable])values count:(NSUInteger)count;
 
 
 /**
 /**
  * Adds the values from the given array to this array.
  * Adds the values from the given array to this array.
@@ -440,7 +440,7 @@ NS_ASSUME_NONNULL_BEGIN
  *
  *
  * @return A newly initialized GPBInt64Array with a copy of the values.
  * @return A newly initialized GPBInt64Array with a copy of the values.
  **/
  **/
-- (instancetype)initWithValues:(const int64_t [])values
+- (instancetype)initWithValues:(const int64_t [__nullable])values
                          count:(NSUInteger)count;
                          count:(NSUInteger)count;
 
 
 /**
 /**
@@ -505,7 +505,7 @@ NS_ASSUME_NONNULL_BEGIN
  * @param values The values to add to this array.
  * @param values The values to add to this array.
  * @param count  The number of elements to add.
  * @param count  The number of elements to add.
  **/
  **/
-- (void)addValues:(const int64_t [])values count:(NSUInteger)count;
+- (void)addValues:(const int64_t [__nullable])values count:(NSUInteger)count;
 
 
 /**
 /**
  * Adds the values from the given array to this array.
  * Adds the values from the given array to this array.
@@ -612,7 +612,7 @@ NS_ASSUME_NONNULL_BEGIN
  *
  *
  * @return A newly initialized GPBUInt64Array with a copy of the values.
  * @return A newly initialized GPBUInt64Array with a copy of the values.
  **/
  **/
-- (instancetype)initWithValues:(const uint64_t [])values
+- (instancetype)initWithValues:(const uint64_t [__nullable])values
                          count:(NSUInteger)count;
                          count:(NSUInteger)count;
 
 
 /**
 /**
@@ -677,7 +677,7 @@ NS_ASSUME_NONNULL_BEGIN
  * @param values The values to add to this array.
  * @param values The values to add to this array.
  * @param count  The number of elements to add.
  * @param count  The number of elements to add.
  **/
  **/
-- (void)addValues:(const uint64_t [])values count:(NSUInteger)count;
+- (void)addValues:(const uint64_t [__nullable])values count:(NSUInteger)count;
 
 
 /**
 /**
  * Adds the values from the given array to this array.
  * Adds the values from the given array to this array.
@@ -784,7 +784,7 @@ NS_ASSUME_NONNULL_BEGIN
  *
  *
  * @return A newly initialized GPBFloatArray with a copy of the values.
  * @return A newly initialized GPBFloatArray with a copy of the values.
  **/
  **/
-- (instancetype)initWithValues:(const float [])values
+- (instancetype)initWithValues:(const float [__nullable])values
                          count:(NSUInteger)count;
                          count:(NSUInteger)count;
 
 
 /**
 /**
@@ -849,7 +849,7 @@ NS_ASSUME_NONNULL_BEGIN
  * @param values The values to add to this array.
  * @param values The values to add to this array.
  * @param count  The number of elements to add.
  * @param count  The number of elements to add.
  **/
  **/
-- (void)addValues:(const float [])values count:(NSUInteger)count;
+- (void)addValues:(const float [__nullable])values count:(NSUInteger)count;
 
 
 /**
 /**
  * Adds the values from the given array to this array.
  * Adds the values from the given array to this array.
@@ -956,7 +956,7 @@ NS_ASSUME_NONNULL_BEGIN
  *
  *
  * @return A newly initialized GPBDoubleArray with a copy of the values.
  * @return A newly initialized GPBDoubleArray with a copy of the values.
  **/
  **/
-- (instancetype)initWithValues:(const double [])values
+- (instancetype)initWithValues:(const double [__nullable])values
                          count:(NSUInteger)count;
                          count:(NSUInteger)count;
 
 
 /**
 /**
@@ -1021,7 +1021,7 @@ NS_ASSUME_NONNULL_BEGIN
  * @param values The values to add to this array.
  * @param values The values to add to this array.
  * @param count  The number of elements to add.
  * @param count  The number of elements to add.
  **/
  **/
-- (void)addValues:(const double [])values count:(NSUInteger)count;
+- (void)addValues:(const double [__nullable])values count:(NSUInteger)count;
 
 
 /**
 /**
  * Adds the values from the given array to this array.
  * Adds the values from the given array to this array.
@@ -1128,7 +1128,7 @@ NS_ASSUME_NONNULL_BEGIN
  *
  *
  * @return A newly initialized GPBBoolArray with a copy of the values.
  * @return A newly initialized GPBBoolArray with a copy of the values.
  **/
  **/
-- (instancetype)initWithValues:(const BOOL [])values
+- (instancetype)initWithValues:(const BOOL [__nullable])values
                          count:(NSUInteger)count;
                          count:(NSUInteger)count;
 
 
 /**
 /**
@@ -1193,7 +1193,7 @@ NS_ASSUME_NONNULL_BEGIN
  * @param values The values to add to this array.
  * @param values The values to add to this array.
  * @param count  The number of elements to add.
  * @param count  The number of elements to add.
  **/
  **/
-- (void)addValues:(const BOOL [])values count:(NSUInteger)count;
+- (void)addValues:(const BOOL [__nullable])values count:(NSUInteger)count;
 
 
 /**
 /**
  * Adds the values from the given array to this array.
  * Adds the values from the given array to this array.
@@ -1325,7 +1325,7 @@ NS_ASSUME_NONNULL_BEGIN
  * @return A newly initialized GPBEnumArray with a copy of the values.
  * @return A newly initialized GPBEnumArray with a copy of the values.
  **/
  **/
 - (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
 - (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
-                                 rawValues:(const int32_t [])values
+                                 rawValues:(const int32_t [__nullable])values
                                      count:(NSUInteger)count;
                                      count:(NSUInteger)count;
 
 
 /**
 /**
@@ -1435,7 +1435,7 @@ NS_ASSUME_NONNULL_BEGIN
  * @param values The values to add to this array.
  * @param values The values to add to this array.
  * @param count  The number of elements to add.
  * @param count  The number of elements to add.
  **/
  **/
-- (void)addValues:(const int32_t [])values count:(NSUInteger)count;
+- (void)addValues:(const int32_t [__nullable])values count:(NSUInteger)count;
 
 
 
 
 /**
 /**
@@ -1486,7 +1486,7 @@ NS_ASSUME_NONNULL_BEGIN
  * @param values Array containing the raw enum values to add to this array.
  * @param values Array containing the raw enum values to add to this array.
  * @param count  The number of raw values to add.
  * @param count  The number of raw values to add.
  **/
  **/
-- (void)addRawValues:(const int32_t [])values count:(NSUInteger)count;
+- (void)addRawValues:(const int32_t [__nullable])values count:(NSUInteger)count;
 
 
 /**
 /**
  * Inserts a raw enum value at the given index.
  * Inserts a raw enum value at the given index.
@@ -1613,7 +1613,7 @@ NS_ASSUME_NONNULL_END
 //% *
 //% *
 //% * @return A newly initialized GPB##NAME##Array with a copy of the values.
 //% * @return A newly initialized GPB##NAME##Array with a copy of the values.
 //% **/
 //% **/
-//%- (instancetype)initWithValues:(const TYPE [])values
+//%- (instancetype)initWithValues:(const TYPE [__nullable])values
 //%                         count:(NSUInteger)count;
 //%                         count:(NSUInteger)count;
 //%
 //%
 //%/**
 //%/**
@@ -1730,7 +1730,7 @@ NS_ASSUME_NONNULL_END
 //% * @return A newly initialized GPB##NAME##Array with a copy of the values.
 //% * @return A newly initialized GPB##NAME##Array with a copy of the values.
 //% **/
 //% **/
 //%- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
 //%- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
-//%                                 rawValues:(const TYPE [])values
+//%                                 rawValues:(const TYPE [__nullable])values
 //%                                     count:(NSUInteger)count;
 //%                                     count:(NSUInteger)count;
 //%
 //%
 //%/**
 //%/**
@@ -1849,7 +1849,7 @@ NS_ASSUME_NONNULL_END
 //% * @param values The values to add to this array.
 //% * @param values The values to add to this array.
 //% * @param count  The number of elements to add.
 //% * @param count  The number of elements to add.
 //% **/
 //% **/
-//%- (void)addValues:(const TYPE [])values count:(NSUInteger)count;
+//%- (void)addValues:(const TYPE [__nullable])values count:(NSUInteger)count;
 //%
 //%
 //%ARRAY_EXTRA_MUTABLE_METHODS1_##HELPER_NAME(NAME, TYPE)
 //%ARRAY_EXTRA_MUTABLE_METHODS1_##HELPER_NAME(NAME, TYPE)
 //%/**
 //%/**
@@ -1939,7 +1939,7 @@ NS_ASSUME_NONNULL_END
 //% * @param values Array containing the raw enum values to add to this array.
 //% * @param values Array containing the raw enum values to add to this array.
 //% * @param count  The number of raw values to add.
 //% * @param count  The number of raw values to add.
 //% **/
 //% **/
-//%- (void)addRawValues:(const TYPE [])values count:(NSUInteger)count;
+//%- (void)addRawValues:(const TYPE [__nullable])values count:(NSUInteger)count;
 //%
 //%
 //%/**
 //%/**
 //% * Inserts a raw enum value at the given index.
 //% * Inserts a raw enum value at the given index.

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 182 - 182
objectivec/GPBDictionary.h


+ 14 - 3
objectivec/GPBWellKnownTypes.h

@@ -112,16 +112,27 @@ typedef NS_ENUM(NSInteger, GPBWellKnownTypesErrorCode) {
  * @note: Not all second/nanos combinations can be represented in a
  * @note: Not all second/nanos combinations can be represented in a
  * NSTimeInterval, so getting this could be a lossy transform.
  * NSTimeInterval, so getting this could be a lossy transform.
  **/
  **/
-@property(nonatomic, readwrite) NSTimeInterval timeIntervalSince1970;
+@property(nonatomic, readwrite) NSTimeInterval timeInterval;
 
 
 /**
 /**
  * Initializes a GPBDuration with the given NSTimeInterval.
  * Initializes a GPBDuration with the given NSTimeInterval.
  *
  *
- * @param timeIntervalSince1970 Time interval to configure the GPBDuration with.
+ * @param timeInterval Time interval to configure the GPBDuration with.
  *
  *
  * @return A newly initialized GPBDuration.
  * @return A newly initialized GPBDuration.
  **/
  **/
-- (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970;
+- (instancetype)initWithTimeInterval:(NSTimeInterval)timeInterval;
+
+// These next two methods are deprecated because GBPDuration has no need of a
+// "base" time. The older methods were about symmetry with GBPTimestamp, but
+// the unix epoch usage is too confusing.
+
+/** Deprecated, use timeInterval instead. */
+@property(nonatomic, readwrite) NSTimeInterval timeIntervalSince1970
+    __attribute__((deprecated("Use timeInterval")));
+/** Deprecated, use initWithTimeInterval: instead. */
+- (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970
+    __attribute__((deprecated("Use initWithTimeInterval:")));
 
 
 @end
 @end
 
 

+ 37 - 15
objectivec/GPBWellKnownTypes.m

@@ -41,15 +41,25 @@ NSString *const GPBWellKnownTypesErrorDomain =
 
 
 static NSString *kTypePrefixGoogleApisCom = @"type.googleapis.com/";
 static NSString *kTypePrefixGoogleApisCom = @"type.googleapis.com/";
 
 
-static NSTimeInterval TimeIntervalSince1970FromSecondsAndNanos(int64_t seconds,
-                                                               int32_t nanos) {
+static NSTimeInterval TimeIntervalFromSecondsAndNanos(int64_t seconds,
+                                                      int32_t nanos) {
   return seconds + (NSTimeInterval)nanos / 1e9;
   return seconds + (NSTimeInterval)nanos / 1e9;
 }
 }
 
 
-static int32_t SecondsAndNanosFromTimeIntervalSince1970(NSTimeInterval time,
-                                                        int64_t *outSeconds) {
+static int32_t SecondsAndNanosFromTimeInterval(NSTimeInterval time,
+                                               int64_t *outSeconds,
+                                               BOOL nanosMustBePositive) {
   NSTimeInterval seconds;
   NSTimeInterval seconds;
   NSTimeInterval nanos = modf(time, &seconds);
   NSTimeInterval nanos = modf(time, &seconds);
+
+  if (nanosMustBePositive && (nanos < 0)) {
+    // Per Timestamp.proto, nanos is non-negative and "Negative second values with
+    // fractions must still have non-negative nanos values that count forward in
+    // time. Must be from 0 to 999,999,999 inclusive."
+    --seconds;
+    nanos = 1.0 + nanos;
+  }
+
   nanos *= 1e9;
   nanos *= 1e9;
   *outSeconds = (int64_t)seconds;
   *outSeconds = (int64_t)seconds;
   return (int32_t)nanos;
   return (int32_t)nanos;
@@ -88,8 +98,8 @@ static NSString *ParseTypeFromURL(NSString *typeURLString) {
 - (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
 - (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
   if ((self = [super init])) {
   if ((self = [super init])) {
     int64_t seconds;
     int64_t seconds;
-    int32_t nanos = SecondsAndNanosFromTimeIntervalSince1970(
-        timeIntervalSince1970, &seconds);
+    int32_t nanos = SecondsAndNanosFromTimeInterval(
+        timeIntervalSince1970, &seconds, YES);
     self.seconds = seconds;
     self.seconds = seconds;
     self.nanos = nanos;
     self.nanos = nanos;
   }
   }
@@ -105,13 +115,13 @@ static NSString *ParseTypeFromURL(NSString *typeURLString) {
 }
 }
 
 
 - (NSTimeInterval)timeIntervalSince1970 {
 - (NSTimeInterval)timeIntervalSince1970 {
-  return TimeIntervalSince1970FromSecondsAndNanos(self.seconds, self.nanos);
+  return TimeIntervalFromSecondsAndNanos(self.seconds, self.nanos);
 }
 }
 
 
 - (void)setTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
 - (void)setTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
   int64_t seconds;
   int64_t seconds;
   int32_t nanos =
   int32_t nanos =
-      SecondsAndNanosFromTimeIntervalSince1970(timeIntervalSince1970, &seconds);
+      SecondsAndNanosFromTimeInterval(timeIntervalSince1970, &seconds, YES);
   self.seconds = seconds;
   self.seconds = seconds;
   self.nanos = nanos;
   self.nanos = nanos;
 }
 }
@@ -122,29 +132,41 @@ static NSString *ParseTypeFromURL(NSString *typeURLString) {
 
 
 @implementation GPBDuration (GBPWellKnownTypes)
 @implementation GPBDuration (GBPWellKnownTypes)
 
 
-- (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
+- (instancetype)initWithTimeInterval:(NSTimeInterval)timeInterval {
   if ((self = [super init])) {
   if ((self = [super init])) {
     int64_t seconds;
     int64_t seconds;
-    int32_t nanos = SecondsAndNanosFromTimeIntervalSince1970(
-        timeIntervalSince1970, &seconds);
+    int32_t nanos = SecondsAndNanosFromTimeInterval(
+        timeInterval, &seconds, NO);
     self.seconds = seconds;
     self.seconds = seconds;
     self.nanos = nanos;
     self.nanos = nanos;
   }
   }
   return self;
   return self;
 }
 }
 
 
-- (NSTimeInterval)timeIntervalSince1970 {
-  return TimeIntervalSince1970FromSecondsAndNanos(self.seconds, self.nanos);
+- (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
+  return [self initWithTimeInterval:timeIntervalSince1970];
 }
 }
 
 
-- (void)setTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
+- (NSTimeInterval)timeInterval {
+  return TimeIntervalFromSecondsAndNanos(self.seconds, self.nanos);
+}
+
+- (void)setTimeInterval:(NSTimeInterval)timeInterval {
   int64_t seconds;
   int64_t seconds;
   int32_t nanos =
   int32_t nanos =
-      SecondsAndNanosFromTimeIntervalSince1970(timeIntervalSince1970, &seconds);
+      SecondsAndNanosFromTimeInterval(timeInterval, &seconds, NO);
   self.seconds = seconds;
   self.seconds = seconds;
   self.nanos = nanos;
   self.nanos = nanos;
 }
 }
 
 
+- (NSTimeInterval)timeIntervalSince1970 {
+  return self.timeInterval;
+}
+
+- (void)setTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
+  self.timeInterval = timeIntervalSince1970;
+}
+
 @end
 @end
 
 
 #pragma mark - GPBAny
 #pragma mark - GPBAny

+ 109 - 53
objectivec/Tests/GPBWellKnownTypesTest.m

@@ -32,11 +32,9 @@
 
 
 #import <XCTest/XCTest.h>
 #import <XCTest/XCTest.h>
 
 
+#import "GPBTestUtilities.h"
 #import "google/protobuf/AnyTest.pbobjc.h"
 #import "google/protobuf/AnyTest.pbobjc.h"
 
 
-// A basically random interval into the future for testing with.
-static const NSTimeInterval kFutureOffsetInterval = 15000;
-
 // Nanosecond time accuracy
 // Nanosecond time accuracy
 static const NSTimeInterval kTimeAccuracy = 1e-9;
 static const NSTimeInterval kTimeAccuracy = 1e-9;
 
 
@@ -46,59 +44,117 @@ static const NSTimeInterval kTimeAccuracy = 1e-9;
 @implementation WellKnownTypesTest
 @implementation WellKnownTypesTest
 
 
 - (void)testTimeStamp {
 - (void)testTimeStamp {
-  // Test Creation.
-  NSDate *date = [NSDate date];
-  GPBTimestamp *timeStamp = [[GPBTimestamp alloc] initWithDate:date];
-  NSDate *timeStampDate = timeStamp.date;
-
-  // Comparing timeIntervals instead of directly comparing dates because date
-  // equality requires the time intervals to be exactly the same, and the
-  // timeintervals go through a bit of floating point error as they are
-  // converted back and forth from the internal representation.
-  XCTAssertEqualWithAccuracy(date.timeIntervalSince1970,
-                             timeStampDate.timeIntervalSince1970,
-                             kTimeAccuracy);
-
-  NSTimeInterval time = [date timeIntervalSince1970];
-  GPBTimestamp *timeStamp2 =
-      [[GPBTimestamp alloc] initWithTimeIntervalSince1970:time];
-  NSTimeInterval durationTime = timeStamp2.timeIntervalSince1970;
-  XCTAssertEqualWithAccuracy(time, durationTime, kTimeAccuracy);
-  [timeStamp release];
-
-  // Test Mutation.
-  date = [NSDate dateWithTimeIntervalSinceNow:kFutureOffsetInterval];
-  timeStamp2.date = date;
-  timeStampDate = timeStamp2.date;
-  XCTAssertEqualWithAccuracy(date.timeIntervalSince1970,
-                             timeStampDate.timeIntervalSince1970,
-                             kTimeAccuracy);
-
-  time = date.timeIntervalSince1970;
-  timeStamp2.timeIntervalSince1970 = time;
-  durationTime = timeStamp2.timeIntervalSince1970;
-  XCTAssertEqualWithAccuracy(time, durationTime, kTimeAccuracy);
-  [timeStamp2 release];
+  // Test negative and positive values.
+  NSTimeInterval values[] = {
+      -428027599.483999967, -1234567.0, -0.5, 0, 0.75, 54321.0, 2468086,483999967
+  };
+  for (size_t i = 0; i < GPBARRAYSIZE(values); ++i) {
+    NSTimeInterval value = values[i];
+
+    // Test Creation - date.
+    NSDate *date = [NSDate dateWithTimeIntervalSince1970:value];
+    GPBTimestamp *timeStamp = [[GPBTimestamp alloc] initWithDate:date];
+
+    XCTAssertGreaterThanOrEqual(timeStamp.nanos, 0,
+                                @"Offset %f - Date: %@", (double)value, date);
+    XCTAssertLessThan(timeStamp.nanos, 1e9,
+                      @"Offset %f - Date: %@", (double)value, date);
+
+    // Comparing timeIntervals instead of directly comparing dates because date
+    // equality requires the time intervals to be exactly the same, and the
+    // timeintervals go through a bit of floating point error as they are
+    // converted back and forth from the internal representation.
+    XCTAssertEqualWithAccuracy(value, timeStamp.date.timeIntervalSince1970,
+                               kTimeAccuracy,
+                               @"Offset %f - Date: %@", (double)value, date);
+    [timeStamp release];
+
+    // Test Creation - timeIntervalSince1970.
+    timeStamp = [[GPBTimestamp alloc] initWithTimeIntervalSince1970:value];
+
+    XCTAssertGreaterThanOrEqual(timeStamp.nanos, 0,
+                                @"Offset %f - Date: %@", (double)value, date);
+    XCTAssertLessThan(timeStamp.nanos, 1e9,
+                      @"Offset %f - Date: %@", (double)value, date);
+
+    XCTAssertEqualWithAccuracy(value, timeStamp.timeIntervalSince1970,
+                               kTimeAccuracy,
+                               @"Offset %f - Date: %@", (double)value, date);
+    [timeStamp release];
+
+    // Test Mutation - date.
+    timeStamp = [[GPBTimestamp alloc] init];
+    timeStamp.date = date;
+
+    XCTAssertGreaterThanOrEqual(timeStamp.nanos, 0,
+                                @"Offset %f - Date: %@", (double)value, date);
+    XCTAssertLessThan(timeStamp.nanos, 1e9,
+                      @"Offset %f - Date: %@", (double)value, date);
+
+    XCTAssertEqualWithAccuracy(value, timeStamp.date.timeIntervalSince1970,
+                               kTimeAccuracy,
+                               @"Offset %f - Date: %@", (double)value, date);
+    [timeStamp release];
+
+    // Test Mutation - timeIntervalSince1970.
+    timeStamp = [[GPBTimestamp alloc] init];
+    timeStamp.timeIntervalSince1970 = value;
+
+    XCTAssertGreaterThanOrEqual(timeStamp.nanos, 0,
+                                @"Offset %f - Date: %@", (double)value, date);
+    XCTAssertLessThan(timeStamp.nanos, 1e9,
+                      @"Offset %f - Date: %@", (double)value, date);
+
+    XCTAssertEqualWithAccuracy(value, timeStamp.date.timeIntervalSince1970,
+                               kTimeAccuracy,
+                               @"Offset %f - Date: %@", (double)value, date);
+
+    [timeStamp release];
+  }
 }
 }
 
 
 - (void)testDuration {
 - (void)testDuration {
-  // Test Creation.
-  NSTimeInterval time = [[NSDate date] timeIntervalSince1970];
-  GPBDuration *duration =
-      [[GPBDuration alloc] initWithTimeIntervalSince1970:time];
-  NSTimeInterval durationTime = duration.timeIntervalSince1970;
-  XCTAssertEqualWithAccuracy(time, durationTime, kTimeAccuracy);
-  [duration release];
-
-  // Test Mutation.
-  GPBDuration *duration2 =
-      [[GPBDuration alloc] initWithTimeIntervalSince1970:time];
-  NSDate *date = [NSDate dateWithTimeIntervalSinceNow:kFutureOffsetInterval];
-  time = date.timeIntervalSince1970;
-  duration2.timeIntervalSince1970 = time;
-  durationTime = duration2.timeIntervalSince1970;
-  XCTAssertEqualWithAccuracy(time, durationTime, kTimeAccuracy);
-  [duration2 release];
+  // Test negative and positive values.
+  NSTimeInterval values[] = { -1000.0001, -500.0, -0.5, 0, 0.75, 1000.0, 2000.0002 };
+  for (size_t i = 0; i < GPBARRAYSIZE(values); ++i) {
+    NSTimeInterval value = values[i];
+
+    // Test Creation.
+    GPBDuration *duration =
+        [[GPBDuration alloc] initWithTimeInterval:value];
+    XCTAssertEqualWithAccuracy(value, duration.timeInterval, kTimeAccuracy,
+                               @"For interval %f", (double)value);
+    if (value > 0) {
+      XCTAssertGreaterThanOrEqual(duration.seconds, 0,
+                                  @"For interval %f", (double)value);
+      XCTAssertGreaterThanOrEqual(duration.nanos, 0,
+                                  @"For interval %f", (double)value);
+    } else {
+      XCTAssertLessThanOrEqual(duration.seconds, 0,
+                               @"For interval %f", (double)value);
+      XCTAssertLessThanOrEqual(duration.nanos, 0,
+                               @"For interval %f", (double)value);
+    }
+    [duration release];
+
+    // Test Mutation.
+    duration = [[GPBDuration alloc] init];
+    duration.timeInterval = value;
+    XCTAssertEqualWithAccuracy(value, duration.timeInterval, kTimeAccuracy,
+                               @"For interval %f", (double)value);
+    if (value > 0) {
+      XCTAssertGreaterThanOrEqual(duration.seconds, 0,
+                                  @"For interval %f", (double)value);
+      XCTAssertGreaterThanOrEqual(duration.nanos, 0,
+                                  @"For interval %f", (double)value);
+    } else {
+      XCTAssertLessThanOrEqual(duration.seconds, 0,
+                               @"For interval %f", (double)value);
+      XCTAssertLessThanOrEqual(duration.nanos, 0,
+                               @"For interval %f", (double)value);
+    }
+    [duration release];
+  }
 }
 }
 
 
 - (void)testAnyHelpers {
 - (void)testAnyHelpers {

+ 4 - 4
php/ext/google/protobuf/package.xml

@@ -13,8 +13,8 @@
  <date>2017-01-13</date>
  <date>2017-01-13</date>
  <time>16:06:07</time>
  <time>16:06:07</time>
  <version>
  <version>
-  <release>3.2.0a1rc2</release>
-  <api>3.2.0a1rc2</api>
+  <release>3.2.0a1</release>
+  <api>3.2.0a1</api>
  </version>
  </version>
  <stability>
  <stability>
   <release>alpha</release>
   <release>alpha</release>
@@ -73,8 +73,8 @@ First alpha release
   </release>
   </release>
   <release>
   <release>
    <version>
    <version>
-    <release>3.2.0a1rc2</release>
-    <api>3.2.0a1rc2</api>
+    <release>3.2.0a1</release>
+    <api>3.2.0a1</api>
    </version>
    </version>
    <stability>
    <stability>
     <release>alpha</release>
     <release>alpha</release>

+ 1 - 1
php/ext/google/protobuf/protobuf.h

@@ -37,7 +37,7 @@
 #include "upb.h"
 #include "upb.h"
 
 
 #define PHP_PROTOBUF_EXTNAME "protobuf"
 #define PHP_PROTOBUF_EXTNAME "protobuf"
-#define PHP_PROTOBUF_VERSION "3.2.0a1rc2"
+#define PHP_PROTOBUF_VERSION "3.2.0a1"
 
 
 #define MAX_LENGTH_OF_INT64 20
 #define MAX_LENGTH_OF_INT64 20
 #define SIZEOF_INT64 8
 #define SIZEOF_INT64 8

+ 1 - 1
php/ext/google/protobuf/upb.c

@@ -9728,7 +9728,7 @@ static size_t encode_strbuf(void *c, const void *hd, const char *buf,
 T(double,   double,   dbl2uint64,   encode_fixed64)
 T(double,   double,   dbl2uint64,   encode_fixed64)
 T(float,    float,    flt2uint32,   encode_fixed32)
 T(float,    float,    flt2uint32,   encode_fixed32)
 T(int64,    int64_t,  uint64_t,     encode_varint)
 T(int64,    int64_t,  uint64_t,     encode_varint)
-T(int32,    int32_t,  uint32_t,     encode_varint)
+T(int32,    int32_t,  int64_t,      encode_varint)
 T(fixed64,  uint64_t, uint64_t,     encode_fixed64)
 T(fixed64,  uint64_t, uint64_t,     encode_fixed64)
 T(fixed32,  uint32_t, uint32_t,     encode_fixed32)
 T(fixed32,  uint32_t, uint32_t,     encode_fixed32)
 T(bool,     bool,     bool,         encode_varint)
 T(bool,     bool,     bool,         encode_varint)

+ 6 - 2
php/src/Google/Protobuf/Internal/GPBWire.php

@@ -403,10 +403,14 @@ class GPBWire
         return self::varint32Size($tag);
         return self::varint32Size($tag);
     }
     }
 
 
-    public static function varint32Size($value)
+    public static function varint32Size($value, $sign_extended = false)
     {
     {
         if ($value < 0) {
         if ($value < 0) {
-            return 5;
+            if ($sign_extended) {
+                return 10;
+            } else {
+                return 5;
+            }
         }
         }
         if ($value < (1 <<  7)) {
         if ($value < (1 <<  7)) {
             return 1;
             return 1;

+ 0 - 1
php/src/Google/Protobuf/Internal/InputStream.php

@@ -70,7 +70,6 @@ class InputStream
     private $total_bytes_read;
     private $total_bytes_read;
 
 
     const MAX_VARINT_BYTES = 10;
     const MAX_VARINT_BYTES = 10;
-    const MAX_VARINT32_BYTES = 5;
     const DEFAULT_RECURSION_LIMIT = 100;
     const DEFAULT_RECURSION_LIMIT = 100;
     const DEFAULT_TOTAL_BYTES_LIMIT = 33554432; // 32 << 20, 32MB
     const DEFAULT_TOTAL_BYTES_LIMIT = 33554432; // 32 << 20, 32MB
 
 

+ 3 - 1
php/src/Google/Protobuf/Internal/Message.php

@@ -582,9 +582,11 @@ class Message
             case GPBType::SFIXED64:
             case GPBType::SFIXED64:
                 $size += 8;
                 $size += 8;
                 break;
                 break;
-            case GPBType::UINT32:
             case GPBType::INT32:
             case GPBType::INT32:
             case GPBType::ENUM:
             case GPBType::ENUM:
+                $size += GPBWire::varint32Size($value, true);
+                break;
+            case GPBType::UINT32:
                 $size += GPBWire::varint32Size($value);
                 $size += GPBWire::varint32Size($value);
                 break;
                 break;
             case GPBType::UINT64:
             case GPBType::UINT64:

+ 5 - 10
php/src/Google/Protobuf/Internal/OutputStream.php

@@ -39,7 +39,6 @@ class OutputStream
     private $buffer_size;
     private $buffer_size;
     private $current;
     private $current;
 
 
-    const MAX_VARINT32_BYTES = 5;
     const MAX_VARINT64_BYTES = 10;
     const MAX_VARINT64_BYTES = 10;
 
 
     public function __construct($size)
     public function __construct($size)
@@ -56,8 +55,8 @@ class OutputStream
 
 
     public function writeVarint32($value)
     public function writeVarint32($value)
     {
     {
-        $bytes = str_repeat(chr(0), self::MAX_VARINT32_BYTES);
-        $size = self::writeVarintToArray($value, $bytes, true);
+        $bytes = str_repeat(chr(0), self::MAX_VARINT64_BYTES);
+        $size = self::writeVarintToArray($value, $bytes);
         return $this->writeRaw($bytes, $size);
         return $this->writeRaw($bytes, $size);
     }
     }
 
 
@@ -102,20 +101,16 @@ class OutputStream
         return true;
         return true;
     }
     }
 
 
-    private static function writeVarintToArray($value, &$buffer, $trim = false)
+    private static function writeVarintToArray($value, &$buffer)
     {
     {
         $current = 0;
         $current = 0;
 
 
         $high = 0;
         $high = 0;
         $low = 0;
         $low = 0;
         if (PHP_INT_SIZE == 4) {
         if (PHP_INT_SIZE == 4) {
-            GPBUtil::divideInt64ToInt32($value, $high, $low, $trim);
+            GPBUtil::divideInt64ToInt32($value, $high, $low);
         } else {
         } else {
-            if ($trim) {
-                $low = $value & 0xFFFFFFFF;
-            } else {
-                $low = $value;
-            }
+            $low = $value;
         }
         }
 
 
         while ($low >= 0x80 || $low < 0) {
         while ($low >= 0x80 || $low < 0) {

+ 23 - 1
php/tests/encode_decode_test.php

@@ -22,7 +22,8 @@ class EncodeDecodeTest extends TestBase
         $this->expectFields($from);
         $this->expectFields($from);
 
 
         $data = $from->encode();
         $data = $from->encode();
-        $this->assertSame(TestUtil::getGoldenTestMessage(), $data);
+        $this->assertSame(bin2hex(TestUtil::getGoldenTestMessage()),
+                          bin2hex($data));
     }
     }
 
 
     public function testDecode()
     public function testDecode()
@@ -173,4 +174,25 @@ class EncodeDecodeTest extends TestBase
         $m = new TestMessage();
         $m = new TestMessage();
         $m->decode($data);
         $m->decode($data);
     }
     }
+
+    public function testEncodeNegativeInt32()
+    {
+        $m = new TestMessage();
+        $m->setOptionalInt32(-1);
+        $data = $m->encode();
+        $this->assertSame("08ffffffffffffffffff01", bin2hex($data));
+    }
+
+    public function testDecodeNegativeInt32()
+    {
+        $m = new TestMessage();
+        $this->assertEquals(0, $m->getOptionalInt32());
+        $m->decode(hex2bin("08ffffffffffffffffff01"));
+        $this->assertEquals(-1, $m->getOptionalInt32());
+
+        $m = new TestMessage();
+        $this->assertEquals(0, $m->getOptionalInt32());
+        $m->decode(hex2bin("08ffffffff0f"));
+        $this->assertEquals(-1, $m->getOptionalInt32());
+    }
 }
 }

+ 7 - 2
php/tests/php_implementation_test.php

@@ -469,6 +469,11 @@ class ImplementationTest extends TestBase
         $output = new OutputStream(3);
         $output = new OutputStream(3);
         $output->writeVarint32(16384);
         $output->writeVarint32(16384);
         $this->assertSame(hex2bin('808001'), $output->getData());
         $this->assertSame(hex2bin('808001'), $output->getData());
+
+        // Negative numbers are padded to be compatible with int64.
+        $output = new OutputStream(10);
+        $output->writeVarint32(-43);
+        $this->assertSame(hex2bin('D5FFFFFFFFFFFFFFFF01'), $output->getData());
     }
     }
 
 
     public function testWriteVarint64()
     public function testWriteVarint64()
@@ -496,13 +501,13 @@ class ImplementationTest extends TestBase
     {
     {
         $m = new TestMessage();
         $m = new TestMessage();
         TestUtil::setTestMessage($m);
         TestUtil::setTestMessage($m);
-        $this->assertSame(447, $m->byteSize());
+        $this->assertSame(472, $m->byteSize());
     }
     }
 
 
     public function testPackedByteSize()
     public function testPackedByteSize()
     {
     {
         $m = new TestPackedMessage();
         $m = new TestPackedMessage();
         TestUtil::setTestPackedMessage($m);
         TestUtil::setTestPackedMessage($m);
-        $this->assertSame(156, $m->byteSize());
+        $this->assertSame(166, $m->byteSize());
     }
     }
 }
 }

+ 6 - 6
php/tests/test_util.php

@@ -235,7 +235,7 @@ class TestUtil
     public static function getGoldenTestMessage()
     public static function getGoldenTestMessage()
     {
     {
         return hex2bin(
         return hex2bin(
-            "08D6FFFFFF0F" .
+            "08D6FFFFFFFFFFFFFFFF01" .
             "10D5FFFFFFFFFFFFFFFF01" .
             "10D5FFFFFFFFFFFFFFFF01" .
             "182A" .
             "182A" .
             "202B" .
             "202B" .
@@ -253,8 +253,8 @@ class TestUtil
             "800101" .
             "800101" .
             "8A01020821" .
             "8A01020821" .
 
 
-            "F801D6FFFFFF0F" .
-            "F801CCFFFFFF0F" .
+            "F801D6FFFFFFFFFFFFFFFF01" .
+            "F801CCFFFFFFFFFFFFFFFF01" .
             "8002D5FFFFFFFFFFFFFFFF01" .
             "8002D5FFFFFFFFFFFFFFFF01" .
             "8002CBFFFFFFFFFFFFFFFF01" .
             "8002CBFFFFFFFFFFFFFFFF01" .
             "88022A" .
             "88022A" .
@@ -288,7 +288,7 @@ class TestUtil
             "FA02020822" .
             "FA02020822" .
             "FA02020823" .
             "FA02020823" .
 
 
-            "BA040C08C2FFFFFF0F10C2FFFFFF0F" .
+            "BA041608C2FFFFFFFFFFFFFFFF0110C2FFFFFFFFFFFFFFFF01" .
             "C2041608C1FFFFFFFFFFFFFFFF0110C1FFFFFFFFFFFFFFFF01" .
             "C2041608C1FFFFFFFFFFFFFFFF0110C1FFFFFFFFFFFFFFFF01" .
             "CA0404083E103E" .
             "CA0404083E103E" .
             "D20404083F103F" .
             "D20404083F103F" .
@@ -401,7 +401,7 @@ class TestUtil
     public static function getGoldenTestPackedMessage()
     public static function getGoldenTestPackedMessage()
     {
     {
         return hex2bin(
         return hex2bin(
-            "D2050AD6FFFFFF0FCCFFFFFF0F" .
+            "D20514D6FFFFFFFFFFFFFFFF01CCFFFFFFFFFFFFFFFF01" .
             "DA0514D5FFFFFFFFFFFFFFFF01CBFFFFFFFFFFFFFFFF01" .
             "DA0514D5FFFFFFFFFFFFFFFF01CBFFFFFFFFFFFFFFFF01" .
             "E205022A34" .
             "E205022A34" .
             "EA05022B35" .
             "EA05022B35" .
@@ -421,7 +421,7 @@ class TestUtil
     public static function getGoldenTestUnpackedMessage()
     public static function getGoldenTestUnpackedMessage()
     {
     {
         return hex2bin(
         return hex2bin(
-            "D005D6FFFFFF0FD005CCFFFFFF0F" .
+            "D005D6FFFFFFFFFFFFFFFF01D005CCFFFFFFFFFFFFFFFF01" .
             "D805D5FFFFFFFFFFFFFFFF01D805CBFFFFFFFFFFFFFFFF01" .
             "D805D5FFFFFFFFFFFFFFFF01D805CBFFFFFFFFFFFFFFFF01" .
             "E0052AE00534" .
             "E0052AE00534" .
             "E8052BE80535" .
             "E8052BE80535" .

+ 1 - 1
protoc-artifacts/pom.xml

@@ -10,7 +10,7 @@
   </parent>
   </parent>
   <groupId>com.google.protobuf</groupId>
   <groupId>com.google.protobuf</groupId>
   <artifactId>protoc</artifactId>
   <artifactId>protoc</artifactId>
-  <version>3.2.0rc2</version>
+  <version>3.2.0</version>
   <packaging>pom</packaging>
   <packaging>pom</packaging>
   <name>Protobuf Compiler</name>
   <name>Protobuf Compiler</name>
   <description>
   <description>

+ 1 - 1
python/google/protobuf/__init__.py

@@ -30,7 +30,7 @@
 
 
 # Copyright 2007 Google Inc. All Rights Reserved.
 # Copyright 2007 Google Inc. All Rights Reserved.
 
 
-__version__ = '3.2.0rc2'
+__version__ = '3.2.0'
 
 
 if __name__ != '__main__':
 if __name__ != '__main__':
   try:
   try:

+ 1 - 1
ruby/google-protobuf.gemspec

@@ -1,6 +1,6 @@
 Gem::Specification.new do |s|
 Gem::Specification.new do |s|
   s.name        = "google-protobuf"
   s.name        = "google-protobuf"
-  s.version     = "3.2.0.rc2"
+  s.version     = "3.2.0"
   s.licenses    = ["BSD-3-Clause"]
   s.licenses    = ["BSD-3-Clause"]
   s.summary     = "Protocol Buffers"
   s.summary     = "Protocol Buffers"
   s.description = "Protocol Buffers are Google's data interchange format."
   s.description = "Protocol Buffers are Google's data interchange format."

+ 2 - 2
src/google/protobuf/wire_format_lite.cc

@@ -357,11 +357,11 @@ void EncodeFixedSizeValue(uint64 v, uint8* dest) {
   WireFormatLite::WriteFixed64NoTagToArray(v, dest);
   WireFormatLite::WriteFixed64NoTagToArray(v, dest);
 }
 }
 
 
-void EncodeSFixedSizeValue(int32 v, uint8* dest) {
+void EncodeFixedSizeValue(int32 v, uint8* dest) {
   WireFormatLite::WriteSFixed32NoTagToArray(v, dest);
   WireFormatLite::WriteSFixed32NoTagToArray(v, dest);
 }
 }
 
 
-void EncodeSFixedSizeValue(int64 v, uint8* dest) {
+void EncodeFixedSizeValue(int64 v, uint8* dest) {
   WireFormatLite::WriteSFixed64NoTagToArray(v, dest);
   WireFormatLite::WriteSFixed64NoTagToArray(v, dest);
 }
 }
 
 

+ 1 - 1
tests.sh

@@ -444,7 +444,7 @@ build_php5.6_mac() {
   export PATH="$PHP_FOLDER/bin:$PATH"
   export PATH="$PHP_FOLDER/bin:$PATH"
 
 
   # Install phpunit
   # Install phpunit
-  curl https://phar.phpunit.de/phpunit.phar -L -o phpunit.phar
+  curl https://phar.phpunit.de/phpunit-5.6.10.phar -L -o phpunit.phar
   chmod +x phpunit.phar
   chmod +x phpunit.phar
   sudo mv phpunit.phar /usr/local/bin/phpunit
   sudo mv phpunit.phar /usr/local/bin/phpunit
 
 

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است