Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit eab8b71

Browse files
author
Chris Yang
authored
Reland "Build iOS unittest target in unopt builds" (#44356)"" (#45346)" (#45519)
Reland #44821 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
1 parent 968ea4f commit eab8b71

19 files changed

+188
-171
lines changed

BUILD.gn

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ group("unittests") {
149149
[ "//flutter/shell/platform/android:flutter_shell_native_unittests" ]
150150
}
151151

152+
if (is_ios) {
153+
public_deps += [ "//flutter/shell/platform/darwin/ios:ios_test_flutter" ]
154+
}
155+
152156
# Compile all unittests targets if enabled.
153157
if (enable_unittests) {
154158
public_deps += [

shell/platform/darwin/ios/BUILD.gn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ source_set("ios_test_flutter_mrc") {
270270

271271
shared_library("ios_test_flutter") {
272272
testonly = true
273-
visibility = [ ":*" ]
273+
visibility = [ "*" ]
274274
cflags = [
275275
"-fvisibility=default",
276276
"-F$platform_frameworks_path",

shell/platform/darwin/ios/framework/Source/FlutterChannelKeyResponderTest.mm

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@
1616
XCTAssertTrue([value isEqualToString:expected], \
1717
@"String \"%@\" not equal to the expected value of \"%@\"", value, expected)
1818

19-
namespace {
20-
API_AVAILABLE(ios(13.4))
21-
constexpr UIKeyboardHIDUsage keyACode = (UIKeyboardHIDUsage)0x4; // KeyA iOS scan code.
22-
} // namespace
19+
using namespace flutter::testing;
2320

2421
API_AVAILABLE(ios(13.4))
2522
@interface FlutterChannelKeyResponderTest : XCTestCase
@@ -35,8 +32,8 @@ - (void)setUp {
3532
} else {
3633
XCTSkip(@"Required API not present for test.");
3734
}
38-
_testKeyDownEvent = keyDownEvent(keyACode, 0x0, 0.0f, "a", "a");
39-
_testKeyUpEvent = keyUpEvent(keyACode, 0x0, 0.0f);
35+
_testKeyDownEvent = keyDownEvent(UIKeyboardHIDUsageKeyboardA, 0x0, 0.0f, "a", "a");
36+
_testKeyUpEvent = keyUpEvent(UIKeyboardHIDUsageKeyboardA, 0x0, 0.0f);
4037
}
4138

4239
- (void)tearDown API_AVAILABLE(ios(13.4)) {
@@ -76,7 +73,7 @@ - (void)testBasicKeyEvent API_AVAILABLE(ios(13.4)) {
7673
XCTAssertEqual([messages count], 1u);
7774
XCTAssertStrEqual([messages lastObject][@"keymap"], @"ios");
7875
XCTAssertStrEqual([messages lastObject][@"type"], @"keydown");
79-
XCTAssertEqual([[messages lastObject][@"keyCode"] intValue], keyACode);
76+
XCTAssertEqual([[messages lastObject][@"keyCode"] intValue], UIKeyboardHIDUsageKeyboardA);
8077
XCTAssertEqual([[messages lastObject][@"modifiers"] intValue], 0x0);
8178
XCTAssertStrEqual([messages lastObject][@"characters"], @"a");
8279
XCTAssertStrEqual([messages lastObject][@"charactersIgnoringModifiers"], @"a");
@@ -97,7 +94,7 @@ - (void)testBasicKeyEvent API_AVAILABLE(ios(13.4)) {
9794
XCTAssertEqual([messages count], 1u);
9895
XCTAssertStrEqual([messages lastObject][@"keymap"], @"ios");
9996
XCTAssertStrEqual([messages lastObject][@"type"], @"keyup");
100-
XCTAssertEqual([[messages lastObject][@"keyCode"] intValue], keyACode);
97+
XCTAssertEqual([[messages lastObject][@"keyCode"] intValue], UIKeyboardHIDUsageKeyboardA);
10198
XCTAssertEqual([[messages lastObject][@"modifiers"] intValue], 0x0);
10299

103100
XCTAssertEqual([responses count], 1u);
@@ -134,7 +131,7 @@ - (void)testEmptyResponseIsTakenAsHandled API_AVAILABLE(ios(13.4)) {
134131
XCTAssertEqual([messages count], 1u);
135132
XCTAssertStrEqual([messages lastObject][@"keymap"], @"ios");
136133
XCTAssertStrEqual([messages lastObject][@"type"], @"keydown");
137-
XCTAssertEqual([[messages lastObject][@"keyCode"] intValue], keyACode);
134+
XCTAssertEqual([[messages lastObject][@"keyCode"] intValue], UIKeyboardHIDUsageKeyboardA);
138135
XCTAssertEqual([[messages lastObject][@"modifiers"] intValue], 0x0);
139136
XCTAssertStrEqual([messages lastObject][@"characters"], @"a");
140137
XCTAssertStrEqual([messages lastObject][@"charactersIgnoringModifiers"], @"a");

shell/platform/darwin/ios/framework/Source/FlutterEmbedderKeyResponderTest.mm

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "flutter/shell/platform/embedder/test_utils/key_codes.g.h"
1616

1717
using namespace flutter::testing::keycodes;
18+
using namespace flutter::testing;
1819

1920
FLUTTER_ASSERT_ARC;
2021

@@ -43,7 +44,7 @@ - (instancetype)initWithEvent:(const FlutterKeyEvent*)event
4344
if (event->character != nullptr) {
4445
size_t len = strlen(event->character);
4546
char* character = new char[len + 1];
46-
strcpy(character, event->character);
47+
strlcpy(character, event->character, len + 1);
4748
_data->character = character;
4849
}
4950
_callback = callback;
@@ -63,8 +64,9 @@ - (void)respond:(BOOL)handled {
6364
}
6465

6566
- (void)dealloc {
66-
if (_data->character != nullptr)
67+
if (_data->character != nullptr) {
6768
delete[] _data->character;
69+
}
6870
delete _data;
6971
}
7072
@end

shell/platform/darwin/ios/framework/Source/FlutterEngineGroupTest.mm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ - (void)testReleasesProjectOnDealloc {
132132
FlutterDartProject* mockProject = OCMClassMock([FlutterDartProject class]);
133133
FlutterEngineGroup* group = [[FlutterEngineGroup alloc] initWithName:@"foo"
134134
project:mockProject];
135+
XCTAssertNotNil(group);
135136
weakProject = mockProject;
136137
XCTAssertNotNil(weakProject);
137138
group = nil;

shell/platform/darwin/ios/framework/Source/FlutterEngineTest_mrc.mm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ - (void)testEnableSemanticsWhenFlutterViewAccessibilityDidCall {
6060
engine.ensureSemanticsEnabledCalled = NO;
6161
[engine flutterViewAccessibilityDidCall];
6262
XCTAssertTrue(engine.ensureSemanticsEnabledCalled);
63+
[engine release];
6364
}
6465

6566
@end

shell/platform/darwin/ios/framework/Source/FlutterFakeKeyEvents.h

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,26 +47,29 @@ API_AVAILABLE(ios(13.4))
4747
@property(readwrite, nonatomic) NSString* dataCharactersIgnoringModifiers;
4848
@end
4949

50-
FlutterUIPressProxy* keyDownEvent(UIKeyboardHIDUsage keyCode,
51-
UIKeyModifierFlags modifierFlags = 0x0,
52-
NSTimeInterval timestamp = 0.0f,
53-
const char* characters = "",
54-
const char* charactersIgnoringModifiers = "")
50+
namespace flutter {
51+
namespace testing {
52+
extern FlutterUIPressProxy* keyDownEvent(UIKeyboardHIDUsage keyCode,
53+
UIKeyModifierFlags modifierFlags = 0x0,
54+
NSTimeInterval timestamp = 0.0f,
55+
const char* characters = "",
56+
const char* charactersIgnoringModifiers = "")
5557
API_AVAILABLE(ios(13.4));
5658

57-
FlutterUIPressProxy* keyUpEvent(UIKeyboardHIDUsage keyCode,
58-
UIKeyModifierFlags modifierFlags = 0x0,
59-
NSTimeInterval timestamp = 0.0f,
60-
const char* characters = "",
61-
const char* charactersIgnoringModifiers = "")
62-
API_AVAILABLE(ios(13.4));
63-
64-
FlutterUIPressProxy* keyEventWithPhase(UIPressPhase phase,
65-
UIKeyboardHIDUsage keyCode,
59+
extern FlutterUIPressProxy* keyUpEvent(UIKeyboardHIDUsage keyCode,
6660
UIKeyModifierFlags modifierFlags = 0x0,
6761
NSTimeInterval timestamp = 0.0f,
6862
const char* characters = "",
6963
const char* charactersIgnoringModifiers = "")
7064
API_AVAILABLE(ios(13.4));
7165

66+
extern FlutterUIPressProxy* keyEventWithPhase(UIPressPhase phase,
67+
UIKeyboardHIDUsage keyCode,
68+
UIKeyModifierFlags modifierFlags = 0x0,
69+
NSTimeInterval timestamp = 0.0f,
70+
const char* characters = "",
71+
const char* charactersIgnoringModifiers = "")
72+
API_AVAILABLE(ios(13.4));
73+
} // namespace testing
74+
} // namespace flutter
7275
#endif // FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTER_FAKE_KEY_EVENTS_H_

shell/platform/darwin/ios/framework/Source/FlutterFakeKeyEvents.mm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ - (NSString*)charactersIgnoringModifiers API_AVAILABLE(ios(13.4)) {
8484
}
8585
@end
8686

87+
namespace flutter {
88+
namespace testing {
89+
8790
FlutterUIPressProxy* keyDownEvent(UIKeyboardHIDUsage keyCode,
8891
UIKeyModifierFlags modifierFlags,
8992
NSTimeInterval timestamp,
@@ -123,3 +126,5 @@ - (NSString*)charactersIgnoringModifiers API_AVAILABLE(ios(13.4)) {
123126
type:UIEventTypePresses
124127
timestamp:timestamp];
125128
}
129+
} // namespace testing
130+
} // namespace flutter

shell/platform/darwin/ios/framework/Source/FlutterKeyboardManagerTest.mm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
class PointerDataPacket {};
2222
} // namespace flutter
2323

24+
using namespace flutter::testing;
25+
2426
/// Sometimes we have to use a custom mock to avoid retain cycles in ocmock.
2527
@interface FlutterEnginePartialMock : FlutterEngine
2628
@property(nonatomic, strong) FlutterBasicMessageChannel* lifecycleChannel;

0 commit comments

Comments
 (0)