Skip to content

Commit e673061

Browse files
auto-submit[bot]auto-submit[bot]
andauthored
Reverts "Avoid implicitly setting determineDevDependencies: true (it's not a safe operation) (flutter#163711)" (flutter#163762)
<!-- start_original_pr_link --> Reverts: flutter#163711 <!-- end_original_pr_link --> <!-- start_initiating_author --> Initiated by: victorsanni <!-- end_initiating_author --> <!-- start_revert_reason --> Reason for reverting: This is closing the tree. See https://ci.chromium.org/ui/p/flutter/builders/prod/Linux%20android_release_builds_exclude_dev_dependencies_test/889/overview <!-- end_revert_reason --> <!-- start_original_pr_author --> Original PR Author: matanlurey <!-- end_original_pr_author --> <!-- start_reviewers --> Reviewed By: {jonahwilliams} <!-- end_reviewers --> <!-- start_revert_body --> This change reverts the following previous change: Closes flutter#163706. Before this PR, the macOS workflow (or, others, but only macOS had a test) would fail because it calls `refreshPluginsList` manually, and sometimes it would be `determineDevDependencies: null` and sometimes `determineDevDependencies: false`. A value of `determineDevDependencies: null` was interpreted later on as "find dev dependencies", which is not a safe operation. The only real change in this PR is `bool determineDevDependencies = false`, so omitting that parameter means we don't determine dev dependencies. Added some tests, and opted-in an integration test that was failing. <!-- end_revert_body --> Co-authored-by: auto-submit[bot] <[email protected]>
1 parent 3decd62 commit e673061

File tree

4 files changed

+4
-121
lines changed

4 files changed

+4
-121
lines changed

packages/flutter_tools/lib/src/flutter_plugins.dart

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,9 @@ bool _writeFlutterPluginsList(
244244
final String? oldPluginsFileStringContent = _readFileContent(pluginsFile);
245245
bool pluginsChanged = true;
246246
if (oldPluginsFileStringContent != null) {
247+
Object? decodedJson;
247248
try {
248-
final Object? decodedJson = jsonDecode(oldPluginsFileStringContent);
249+
decodedJson = jsonDecode(oldPluginsFileStringContent);
249250
if (decodedJson is Map<String, Object?>) {
250251
final String jsonOfNewPluginsMap = jsonEncode(pluginsMap);
251252
final String jsonOfOldPluginsMap = jsonEncode(decodedJson[_kFlutterPluginsPluginListKey]);
@@ -1099,17 +1100,12 @@ void _createPlatformPluginSymlinks(
10991100
/// dependencies declared in `pubspec.yaml`.
11001101
///
11011102
/// Assumes `pub get` has been executed since last change to `pubspec.yaml`.
1102-
///
1103-
/// Unless explicitly specified, [determineDevDependencies] is disabled by
1104-
/// default; if set to `true`, plugins that are development-only dependencies
1105-
/// may be labeled or, depending on the platform, omitted from metadata or
1106-
/// platform-specific artifacts.
11071103
Future<void> refreshPluginsList(
11081104
FlutterProject project, {
11091105
bool iosPlatform = false,
11101106
bool macOSPlatform = false,
11111107
bool forceCocoaPodsOnly = false,
1112-
bool determineDevDependencies = false,
1108+
bool? determineDevDependencies,
11131109
bool? generateLegacyPlugins,
11141110
}) async {
11151111
final List<Plugin> plugins = await findPlugins(

packages/flutter_tools/lib/src/project.dart

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -358,12 +358,7 @@ class FlutterProject {
358358
if (!directory.existsSync() || isPlugin) {
359359
return;
360360
}
361-
await refreshPluginsList(
362-
this,
363-
iosPlatform: iosPlatform,
364-
macOSPlatform: macOSPlatform,
365-
determineDevDependencies: releaseMode ?? false,
366-
);
361+
await refreshPluginsList(this, iosPlatform: iosPlatform, macOSPlatform: macOSPlatform);
367362
if (androidPlatform) {
368363
await android.ensureReadyForPlatformSpecificTooling(deprecationBehavior: deprecationBehavior);
369364
}

packages/flutter_tools/test/general.shard/project_test.dart

Lines changed: 0 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,6 @@ import '../src/fake_pub_deps.dart';
3131
import '../src/fakes.dart';
3232

3333
void main() {
34-
// TODO(matanlurey): Remove after `explicit-package-dependencies` is enabled by default.
35-
// See https://github.com/flutter/flutter/issues/160257 for details.
36-
FeatureFlags enableExplicitPackageDependencies() {
37-
return TestFeatureFlags(isExplicitPackageDependenciesEnabled: true);
38-
}
39-
4034
// TODO(zanderso): remove once FlutterProject is fully refactored.
4135
// this is safe since no tests have expectations on the test logger.
4236
final BufferLogger logger = BufferLogger.test();
@@ -278,59 +272,6 @@ void main() {
278272
await project.regeneratePlatformSpecificTooling();
279273
expectExists(project.android.hostAppGradleRoot.childFile('local.properties'));
280274
});
281-
282-
testUsingContext(
283-
'omitted release mode does not determine dev dependencies',
284-
() async {
285-
// Create a plugin.
286-
await aPluginProject();
287-
// Create a project that depends on that plugin.
288-
final FlutterProject project = await projectWithPluginDependency();
289-
// Don't bother with Android, we just want the manifest.
290-
project.directory.childDirectory('android').deleteSync(recursive: true);
291-
292-
await project.regeneratePlatformSpecificTooling();
293-
expect(
294-
project.flutterPluginsDependenciesFile.readAsStringSync(),
295-
isNot(contains('"dev_dependency":true')),
296-
);
297-
},
298-
overrides: <Type, Generator>{
299-
FeatureFlags: enableExplicitPackageDependencies,
300-
FileSystem: () => MemoryFileSystem.test(),
301-
ProcessManager: () => FakeProcessManager.any(),
302-
Pub: () => FakePubWithPrimedDeps(devDependencies: <String>{'my_plugin'}),
303-
FlutterProjectFactory:
304-
() => FlutterProjectFactory(logger: logger, fileSystem: globals.fs),
305-
},
306-
);
307-
308-
testUsingContext(
309-
'specified release mode determines dev dependencies',
310-
() async {
311-
// Create a plugin.
312-
await aPluginProject();
313-
// Create a project that depends on that plugin.
314-
final FlutterProject project = await projectWithPluginDependency();
315-
// Don't bother with Android, we just want the manifest.
316-
project.directory.childDirectory('android').deleteSync(recursive: true);
317-
318-
await project.regeneratePlatformSpecificTooling(releaseMode: true);
319-
expect(
320-
project.flutterPluginsDependenciesFile.readAsStringSync(),
321-
contains('"dev_dependency":true'),
322-
);
323-
},
324-
overrides: <Type, Generator>{
325-
FeatureFlags: enableExplicitPackageDependencies,
326-
FileSystem: () => MemoryFileSystem.test(),
327-
ProcessManager: () => FakeProcessManager.any(),
328-
Pub: () => FakePubWithPrimedDeps(devDependencies: <String>{'my_plugin'}),
329-
FlutterProjectFactory:
330-
() => FlutterProjectFactory(logger: logger, fileSystem: globals.fs),
331-
},
332-
);
333-
334275
testUsingContext(
335276
'injects plugins for macOS',
336277
() async {
@@ -1789,40 +1730,6 @@ Future<FlutterProject> someProject({
17891730
return FlutterProject.fromDirectory(directory);
17901731
}
17911732

1792-
Future<FlutterProject> projectWithPluginDependency() async {
1793-
final Directory directory = globals.fs.directory('some_project');
1794-
directory.childDirectory('.dart_tool').childFile('package_config.json')
1795-
..createSync(recursive: true)
1796-
..writeAsStringSync('''
1797-
{
1798-
"configVersion": 2,
1799-
"packages": [
1800-
{
1801-
"name": "my_plugin",
1802-
"rootUri": "/plugin_project",
1803-
"packageUri": "lib/",
1804-
"languageVersion": "2.12"
1805-
}
1806-
]
1807-
}
1808-
''');
1809-
directory.childFile('pubspec.yaml')
1810-
..createSync(recursive: true)
1811-
..writeAsStringSync('''
1812-
name: app_name
1813-
flutter:
1814-
1815-
dependencies:
1816-
my_plugin:
1817-
sdk: flutter
1818-
''');
1819-
directory.childDirectory('ios').createSync(recursive: true);
1820-
final Directory androidDirectory = directory.childDirectory('android')
1821-
..createSync(recursive: true);
1822-
androidDirectory.childFile('AndroidManifest.xml').writeAsStringSync('<manifest></manifest>');
1823-
return FlutterProject.fromDirectory(directory);
1824-
}
1825-
18261733
Future<FlutterProject> aPluginProject({bool legacy = true}) async {
18271734
final Directory directory = globals.fs.directory('plugin_project');
18281735
directory.childDirectory('ios').createSync(recursive: true);

packages/flutter_tools/test/host_cross_arch.shard/macos_content_validation_test.dart

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import 'package:file_testing/file_testing.dart';
66
import 'package:flutter_tools/src/base/file_system.dart';
77
import 'package:flutter_tools/src/base/io.dart';
8-
import 'package:flutter_tools/src/features.dart';
98

109
import '../integration.shard/test_utils.dart';
1110
import '../src/common.dart';
@@ -15,20 +14,6 @@ void main() {
1514

1615
setUpAll(() {
1716
processManager.runSync(<String>[flutterBin, 'config', '--enable-macos-desktop']);
18-
19-
// TODO(matanlurey): Remove after `explicit-package-dependencies` is enabled by default.
20-
// See https://github.com/flutter/flutter/issues/160257 for details.
21-
if (!explicitPackageDependencies.master.enabledByDefault) {
22-
processManager.runSync(<String>[flutterBin, 'config', '--explicit-package-dependencies']);
23-
}
24-
});
25-
26-
tearDownAll(() {
27-
// TODO(matanlurey): Remove after `explicit-package-dependencies` is enabled by default.
28-
// See https://github.com/flutter/flutter/issues/160257 for details.
29-
if (!explicitPackageDependencies.master.enabledByDefault) {
30-
processManager.runSync(<String>[flutterBin, 'config', '--no-explicit-package-dependencies']);
31-
}
3217
});
3318

3419
for (final String buildMode in <String>['Debug', 'Release']) {

0 commit comments

Comments
 (0)