Skip to content

Commit 2f5e4fd

Browse files
authored
Start RemoteConfig CI and fix/ignore warnings (#3649)
1 parent 3b74c3f commit 2f5e4fd

File tree

8 files changed

+76
-28
lines changed

8 files changed

+76
-28
lines changed

.travis.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,14 @@ jobs:
100100
- travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
101101
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseMessaging.podspec
102102

103+
- stage: test
104+
env:
105+
- PROJECT=RemoteConfig PLATFORM=iOS METHOD=pod-lib-lint
106+
script:
107+
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=ios
108+
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=tvos
109+
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --platforms=macos
110+
103111
- stage: test
104112
env:
105113
- PROJECT=Storage PLATFORM=all METHOD=xcodebuild
@@ -211,6 +219,18 @@ jobs:
211219
- travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-libraries
212220
- travis_retry ./scripts/pod_lib_lint.rb GoogleUtilities.podspec --use-modular-headers
213221

222+
- stage: test
223+
if: type = cron
224+
env:
225+
- PROJECT=FirebasePllRemoteConfigCron PLATFORM=iOS METHOD=pod-lib-lint
226+
script:
227+
- travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-libraries --allow-warnings --platforms=ios
228+
- travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-libraries --allow-warnings --platforms=tvos
229+
- travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-libraries --allow-warnings --platforms=macos
230+
- travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-modular-headers --platforms=ios
231+
- travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-modular-headers --platforms=tvos
232+
- travis_retry ./scripts/pod_lib_lint.rb FirebaseRemoteConfig.podspec --use-modular-headers --platforms=macos
233+
214234
- stage: test
215235
if: type = cron
216236
env:

FirebaseRemoteConfig/Sources/FIRRemoteConfig.m

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ @interface FIRRemoteConfigSettings () {
4949
}
5050
@end
5151

52+
// Implementations depend upon multiple deprecated APIs
53+
#pragma clang diagnostic push
54+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
55+
5256
@implementation FIRRemoteConfigSettings
5357
- (instancetype)initWithDeveloperModeEnabled:(BOOL)developerModeEnabled {
5458
self = [self init];
@@ -400,9 +404,9 @@ - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state
400404
__block NSUInteger localValue;
401405
dispatch_sync(_queue, ^{
402406
localValue =
403-
[self->_configContent.activeConfig[_FIRNamespace] countByEnumeratingWithState:state
404-
objects:stackbuf
405-
count:len];
407+
[self->_configContent.activeConfig[self->_FIRNamespace] countByEnumeratingWithState:state
408+
objects:stackbuf
409+
count:len];
406410
});
407411
return localValue;
408412
}
@@ -612,4 +616,6 @@ - (void)setConfigSettings:(FIRRemoteConfigSettings *)configSettings {
612616
dispatch_async(_queue, setConfigSettingsBlock);
613617
}
614618

619+
#pragma clang diagnostic push // "-Wdeprecated-declarations"
620+
615621
@end

FirebaseRemoteConfig/Tests/Unit/RCNConfigContentTest.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,8 @@ - (void)testCopyFromDictionaryUpdatesDefaultConfig {
229229
numberValue]);
230230
NSDictionary<NSString *, NSString *> *sampleJSON = @{@"key1" : @"value1"};
231231
id configJSON = [(defaultConfig[@"default_namespace"][@"new_json_key"]) JSONValue];
232-
XCTAssertEqualObjects([configJSON class], [sampleJSON class]);
232+
XCTAssertTrue([configJSON isKindOfClass:[NSDictionary class]]);
233+
XCTAssertTrue([sampleJSON isKindOfClass:[NSDictionary class]]);
233234
XCTAssertEqualObjects(sampleJSON, (NSDictionary *)configJSON);
234235
XCTAssertEqualObjects(dataValue,
235236
[defaultConfig[@"default_namespace"][@"new_data_key"] dataValue]);

FirebaseRemoteConfig/Tests/Unit/RCNConfigDBManagerTest.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ - (void)testV1NamespaceMigrationToV2Namespace {
9999
};
100100
NSString *value = [NSString stringWithFormat:@"value%d", i];
101101
NSString *key = [NSString stringWithFormat:@"key%d", i];
102-
NSArray<NSString *> *values =
102+
NSArray<id> *values =
103103
@[ bundleIdentifier, namespace_p, key, [value dataUsingEncoding:NSUTF8StringEncoding] ];
104104
[_DBManager insertMainTableWithValues:values
105105
fromSource:RCNDBSourceFetched

FirebaseRemoteConfig/Tests/Unit/RCNConfigExperimentTest.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ @interface RCNConfigExperimentTest : XCTestCase {
5252
id _DBManagerMock;
5353
NSArray<NSDictionary<NSString *, id> *> *_payloads;
5454
NSArray<NSData *> *_payloadsData;
55-
NSDictionary<NSString *, NSString *> *_metadata;
55+
NSDictionary<NSString *, NSNumber *> *_metadata;
5656
NSString *_DBPath;
5757
}
5858
@end
@@ -74,7 +74,7 @@ - (void)setUp {
7474
NSData *payloadData2 = [NSJSONSerialization dataWithJSONObject:payload2 options:0 error:&error];
7575
_payloadsData = @[ payloadData1, payloadData2 ];
7676
_metadata = @{@"last_know_start_time" : @12348765};
77-
NSDictionary<NSString *, NSString *> *mockResults = @{
77+
NSDictionary<NSString *, id> *mockResults = @{
7878
@RCNExperimentTableKeyPayload : _payloadsData,
7979
@RCNExperimentTableKeyMetadata : _metadata,
8080
};

FirebaseRemoteConfig/Tests/Unit/RCNRemoteConfigTest.m

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,10 @@ - (void)testFetchConfigsSuccessfully {
259259
^void(FIRRemoteConfigFetchStatus status, NSError *error) {
260260
XCTAssertEqual(_configInstances[i].lastFetchStatus, FIRRemoteConfigFetchStatusSuccess);
261261
XCTAssertNil(error);
262+
#pragma clang diagnostic push
263+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
262264
XCTAssertTrue([_configInstances[i] activateFetched]);
265+
#pragma clang diagnostic pop
263266
NSString *key1 = [NSString stringWithFormat:@"key1-%d", i];
264267
NSString *key2 = [NSString stringWithFormat:@"key2-%d", i];
265268
NSString *value1 = [NSString stringWithFormat:@"value1-%d", i];
@@ -388,7 +391,10 @@ - (void)testEnumeratingConfigResults {
388391
^void(FIRRemoteConfigFetchStatus status, NSError *error) {
389392
XCTAssertEqual(_configInstances[i].lastFetchStatus, FIRRemoteConfigFetchStatusSuccess);
390393
XCTAssertNil(error);
394+
#pragma clang diagnostic push
395+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
391396
XCTAssertTrue([_configInstances[i] activateFetched]);
397+
#pragma clang diagnostic pop
392398
NSString *key5 = [NSString stringWithFormat:@"key5-%d", i];
393399
NSString *key19 = [NSString stringWithFormat:@"key19-%d", i];
394400
NSString *value5 = [NSString stringWithFormat:@"value5-%d", i];
@@ -515,7 +521,8 @@ - (void)testFetchConfigsFailed {
515521
configSettings:settings
516522
configExperiment:nil];
517523
}
518-
524+
#pragma clang diagnostic push
525+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
519526
// Make the fetch calls for all instances.
520527
NSMutableArray<XCTestExpectation *> *expectations =
521528
[[NSMutableArray alloc] initWithCapacity:RCNTestRCNumTotalInstances];
@@ -601,7 +608,6 @@ - (void)testFetchConfigWithDefaultSets {
601608
NSString *key0 = [NSString stringWithFormat:@"key0-%d", i];
602609
NSString *value1 = [NSString stringWithFormat:@"value1-%d", i];
603610
NSString *value2 = [NSString stringWithFormat:@"value2-%d", i];
604-
NSString *value0 = [NSString stringWithFormat:@"value0-%d", i];
605611

606612
XCTestExpectation *fetchConfigsExpectation =
607613
[self expectationWithDescription:@"Test fetch configs with defaults set."];
@@ -615,15 +621,20 @@ - (void)testFetchConfigWithDefaultSets {
615621
XCTAssertNil(error);
616622
XCTAssertEqualObjects(_configInstances[i][key1].stringValue, @"default key1");
617623
XCTAssertEqual(_configInstances[i][key1].source, FIRRemoteConfigSourceDefault);
624+
#pragma clang diagnostic push
625+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
618626
XCTAssertTrue([_configInstances[i] activateFetched]);
627+
#pragma clang diagnostic pop
619628
XCTAssertEqualObjects(_configInstances[i][key1].stringValue, value1);
620629
XCTAssertEqual(_configInstances[i][key1].source, FIRRemoteConfigSourceRemote);
621630
XCTAssertEqualObjects([_configInstances[i] defaultValueForKey:key1].stringValue,
622631
@"default key1");
623632
XCTAssertEqualObjects(_configInstances[i][key2].stringValue, value2);
624633
XCTAssertEqualObjects(_configInstances[i][key0].stringValue, @"value0-0");
634+
#pragma clang diagnostic push
635+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
625636
XCTAssertNil([_configInstances[i] defaultValueForKey:nil namespace:nil]);
626-
637+
#pragma clang diagnostic pop
627638
OCMVerify([_configInstances[i] objectForKeyedSubscript:key1]);
628639
XCTAssertEqual(status, FIRRemoteConfigFetchStatusSuccess,
629640
@"Callback of first successful config "
@@ -828,11 +839,24 @@ - (void)testInvalidKeyOrNamespace {
828839
}
829840
}
830841

842+
// Remote Config converts UTC times in the plists to local times. This utility function makes it
843+
// possible to check the times when running the tests in any timezone.
844+
static NSString *UTCToLocal(NSString *utcTime) {
845+
// Create a UTC dateFormatter.
846+
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
847+
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
848+
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
849+
NSDate *date = [dateFormatter dateFromString:utcTime];
850+
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
851+
return [dateFormatter stringFromDate:date];
852+
}
853+
831854
- (void)testSetDefaultsFromPlist {
832855
for (int i = 0; i < RCNTestRCNumTotalInstances; i++) {
833-
[_configInstances[i] setDefaultsFromPlistFileName:@"Defaults-testInfo"];
856+
FIRRemoteConfig *config = _configInstances[i];
857+
[config setDefaultsFromPlistFileName:@"Defaults-testInfo"];
834858
XCTAssertEqualObjects(_configInstances[i][@"lastCheckTime"].stringValue,
835-
@"2016-02-28 10:33:31");
859+
UTCToLocal(@"2016-02-28 18:33:31"));
836860
XCTAssertEqual(_configInstances[i][@"isPaidUser"].boolValue, YES);
837861
XCTAssertEqualObjects(_configInstances[i][@"dataValue"].stringValue, @"2.4");
838862
XCTAssertEqualObjects(_configInstances[i][@"New item"].numberValue, @(2.4));
@@ -844,7 +868,7 @@ - (void)testSetDefaultsFromPlist {
844868
// If given a wrong file name, the default will not be set and kept as previous results.
845869
[_configInstances[i] setDefaultsFromPlistFileName:@""];
846870
XCTAssertEqualObjects(_configInstances[i][@"lastCheckTime"].stringValue,
847-
@"2016-02-28 10:33:31");
871+
UTCToLocal(@"2016-02-28 18:33:31"));
848872
[_configInstances[i] setDefaultsFromPlistFileName:@"non-existed_file"];
849873
XCTAssertEqualObjects(_configInstances[i][@"dataValue"].stringValue, @"2.4");
850874
[_configInstances[i] setDefaultsFromPlistFileName:nil namespace:nil];
@@ -862,7 +886,7 @@ - (void)testSetDefaultsAndNamespaceFromPlist {
862886
XCTAssertEqualObjects([_configInstances[i] configValueForKey:@"lastCheckTime"
863887
namespace:RCNTestsPerfNamespace]
864888
.stringValue,
865-
@"2016-02-28 10:33:31");
889+
UTCToLocal(@"2016-02-28 18:33:31"));
866890
XCTAssertEqual([_configInstances[i] configValueForKey:@"isPaidUser"
867891
namespace:RCNTestsPerfNamespace]
868892
.boolValue,
@@ -890,7 +914,7 @@ - (void)testSetDefaultsAndNamespaceFromPlist {
890914
} else {
891915
[_configInstances[i] setDefaultsFromPlistFileName:@"Defaults-testInfo"];
892916
XCTAssertEqualObjects([_configInstances[i] configValueForKey:@"lastCheckTime"].stringValue,
893-
@"2016-02-28 10:33:31");
917+
UTCToLocal(@"2016-02-28 18:33:31"));
894918
XCTAssertEqual([_configInstances[i] configValueForKey:@"isPaidUser"].boolValue, YES);
895919
XCTAssertEqualObjects([_configInstances[i] configValueForKey:@"dataValue"].stringValue,
896920
@"2.4");
@@ -991,6 +1015,8 @@ - (void)testAllKeysWithPrefix {
9911015
XCTAssertEqual(status, FIRRemoteConfigFetchStatusSuccess);
9921016
XCTAssertNil(error);
9931017
NSLog(@"Testing _configInstances %d", i);
1018+
#pragma clang diagnostic push
1019+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
9941020
XCTAssertTrue([_configInstances[i] activateFetched]);
9951021

9961022
// Test keysWithPrefix:namespace: method.
@@ -1010,6 +1036,7 @@ - (void)testAllKeysWithPrefix {
10101036

10111037
XCTAssertNotNil([_configInstances[i] keysWithPrefix:nil namespace:nil]);
10121038
XCTAssertEqual([_configInstances[i] keysWithPrefix:nil namespace:nil].count, 0);
1039+
#pragma clang diagnostic pop
10131040

10141041
// Test keysWithPrefix: method.
10151042
XCTAssertEqual([_configInstances[i] keysWithPrefix:@"key1"].count, 12);
@@ -1031,6 +1058,8 @@ - (void)testAllKeysWithPrefix {
10311058

10321059
- (void)testSetDeveloperModeConfigSetting {
10331060
for (int i = 0; i < RCNTestRCNumTotalInstances; i++) {
1061+
#pragma clang diagnostic push
1062+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
10341063
FIRRemoteConfigSettings *settings =
10351064
[[FIRRemoteConfigSettings alloc] initWithDeveloperModeEnabled:YES];
10361065
[_configInstances[i] setConfigSettings:settings];
@@ -1039,6 +1068,7 @@ - (void)testSetDeveloperModeConfigSetting {
10391068
settings = [[FIRRemoteConfigSettings alloc] initWithDeveloperModeEnabled:NO];
10401069
[_configInstances[i] setConfigSettings:settings];
10411070
XCTAssertFalse([_configInstances[i] configSettings].isDeveloperModeEnabled);
1071+
#pragma clang diagnostic pop
10421072
}
10431073
}
10441074

FirebaseRemoteConfig/Tests/Unit/RCNTestUtilities.h

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,6 @@ extern NSString *const RCNTestsSecondFIRAppName;
2626

2727
@interface RCNTestUtilities : NSObject
2828

29-
/// Fake a fetch response with a given dictionary of namespace to config and their fetch status
30-
/// accordingly.
31-
/// @param namespaceToConfig Dictionary of namespace to a dictionary of config key value pairs.
32-
/// @param statusArray Response update status for each namespace in namespaceToConfig.
33-
+ (NSMutableDictionary<NSString *, NSString *> *)
34-
responseWithNamespaceToConfig:(NSDictionary<NSString *, NSDictionary *> *)namespaceToConfig
35-
statusArray:(NSArray *)statusArray;
36-
37-
/// Fake an internal metadata array with a given dictionary for a fake response.
38-
///
39-
/// @param aDictionary Dictionary with content to mock an internal metadata array.
40-
+ (NSMutableArray *)entryArrayWithKeyValuePair:(NSDictionary *)aDictionary;
41-
4229
/// Returns the name of the test that's compatible with configuring a FIRApp name to ensure
4330
/// uniqueness. `testName` is the `name` property of the `XCTest` running.
4431
+ (NSString *)generatedTestAppNameForTest:(NSString *)testName;

scripts/if_changed.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@ else
134134
check_changes '^(Firebase/Core|Firebase/Messaging|Example/Messaging|GoogleUtilities|FirebaseMessaging.podspec|Firebase/InstanceID)'
135135
;;
136136

137+
RemoteConfig-*)
138+
check_changes '^(Firebase/Core|FirebaseRemoteConfig)'
139+
;;
140+
137141
Storage-*)
138142
check_changes '^(Firebase/Core|Firebase/Storage|Example/Storage|GoogleUtilities|FirebaseStorage.podspec)'
139143
;;

0 commit comments

Comments
 (0)