@@ -375,6 +375,66 @@ flutter:
375375 expect (assetBundle.entries.keys, contains ('shaders/$shader ' ));
376376 }
377377 });
378+
379+ testWithoutContext ('fails if shader is also in assets' , () async {
380+ writePackageConfigFiles (directory: fileSystem.currentDirectory, mainLibName: 'my_package' );
381+ fileSystem.file ('pubspec.yaml' ).writeAsStringSync (r'''
382+ name: my_package
383+ flutter:
384+ shaders:
385+ - shaders/my_shader.frag
386+ assets:
387+ - shaders/my_shader.frag
388+ ''' );
389+ fileSystem.file ('shaders/my_shader.frag' ).createSync (recursive: true );
390+ final assetBundle = ManifestAssetBundle (
391+ logger: logger,
392+ fileSystem: fileSystem,
393+ platform: platform,
394+ flutterRoot: flutterRoot,
395+ );
396+
397+ final int result = await assetBundle.build (
398+ packageConfigPath: '.dart_tool/package_config.json' ,
399+ flutterProject: FlutterProject .fromDirectoryTest (fileSystem.currentDirectory),
400+ );
401+ expect (result, isNot (0 ));
402+ expect (
403+ logger.errorText,
404+ contains ('Error: Shader "shaders/my_shader.frag" is also defined as an asset.' ),
405+ );
406+ });
407+
408+ testWithoutContext ('fails if shader is in asset directory' , () async {
409+ writePackageConfigFiles (directory: fileSystem.currentDirectory, mainLibName: 'my_package' );
410+ fileSystem.file ('pubspec.yaml' ).writeAsStringSync (r'''
411+ name: my_package
412+ flutter:
413+ shaders:
414+ - shaders/my_shader.frag
415+ assets:
416+ - shaders/
417+ ''' );
418+ fileSystem.file ('shaders/my_shader.frag' ).createSync (recursive: true );
419+ final assetBundle = ManifestAssetBundle (
420+ logger: logger,
421+ fileSystem: fileSystem,
422+ platform: platform,
423+ flutterRoot: flutterRoot,
424+ );
425+
426+ final int result = await assetBundle.build (
427+ packageConfigPath: '.dart_tool/package_config.json' ,
428+ flutterProject: FlutterProject .fromDirectoryTest (fileSystem.currentDirectory),
429+ );
430+ expect (result, isNot (0 ));
431+ expect (
432+ logger.errorText,
433+ contains (
434+ 'Error: Shader "shaders/my_shader.frag" is included in the asset directory "shaders/".' ,
435+ ),
436+ );
437+ });
378438 });
379439 }
380440}
0 commit comments