@@ -373,4 +373,36 @@ @interface FlutterEngine (Test)
373373 [engine shutDownEngine ];
374374}
375375
376+ TEST (FlutterEngine, DartEntrypointArguments) {
377+ NSString * fixtures = @(flutter::testing::GetFixturesPath ());
378+ FlutterDartProject* project = [[FlutterDartProject alloc ]
379+ initWithAssetsPath: fixtures
380+ ICUDataPath: [fixtures stringByAppendingString: @" /icudtl.dat" ]];
381+
382+ project.dartEntrypointArguments = @[ @" arg1" , @" arg2" ];
383+ FlutterEngine* engine = [[FlutterEngine alloc ] initWithName: @" test" project: project];
384+
385+ bool called = false ;
386+ auto original_init = engine.embedderAPI .Initialize ;
387+ engine.embedderAPI .Initialize = MOCK_ENGINE_PROC (
388+ Initialize, ([&called, &original_init](size_t version, const FlutterRendererConfig* config,
389+ const FlutterProjectArgs* args, void * user_data,
390+ FLUTTER_API_SYMBOL (FlutterEngine) * engine_out) {
391+ called = true ;
392+ EXPECT_EQ (args->dart_entrypoint_argc , 2 );
393+ NSString * arg1 = [[NSString alloc ] initWithCString: args->dart_entrypoint_argv[0 ]
394+ encoding: NSUTF8StringEncoding];
395+ NSString * arg2 = [[NSString alloc ] initWithCString: args->dart_entrypoint_argv[1 ]
396+ encoding: NSUTF8StringEncoding];
397+
398+ EXPECT_TRUE ([arg1 isEqualToString: @" arg1" ]);
399+ EXPECT_TRUE ([arg2 isEqualToString: @" arg2" ]);
400+
401+ return original_init (version, config, args, user_data, engine_out);
402+ }));
403+
404+ EXPECT_TRUE ([engine runWithEntrypoint: @" main" ]);
405+ EXPECT_TRUE (called);
406+ }
407+
376408} // namespace flutter::testing
0 commit comments