Skip to content

Commit da36bd6

Browse files
authored
Stop recursively including assets from asset folders (#120167)
* add test * fix * use preexisting testFileSystem * fix variant tests * Revert "use preexisting testFileSystem" This reverts commit b6df288ef4a6ff007ecd984e98a1a3f2001ad242. * nit: grammar
1 parent f2e8975 commit da36bd6

File tree

3 files changed

+61
-16
lines changed

3 files changed

+61
-16
lines changed

packages/flutter_tools/lib/src/asset.dart

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -909,22 +909,6 @@ class ManifestAssetBundle implements AssetBundle {
909909
attributedPackage: attributedPackage,
910910
);
911911
}
912-
913-
final Iterable<Directory> nonVariantSubDirectories = entities
914-
.whereType<Directory>()
915-
.where((Directory directory) => !_assetVariantDirectoryRegExp.hasMatch(directory.basename));
916-
for (final Directory dir in nonVariantSubDirectories) {
917-
final String relativePath = _fileSystem.path.relative(dir.path, from: assetBase);
918-
final Uri relativePathsUri = Uri.directory(relativePath, windows: _platform.isWindows);
919-
920-
_parseAssetsFromFolder(packageConfig,
921-
flutterManifest,
922-
assetBase,
923-
cache,
924-
result,
925-
relativePathsUri
926-
);
927-
}
928912
}
929913

930914
void _parseAssetFromFile(

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

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,15 @@ import 'package:file/memory.dart';
99
import 'package:flutter_tools/src/artifacts.dart';
1010
import 'package:flutter_tools/src/asset.dart';
1111
import 'package:flutter_tools/src/base/file_system.dart';
12+
import 'package:flutter_tools/src/base/logger.dart';
1213
import 'package:flutter_tools/src/base/platform.dart';
14+
import 'package:flutter_tools/src/base/user_messages.dart';
1315
import 'package:flutter_tools/src/build_info.dart';
1416
import 'package:flutter_tools/src/bundle_builder.dart';
17+
import 'package:flutter_tools/src/cache.dart';
1518
import 'package:flutter_tools/src/devfs.dart';
1619
import 'package:flutter_tools/src/globals.dart' as globals;
20+
import 'package:flutter_tools/src/project.dart';
1721
import 'package:standard_message_codec/standard_message_codec.dart';
1822

1923
import '../src/common.dart';
@@ -69,6 +73,59 @@ void main() {
6973
ProcessManager: () => FakeProcessManager.any(),
7074
});
7175

76+
testWithoutContext('wildcard directories do not include subdirectories', () async {
77+
final Platform platform = FakePlatform();
78+
final FileSystem fs = MemoryFileSystem.test();
79+
Cache.flutterRoot = Cache.defaultFlutterRoot(platform: platform, fileSystem: fs, userMessages: UserMessages());
80+
81+
fs.file('.packages').createSync();
82+
fs.file('pubspec.yaml').writeAsStringSync(
83+
'''
84+
name: test
85+
dependencies:
86+
flutter:
87+
sdk: flutter
88+
flutter:
89+
assets:
90+
- assets/foo/
91+
- assets/bar/lizard.png
92+
'''
93+
);
94+
95+
final List<String> assets = <String>[
96+
'assets/foo/dog.png',
97+
'assets/foo/sub/cat.png',
98+
'assets/bar/lizard.png',
99+
'assets/bar/sheep.png'
100+
];
101+
102+
for (final String asset in assets) {
103+
final File assetFile = fs.file(asset);
104+
assetFile.createSync(recursive: true);
105+
assetFile.writeAsStringSync(asset);
106+
}
107+
108+
final ManifestAssetBundle bundle = ManifestAssetBundle(
109+
logger: BufferLogger.test(),
110+
fileSystem: fs,
111+
platform: platform,
112+
);
113+
114+
await bundle.build(
115+
packagesPath: '.packages',
116+
flutterProject: FlutterProject.fromDirectoryTest(fs.currentDirectory),
117+
);
118+
119+
expect(bundle.entries.keys, unorderedEquals(<String>[
120+
'AssetManifest.json',
121+
'AssetManifest.bin',
122+
'FontManifest.json',
123+
'NOTICES.Z',
124+
'assets/foo/dog.png',
125+
'assets/bar/lizard.png'
126+
]));
127+
});
128+
72129
testUsingContext('wildcard directories are updated when filesystem changes', () async {
73130
final File packageFile = globals.fs.file('.packages')..createSync();
74131
globals.fs.file(globals.fs.path.join('assets', 'foo', 'bar.txt')).createSync(recursive: true);

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ dependencies:
5454
flutter:
5555
assets:
5656
- assets/
57+
- assets/notAVariant/
58+
- assets/folder/
59+
- assets/normalFolder/
5760
'''
5861
);
5962
});
@@ -184,6 +187,7 @@ dependencies:
184187
flutter:
185188
assets:
186189
- assets/
190+
- assets/somewhereElse/
187191
'''
188192
);
189193
});

0 commit comments

Comments
 (0)