@@ -35,7 +35,7 @@ void main() {
35
35
BuildInputBuilder ()
36
36
..setupShared (
37
37
packageName: packageName,
38
- packageRoot: tempUri,
38
+ packageRoot: tempUri. resolve ( '$ packageName /' ) ,
39
39
outputFile: tempUri.resolve ('output.json' ),
40
40
outputDirectory: outDirUri,
41
41
outputDirectoryShared: outDirSharedUri,
@@ -108,4 +108,106 @@ void main() {
108
108
);
109
109
expect (errors, contains (contains ('More than one' )));
110
110
});
111
+
112
+ test ('addDataAssetDirectories processes multiple directories' , () async {
113
+ final input = makeDataBuildInput ();
114
+ final outputBuilder = BuildOutputBuilder ();
115
+
116
+ final assetsDir1Uri = packageRootUri.resolve ('assets1' );
117
+ final assetsDir1 = Directory .fromUri (assetsDir1Uri);
118
+ await assetsDir1.create (recursive: true );
119
+
120
+ final assetsDir2Uri = packageRootUri.resolve ('assets2' );
121
+ final assetsDir2 = Directory .fromUri (assetsDir2Uri);
122
+ await assetsDir2.create (recursive: true );
123
+
124
+ // Create a file in assets1.
125
+ final file1Uri = assetsDir1.uri.resolve ('file1.txt' );
126
+ final file1 = File .fromUri (file1Uri);
127
+ await file1.writeAsString ('Hello World' );
128
+
129
+ // Create a file in assets2.
130
+ final file2Uri = assetsDir2.uri.resolve ('file2.txt' );
131
+ final file2 = File .fromUri (file2Uri);
132
+ await file2.writeAsString ('Hello Dart' );
133
+
134
+ final output = BuildOutput (outputBuilder.json);
135
+ await outputBuilder.addDataAssetDirectories ([
136
+ 'assets1' ,
137
+ 'assets2' ,
138
+ ], input: input);
139
+
140
+ // Check that the files in both directories were added as dependencies.
141
+ expect (output.dependencies, contains (file1Uri));
142
+ expect (output.dependencies, contains (file2Uri));
143
+ });
144
+
145
+ test ('addDataAssetDirectories processes one file' , () async {
146
+ final input = makeDataBuildInput ();
147
+ final outputBuilder = BuildOutputBuilder ();
148
+
149
+ final assetsDirUri = packageRootUri.resolve ('single_assets' );
150
+ final assetsDir = Directory .fromUri (assetsDirUri);
151
+ await assetsDir.create (recursive: true );
152
+
153
+ // Create a file in the single_assets directory.
154
+ final fileUri = assetsDir.uri.resolve ('single_file.txt' );
155
+ final file = File .fromUri (fileUri)..createSync ();
156
+ await file.writeAsString ('Test content' );
157
+
158
+ final output = BuildOutput (outputBuilder.json);
159
+ await outputBuilder.addDataAssetDirectories ([
160
+ 'single_assets/single_file.txt' ,
161
+ ], input: input);
162
+
163
+ // Check that the file in the directory was added as a dependency.
164
+ expect (output.dependencies, contains (fileUri));
165
+ });
166
+
167
+ test ('addDataAssetDirectories processes nested directories' , () async {
168
+ final input = makeDataBuildInput ();
169
+ final outputBuilder = BuildOutputBuilder ();
170
+
171
+ // Create top-level assets directory.
172
+ final assetsDirUri = packageRootUri.resolve ('assets3' );
173
+ final assetsDir = Directory .fromUri (assetsDirUri);
174
+ await assetsDir.create (recursive: true );
175
+
176
+ // Create nested subdirectory.
177
+ final nestedDirUri = assetsDir.uri.resolve ('subdir' );
178
+ final nestedDir = Directory .fromUri (nestedDirUri);
179
+ await nestedDir.create (recursive: true );
180
+
181
+ final nestedDir2Uri = nestedDir.uri.resolve ('subdir2' );
182
+ final nestedDir2 = Directory .fromUri (nestedDir2Uri);
183
+ await nestedDir2.create (recursive: true );
184
+
185
+ // Create a file in the top-level assets directory.
186
+ final fileTopUri = assetsDir.uri.resolve ('top_file.txt' );
187
+ final fileTop = File .fromUri (fileTopUri);
188
+ await fileTop.writeAsString ('Top level file' );
189
+
190
+ // Create a file in the nested subdirectory.
191
+ final nestedFileUri = nestedDir.uri.resolve ('nested_file.txt' );
192
+ final nestedFile = File .fromUri (nestedFileUri);
193
+ await nestedFile.writeAsString ('Nested file' );
194
+
195
+ // Create a file in the nested subdirectory.
196
+ final nestedFile2Uri = nestedDir2.uri.resolve ('nested_file2.txt' );
197
+ final nestedFile2 = File .fromUri (nestedFile2Uri);
198
+ await nestedFile2.writeAsString ('Nested file 2' );
199
+
200
+ final output = BuildOutput (outputBuilder.json);
201
+ await outputBuilder.addDataAssetDirectories (
202
+ ['assets3' ],
203
+ input: input,
204
+ recursive: true ,
205
+ );
206
+
207
+ // Verify that the top-level directory, nested directory, and both files are
208
+ // added.
209
+ expect (output.dependencies, contains (fileTopUri));
210
+ expect (output.dependencies, contains (nestedFileUri));
211
+ expect (output.dependencies, contains (nestedFile2Uri));
212
+ });
111
213
}
0 commit comments