// 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. // @dart = 2.8 import 'package:file/memory.dart'; import 'package:file_testing/file_testing.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/windows/install_manifest.dart'; import '../../src/common.dart'; import '../../src/context.dart'; final Platform platform = FakePlatform(operatingSystem: 'windows'); void main() { FileSystem fileSystem; setUp(() { fileSystem = MemoryFileSystem.test(style: FileSystemStyle.windows); }); testUsingContext('Generates install manifest for a debug build', () async { final Logger logger = BufferLogger.test(); final FlutterProject flutterProject = FlutterProject.fromDirectoryTest(fileSystem.currentDirectory); final Directory buildDirectory = fileSystem.currentDirectory .childDirectory('build') .childDirectory('winuwp'); await createManifest( logger: logger, fileSystem: fileSystem, platform: platform, project: flutterProject.windowsUwp, buildDirectory: buildDirectory, buildInfo: BuildInfo.debug, ); final File manifest = flutterProject.windowsUwp.ephemeralDirectory.childFile('install_manifest'); expect(manifest, exists); expect(manifest.readAsLinesSync(), unorderedEquals([ 'C:/build/flutter_assets/kernel_blob.bin', 'C:/build/flutter_assets/AssetManifest.json', 'C:/winuwp/flutter/ephemeral/flutter_windows_winuwp.dll', 'C:/winuwp/flutter/ephemeral/flutter_windows_winuwp.dll.pdb', 'C:/winuwp/flutter/ephemeral/icudtl.dat', ])); }, overrides: { FileSystem: () => fileSystem, ProcessManager: () => FakeProcessManager.any(), }); testUsingContext('Generates install manifest for a release build', () async { final Logger logger = BufferLogger.test(); final FlutterProject flutterProject = FlutterProject.fromDirectoryTest(fileSystem.currentDirectory); final Directory buildDirectory = fileSystem.currentDirectory .childDirectory('build') .childDirectory('winuwp'); await createManifest( logger: logger, fileSystem: fileSystem, platform: platform, project: flutterProject.windowsUwp, buildDirectory: buildDirectory, buildInfo: BuildInfo.release, ); final File manifest = flutterProject.windowsUwp.ephemeralDirectory.childFile('install_manifest'); expect(manifest, exists); expect(manifest.readAsLinesSync(), unorderedEquals([ 'C:/build/winuwp/app.so', 'C:/build/flutter_assets/AssetManifest.json', 'C:/winuwp/flutter/ephemeral/flutter_windows_winuwp.dll', 'C:/winuwp/flutter/ephemeral/flutter_windows_winuwp.dll.pdb', 'C:/winuwp/flutter/ephemeral/icudtl.dat' ])); }, overrides: { FileSystem: () => fileSystem, ProcessManager: () => FakeProcessManager.any(), }); testUsingContext('Generates install manifest for a release build with assets', () async { final BufferLogger logger = BufferLogger.test(); final FlutterProject flutterProject = FlutterProject.fromDirectoryTest(fileSystem.currentDirectory); final Directory buildDirectory = fileSystem.currentDirectory .childDirectory('build') .childDirectory('winuwp'); fileSystem.currentDirectory.childDirectory('.dart_tool').childFile('package_config.json') ..createSync(recursive: true) ..writeAsStringSync(''' { "configVersion": 2, "packages": [] } '''); fileSystem.currentDirectory.childFile('pubspec.yaml') ..createSync() ..writeAsStringSync(''' name: foo flutter: assets: - assets/foo.png '''); fileSystem.currentDirectory .childDirectory('assets') .childFile('foo.png') .createSync(recursive: true); await createManifest( logger: logger, fileSystem: fileSystem, platform: platform, project: flutterProject.windowsUwp, buildDirectory: buildDirectory, buildInfo: BuildInfo.release, ); final File manifest = flutterProject.windowsUwp.ephemeralDirectory.childFile('install_manifest'); expect(manifest, exists); expect(manifest.readAsLinesSync(), unorderedEquals([ 'C:/build/winuwp/app.so', 'C:/build/flutter_assets/assets/foo.png', 'C:/build/flutter_assets/AssetManifest.json', 'C:/build/flutter_assets/FontManifest.json', 'C:/build/flutter_assets/NOTICES.Z', 'C:/winuwp/flutter/ephemeral/flutter_windows_winuwp.dll', 'C:/winuwp/flutter/ephemeral/flutter_windows_winuwp.dll.pdb', 'C:/winuwp/flutter/ephemeral/icudtl.dat' ])); }, overrides: { FileSystem: () => fileSystem, ProcessManager: () => FakeProcessManager.any(), }); }