Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update travis to use CocoaPods 1.5.2 #1103

Merged
merged 11 commits into from
May 14, 2018
Merged

Update travis to use CocoaPods 1.5.2 #1103

merged 11 commits into from
May 14, 2018

Conversation

paulb777
Copy link
Member

@paulb777 paulb777 commented Apr 14, 2018

@paulb777
Copy link
Member Author

ios and tvOS tests failing with

2018-04-14 15:03:20.671 xcodebuild[7023:18568] iOSSimulator: task_name_for_pid(mach_task_self(), 8340, &task) returned 5
2018-04-14 15:03:20.675 xcodebuild[7023:18568] iOSSimulator: Falling back to DISPATCH_SOURCE_TYPE_PROC
2018-04-14 15:03:21.075 xcodebuild[7023:14859] Error Domain=IDETestOperationsObserverErrorDomain Code=6 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo={NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted}
2018-04-14 15:03:21.076 xcodebuild[7023:14859] Error Domain=IDETestOperationsObserverErrorDomain Code=6 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo={NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted}
2018-04-14 15:03:21.076 xcodebuild[7023:14859] Error Domain=IDETestOperationsObserverErrorDomain Code=6 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo={NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted}
2018-04-14 15:03:21.076 xcodebuild[7023:14859] Error Domain=IDETestOperationsObserverErrorDomain Code=6 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo={NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted}

@wilhuff
Copy link
Contributor

wilhuff commented Apr 17, 2018

@paulb777, is this in a reviewable state? Your comments here indicate this isn't working.

@paulb777
Copy link
Member Author

@wilhuff - It needs more investigation before being reviewable. I'm unlikely to be able to continue on it in the next few weeks. Anyone else is welcome to pick it up. :)

@paulb777 paulb777 closed this Apr 21, 2018
@paulb777 paulb777 reopened this Apr 21, 2018
@paulb777 paulb777 changed the title Update travis to use CocoaPods 1.5.0 Update travis to use CocoaPods 1.5.2 (WIP) May 9, 2018
@paulb777
Copy link
Member Author

Adding CODE_SIGNING_ALLOWED=YES to the Firebase builds gets them to go, but it looks like there's another issue with the Firestore builds that it can't find FirebaseAuth.

@paulb777
Copy link
Member Author

Seem to be getting close - but for some reason the reorganized build causes 21 Firestore unit test failures ....

FSTLocalSerializerTests
testEncodesMutationBatch, (([self.serializer encodedMutationBatch:model]) equal to (batchProto)) failed: ("<FSTPBWriteBatch 0x608000203820>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Local/FSTLocalSerializerTests.mm:123

XCTAssertEqualObjects([self.serializer encodedMutationBatch:model], batchProto);
FSTMutationBatch *decoded = [self.serializer decodedMutationBatch:batchProto];

testEncodesQueryData, (([self.serializer encodedQueryData:queryData]) equal to (expected)) failed: ("<FSTPBTarget 0x60c0000d9240>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Local/FSTLocalSerializerTests.mm:186

XCTAssertEqualObjects([self.serializer encodedQueryData:queryData], expected);
FSTQueryData *decoded = [self.serializer decodedQueryData:expected];

FSTSerializerBetaTests
testEncodesArrayContainsFilter, ((actual) equal to (expected)) failed: ("<GCFSStructuredQuery_Filter 0x60b000030c90>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm:499

prop.value.stringValue = @"food";
XCTAssertEqualObjects(actual, expected);
}

testEncodesArrays, ((actualProto) equal to (value)) failed: ("<GCFSValue 0x60e0000d92e0>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm:335

XCTAssertEqual(actualProto.valueTypeOneOfCase, type);
XCTAssertEqualObjects(actualProto, value);

testEncodesArrayTransformMutations, ((actualProto) equal to (proto)) failed: ("<GCFSWrite 0x60c000212a40>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm:435

GCFSWrite *actualProto = [self.serializer encodedMutation:mutation];
XCTAssertEqualObjects(actualProto, proto);

testEncodesFirstLevelAncestorQueries, ((actualProto) equal to (proto)) failed: ("<GCFSTarget 0x60c000138700>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm:739

GCFSTarget *actualProto = [self.serializer encodedTarget:queryData];
XCTAssertEqualObjects(actualProto, proto);

testEncodesFirstLevelKeyQueries, ((actualProto) equal to (proto)) failed: ("<GCFSTarget 0x60c00015ed40>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm:739

GCFSTarget *actualProto = [self.serializer encodedTarget:queryData];
XCTAssertEqualObjects(actualProto, proto);

testEncodesLimits, ((actualProto) equal to (proto)) failed: ("<GCFSTarget 0x60c0001d2480>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm:739

GCFSTarget *actualProto = [self.serializer encodedTarget:queryData];
XCTAssertEqualObjects(actualProto, proto);

testEncodesMultipleFiltersOnDeeperCollections, ((actualProto) equal to (proto)) failed: ("<GCFSTarget 0x60c0000cfe80>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm:739

GCFSTarget *actualProto = [self.serializer encodedTarget:queryData];
XCTAssertEqualObjects(actualProto, proto);

testEncodesNanFilter, ((actualProto) equal to (proto)) failed: ("<GCFSTarget 0x60c00000c040>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm:739

GCFSTarget *actualProto = [self.serializer encodedTarget:queryData];
XCTAssertEqualObjects(actualProto, proto);

testEncodesNestedAncestorQueries, ((actualProto) equal to (proto)) failed: ("<GCFSTarget 0x60c00000c640>: {
/Users/travis/build/firebase/firebase-ios-sdk/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm:739

GCFSTarget *actualProto = [self.serializer encodedTarget:queryData];
XCTAssertEqualObjects(actualProto, proto);

@paulb777 paulb777 changed the title Update travis to use CocoaPods 1.5.2 (WIP) Update travis to use CocoaPods 1.5.2 May 13, 2018
@paulb777
Copy link
Member Author

Now ready for review. Read the updated description at top for a summary.

@paulb777 paulb777 requested a review from wilhuff May 13, 2018 17:16
# Test targets are below to avoid problems with duplicate symbols when
# building as a static library (see comments below).
end
pod 'FirebaseAuth', :path => '../../'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you intend to re-nest these here or is this just a bad merge? How does this work around all the duplicate class warnings we were getting from linking the framework into the example app?

Copy link
Member Author

@paulb777 paulb777 May 13, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't intend to re-nest them. They ONLY get linked into the example app. I added -all_load to the Example app build OTHER_LDFLAGS so that unused C++ functions get linked in. Then the test target doesn't need them to build and finds them at runtime from the app.

@@ -1864,6 +1533,10 @@
);
INFOPLIST_FILE = "Firestore/Firestore-Info.plist";
MODULE_NAME = ExampleApp;
OTHER_LDFLAGS = (
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the relevant change not from pod deprecate

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pod deprecate doesn't seem to be a thing. Do you mean pod deintegrate?

I'm not sure we're seeing much pain from having the project stored integrated. It does mean that as developers we need to run the same version of cocoapods, but that's pretty easy for us to coordinate within the Firestore team.

Meanwhile as we're migrating to C++ we're constantly changing the project to add C++ tests and remove Objective-C tests. It will be a serious pain to have to pod deintegrate to even be able to read the diffs of those changes.

I get it that pod deintegrated projects are cleaner, but practically speaking they're much more cumbersome. I think we should leave this installed.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I meant pod deintegrate. And undone now.

Copy link
Contributor

@wilhuff wilhuff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The interesting parts of this LGTM, however see below.

Meanwhile: I've checked this out and run all the tests (including integration tests) and can verify that this works.

Nice sleuthing, BTW. This turns out to be a better solution even for CocoaPods 1.5.0. With -all_load that workaround wasn't needed even before.

@@ -1864,6 +1533,10 @@
);
INFOPLIST_FILE = "Firestore/Firestore-Info.plist";
MODULE_NAME = ExampleApp;
OTHER_LDFLAGS = (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pod deprecate doesn't seem to be a thing. Do you mean pod deintegrate?

I'm not sure we're seeing much pain from having the project stored integrated. It does mean that as developers we need to run the same version of cocoapods, but that's pretty easy for us to coordinate within the Firestore team.

Meanwhile as we're migrating to C++ we're constantly changing the project to add C++ tests and remove Objective-C tests. It will be a serious pain to have to pod deintegrate to even be able to read the diffs of those changes.

I get it that pod deintegrated projects are cleaner, but practically speaking they're much more cumbersome. I think we should leave this installed.

Copy link
Contributor

@wilhuff wilhuff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@paulb777 paulb777 merged commit 97dc3a3 into master May 14, 2018
@wilhuff wilhuff deleted the pb-travis-cp15 branch May 14, 2018 15:21
minafarid pushed a commit to minafarid/firebase-ios-sdk that referenced this pull request Jun 6, 2018
* Update travis to use CocoaPods 1.5.2
* CODE_SIGNING_ALLOWED=YES
* Remove workaround and iPhone 8
* Remove firebase#1210 static library Podfile workaround
* Add -all_load to Firestore Example so all C++ is available for tests
@firebase firebase locked and limited conversation to collaborators Nov 4, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants