| // Copyright 2016 The Chromium 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 'dart:convert'; |
| |
| import 'package:file/file.dart'; |
| |
| import 'package:flutter_tools/src/asset.dart'; |
| import 'package:flutter_tools/src/base/file_system.dart'; |
| import 'package:flutter_tools/src/cache.dart'; |
| |
| import 'package:test/test.dart'; |
| |
| import 'src/common.dart'; |
| import 'src/context.dart'; |
| |
| void main() { |
| setUpAll(() { |
| Cache.flutterRoot = getFlutterRoot(); |
| }); |
| |
| group('AssetBundle.build', () { |
| // These tests do not use a memory file system because we want to ensure that |
| // asset bundles work correctly on Windows and Posix systems. |
| Directory tempDir; |
| Directory oldCurrentDir; |
| |
| setUp(() async { |
| tempDir = await fs.systemTempDirectory.createTemp('asset_bundle_tests'); |
| oldCurrentDir = fs.currentDirectory; |
| fs.currentDirectory = tempDir; |
| }); |
| |
| tearDown(() { |
| fs.currentDirectory = oldCurrentDir; |
| try { |
| tempDir?.deleteSync(recursive: true); |
| tempDir = null; |
| } on FileSystemException catch (e) { |
| // Do nothing, windows sometimes has trouble deleting. |
| print('Ignored exception during tearDown: $e'); |
| } |
| }); |
| |
| testUsingContext('nonempty', () async { |
| final AssetBundle ab = AssetBundleFactory.instance.createBundle(); |
| expect(await ab.build(), 0); |
| expect(ab.entries.length, greaterThan(0)); |
| }); |
| |
| testUsingContext('empty pubspec', () async { |
| fs.file('pubspec.yaml') |
| ..createSync() |
| ..writeAsStringSync(''); |
| |
| final AssetBundle bundle = AssetBundleFactory.instance.createBundle(); |
| await bundle.build(manifestPath: 'pubspec.yaml'); |
| expect(bundle.entries.length, 1); |
| const String expectedAssetManifest = '{}'; |
| expect( |
| UTF8.decode(await bundle.entries['AssetManifest.json'].contentsAsBytes()), |
| expectedAssetManifest, |
| ); |
| }); |
| }); |
| |
| } |