| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter_tools/src/base/file_system.dart'; |
| import 'package:flutter_tools/src/base/logger.dart'; |
| import 'package:flutter_tools/src/build_system/targets/shader_compiler.dart'; |
| import 'package:flutter_tools/src/globals.dart' as globals; |
| |
| import '../src/common.dart'; |
| import '../src/context.dart'; |
| |
| void main() { |
| late BufferLogger logger; |
| |
| setUp(() { |
| logger = BufferLogger.test(); |
| }); |
| |
| testUsingContext('impellerc .iplr output has correct permissions', () async { |
| if (globals.platform.isWindows) { |
| return; |
| } |
| |
| final String flutterRoot = getFlutterRoot(); |
| final String inkSparklePath = globals.fs.path.join(flutterRoot, |
| 'packages', 'flutter', 'lib', 'src', 'material', 'shaders', |
| 'ink_sparkle.frag'); |
| final Directory tmpDir = globals.fs.systemTempDirectory.createTempSync( |
| 'shader_compiler_test.', |
| ); |
| final String inkSparkleOutputPath = globals.fs.path.join( |
| tmpDir.path, 'ink_sparkle.frag', |
| ); |
| |
| final ShaderCompiler shaderCompiler = ShaderCompiler( |
| processManager: globals.processManager, |
| logger: logger, |
| fileSystem: globals.fs, |
| artifacts: globals.artifacts!, |
| ); |
| final bool compileResult = await shaderCompiler.compileShader( |
| input: globals.fs.file(inkSparklePath), |
| outputPath: inkSparkleOutputPath, |
| target: ShaderTarget.sksl, |
| ); |
| final File resultFile = globals.fs.file(inkSparkleOutputPath); |
| |
| |
| expect(compileResult, true); |
| expect(resultFile.existsSync(), true); |
| |
| final int expectedMode = int.parse('644', radix: 8); |
| expect(resultFile.statSync().mode & expectedMode, equals(expectedMode)); |
| }); |
| } |