@@ -12,6 +12,7 @@ import 'package:logging/logging.dart';
1212import 'package:test/test.dart' ;
1313
1414void main () {
15+ initializePlatforms ();
1516 final platform = dart2jsPlatform;
1617
1718 late StreamSubscription <LogRecord > logSubscription;
@@ -142,4 +143,93 @@ void main() {
142143 outputs: expectedOutputs,
143144 );
144145 });
146+
147+ test ('throws on unsupported platform library imports' , () async {
148+ final assets = {
149+ 'a|lib/index.dart' : '''
150+ import 'dart:io';
151+ main() {
152+ print('hello world');
153+ }
154+ ''' ,
155+ };
156+ final expectedOutputs = {
157+ 'a|lib/.dart2js.meta_module.clean' : isNotNull,
158+ 'a|lib/.dart2js.meta_module.raw' : isNotNull,
159+ 'a|lib/index.dart2js.module' : isNotNull,
160+ 'a|lib/index.module.library' : isNotNull,
161+ };
162+ final logs = < LogRecord > [];
163+ await testBuilders (
164+ [
165+ const ModuleLibraryBuilder (),
166+ MetaModuleBuilder (platform),
167+ MetaModuleCleanBuilder (platform),
168+ ModuleBuilder (platform),
169+ WebEntrypointBuilder .fromOptions (
170+ const BuilderOptions ({
171+ 'compiler' : 'dart2js' ,
172+ 'native_null_assertions' : false ,
173+ }),
174+ ),
175+ ],
176+ assets,
177+ outputs: expectedOutputs,
178+ onLog: logs.add,
179+ );
180+ expect (
181+ logs,
182+ contains (
183+ isA <LogRecord >().having (
184+ (r) => r.message,
185+ 'message' ,
186+ contains (
187+ 'Skipping compiling a|lib/index.dart with dart2js because some of '
188+ 'its\n transitive libraries have sdk dependencies that are not '
189+ 'supported on this platform:\n\n a|lib/index.dart' ,
190+ ),
191+ ),
192+ ),
193+ );
194+ });
195+
196+ test (
197+ 'ignores unsupported platform library imports when silence flag is set' ,
198+ () async {
199+ final assets = {
200+ 'a|lib/index.dart' : '''
201+ import 'dart:io';
202+ main() {
203+ print('hello world');
204+ }
205+ ''' ,
206+ };
207+ final expectedOutputs = {
208+ 'a|lib/.dart2js.meta_module.clean' : isNotNull,
209+ 'a|lib/.dart2js.meta_module.raw' : isNotNull,
210+ 'a|lib/index.dart.js.map' : isNotNull,
211+ 'a|lib/index.dart.js.tar.gz' : isNotNull,
212+ 'a|lib/index.dart.js' : decodedMatches (contains ('world' )),
213+ 'a|lib/index.dart2js.module' : isNotNull,
214+ 'a|lib/index.module.library' : isNotNull,
215+ };
216+ await testBuilders (
217+ [
218+ const ModuleLibraryBuilder (),
219+ MetaModuleBuilder (platform),
220+ MetaModuleCleanBuilder (platform),
221+ ModuleBuilder (platform),
222+ WebEntrypointBuilder .fromOptions (
223+ const BuilderOptions ({
224+ 'compiler' : 'dart2js' ,
225+ 'native_null_assertions' : false ,
226+ 'silence_unsupported_modules_warnings' : true ,
227+ }),
228+ ),
229+ ],
230+ assets,
231+ outputs: expectedOutputs,
232+ );
233+ },
234+ );
145235}
0 commit comments