New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 622753 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS , Mac
Pri: 3
Type: Feature



Sign in to add a comment

Update OCMock

Project Member Reported by gambard@chromium.org, Jun 23 2016

Issue description

The OCMock version included in Chrome is 2.0 (2012). The latest version is 3.3 and the latest 2.x version is 2.2.4.

It would be very nice if it was possible to mock class methods, which is available in 2.1 and beyond.

Could we update the included OCMock?
 

Comment 1 by baxley@chromium.org, Jun 23 2016

Cc: rsesek@chromium.org
Components: Test
I don't have any problems with rolling the revision, as long as all of our existing tests still work (or possibly updating our tests if they don't). This is coming from the iOS perspective.

+rsesek@ to see if there are any concerns on the Mac side.

Comment 2 by rsesek@chromium.org, Jun 23 2016

Is 3.3 code compatible with 2.0?

Comment 3 by baxley@chromium.org, Jun 23 2016

gambard@ suspected 3+ may not be compatible with 2.0.

I can do some investigation next week with different versions and the iOS + Mac tests, and see what happens.

Comment 4 by rsesek@chromium.org, Jun 23 2016

Labels: -Restrict-View-Google
I'm fine with revving OCMock so long as the test code changes are minimal. I think we were on such an old version because Mac for a while had an old deployment target and SDK.

No RVG here necessary.
It seems that OCMock 3 is backward compatible.

From http://ocmock.org/download/ :
Build SDK for OCMock 3 :OS X 10.11, iOS 9.2, tvOS 9.1
Deployment target for OCMock 3 : OS X 10.6, iOS 5, tvOS 9.0

The license also changed to Apache2 (from "non-standard BSD-style license with attribution clause").

Comment 6 by rsesek@chromium.org, Jun 24 2016

Cool!

Mac still uses the 10.10 SDK, though...

A license switch will require a new OSPO third-party review (just as if we were adding a new third_party library) but not a new security review.


Still from http://ocmock.org/download/ (web.archive version: http://web.archive.org/web/20150919002854/http://ocmock.org/download/), I think it is possible to build OCMock 3.1.5, built 27-Aug-2015, using OS X 10.10.
10.11 seems to be needed only for 3.2 and beyond.
Robert pointed me to this thread. It seems that the version we have checked in does not support dynamic properties which is blocking properly testing code dependent on the NSUSerNotificationCenter (like https://codereview.chromium.org/2143613002)
Cc: miguelg@chromium.org
Sorry for the delay. I just glanced, and it looks that this lives in Chromium (i.e. isn't DEPS'd in). I'll try to experiment locally this week, and see if maybe we can use trunk, and get rid of the fork.

I'll flip the bug to Started when I am actively working on it, so if it's going too slow feel free to speak up or take the bug.
Are you considering going straight to 3.3 or should we try to just move to DEPS for 2.4 as a first step?

I have very little experience (as in one day and two tests :) ) with OCMock so I'd never dare to take away. I can gurantee that it will get done faster and better if you do it even it's at a super slow pace :)
Just wanted to circle back on this see if there has been any progress. I am still somewhat blocked on it but totally understand it's a P3.
Sorry, I haven't had a time to start on this. It shouldn't be too terrible, but we've just had more high priority things to work on. It's still on my radar, or I can see if someone else on the team has some cycles later this month.
Cc: erikc...@chromium.org a...@chromium.org
 Issue 511368  has been merged into this issue.
Cc: shrike@chromium.org
Cc: gambard@chromium.org
I have created a patch to test the update to OCMock 2.2.4: https://codereview.chromium.org/2410583002/ and there are 5 unittests which fail for mac. I will take a look at it but if you have an idea, please tell.
It is worth mentioning that I modified the OCMock code, replacing typeof by __typeof__ in OCMock/NSInvocation+OCMAdditions.m because it was not compiling.
I don't see any test failures on the CL. Can you show where those were happening?
Sorry, I fixed them and forgot to update the bug.
It seems that OCMock 2.2.4 is OK without any major change to our code base.
I am currently testing OCMock 3.1.5.
Cc: -gambard@chromium.org baxley@chromium.org
Owner: gambard@chromium.org
assigning to gambard@ who had a CL to roll it to 2.2.4 (and was testing it with 3.1.5).
Project Member

Comment 20 by bugdroid1@chromium.org, Feb 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d8d4403f85a825365647cd629289c210afc0da49

commit d8d4403f85a825365647cd629289c210afc0da49
Author: gambard <gambard@chromium.org>
Date: Thu Feb 09 15:41:46 2017

Update OCMock to 3.1.5

This CL updates OCMock to 3.1.5.
This update is possible as the iOS code is now open source and the OSX uses the
10.10 SDK.

BUG= 622753 
NOPRESUBMIT=true

Review-Url: https://codereview.chromium.org/2624143003
Cr-Commit-Position: refs/heads/master@{#449299}

[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target_unittest.mm
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/ios/chrome/browser/passwords/password_controller_unittest.mm
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/ios/chrome/browser/passwords/password_generation_agent_unittest.mm
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/BUILD.gn
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/Changes.txt
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/License.txt
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/NSInvocation+OCMAdditions.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/NSInvocation+OCMAdditions.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/NSMethodSignature+OCMAdditions.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/NSMethodSignature+OCMAdditions.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/NSNotificationCenter+OCMAdditions.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/NSNotificationCenter+OCMAdditions.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/NSObject+OCMAdditions.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/NSObject+OCMAdditions.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/NSValue+OCMAdditions.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/NSValue+OCMAdditions.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCClassMockObject.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCClassMockObject.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMArg.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMArg.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMBlockCaller.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMBlockCaller.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMBoxedReturnValueProvider.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMBoxedReturnValueProvider.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMConstraint.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMConstraint.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMExceptionReturnValueProvider.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMExceptionReturnValueProvider.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMExpectationRecorder.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMExpectationRecorder.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMFunctions.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMFunctions.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMIndirectReturnValueProvider.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMIndirectReturnValueProvider.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMInvocationExpectation.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMInvocationExpectation.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMInvocationMatcher.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMInvocationMatcher.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMInvocationStub.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMInvocationStub.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMLocation.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMLocation.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMMacroState.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMMacroState.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMNotificationPoster.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMNotificationPoster.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMObserverRecorder.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMObserverRecorder.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMPassByRefSetter.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMPassByRefSetter.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMRealObjectForwarder.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMRealObjectForwarder.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMRecorder.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMRecorder.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMReturnValueProvider.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMReturnValueProvider.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMStubRecorder.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMStubRecorder.m
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMVerifier.h
[add] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMVerifier.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMock-Info.plist
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMock.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMockObject.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCMockObject.m
[delete] https://crrev.com/0452a9d5c152a81bdbbc2ad5fa4bc7ac95094b3b/third_party/ocmock/OCMock/OCMockRecorder.h
[delete] https://crrev.com/0452a9d5c152a81bdbbc2ad5fa4bc7ac95094b3b/third_party/ocmock/OCMock/OCMockRecorder.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCObserverMockObject.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCObserverMockObject.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCPartialMockObject.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCPartialMockObject.m
[delete] https://crrev.com/0452a9d5c152a81bdbbc2ad5fa4bc7ac95094b3b/third_party/ocmock/OCMock/OCPartialMockRecorder.h
[delete] https://crrev.com/0452a9d5c152a81bdbbc2ad5fa4bc7ac95094b3b/third_party/ocmock/OCMock/OCPartialMockRecorder.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCProtocolMockObject.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/OCMock/OCProtocolMockObject.m
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/README.chromium
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/ocmock_extensions.h
[modify] https://crrev.com/d8d4403f85a825365647cd629289c210afc0da49/third_party/ocmock/ocmock_extensions.mm

Status: Fixed (was: Assigned)
OCMock updated to 3.1.5.

Sign in to add a comment