@@ -35,7 +35,7 @@ void main() {
3535 BuildInputBuilder ()
3636 ..setupShared (
3737 packageName: packageName,
38- packageRoot: tempUri,
38+ packageRoot: tempUri. resolve ( '$ packageName /' ) ,
3939 outputFile: tempUri.resolve ('output.json' ),
4040 outputDirectory: outDirUri,
4141 outputDirectoryShared: outDirSharedUri,
@@ -108,4 +108,106 @@ void main() {
108108 );
109109 expect (errors, contains (contains ('More than one' )));
110110 });
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+ });
111213}
0 commit comments