@@ -9,11 +9,15 @@ import 'package:file/memory.dart';
9
9
import 'package:flutter_tools/src/artifacts.dart' ;
10
10
import 'package:flutter_tools/src/asset.dart' ;
11
11
import 'package:flutter_tools/src/base/file_system.dart' ;
12
+ import 'package:flutter_tools/src/base/logger.dart' ;
12
13
import 'package:flutter_tools/src/base/platform.dart' ;
14
+ import 'package:flutter_tools/src/base/user_messages.dart' ;
13
15
import 'package:flutter_tools/src/build_info.dart' ;
14
16
import 'package:flutter_tools/src/bundle_builder.dart' ;
17
+ import 'package:flutter_tools/src/cache.dart' ;
15
18
import 'package:flutter_tools/src/devfs.dart' ;
16
19
import 'package:flutter_tools/src/globals.dart' as globals;
20
+ import 'package:flutter_tools/src/project.dart' ;
17
21
import 'package:standard_message_codec/standard_message_codec.dart' ;
18
22
19
23
import '../src/common.dart' ;
@@ -69,6 +73,59 @@ void main() {
69
73
ProcessManager : () => FakeProcessManager .any (),
70
74
});
71
75
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
+
72
129
testUsingContext ('wildcard directories are updated when filesystem changes' , () async {
73
130
final File packageFile = globals.fs.file ('.packages' )..createSync ();
74
131
globals.fs.file (globals.fs.path.join ('assets' , 'foo' , 'bar.txt' )).createSync (recursive: true );
0 commit comments