Unverified Commit 733bd049 authored by Michael Goderbauer's avatar Michael Goderbauer Committed by GitHub

Fix custom fonts on Windows (#14191)

Fixes https://github.com/flutter/flutter/issues/13870.
parent 159db5ca
......@@ -118,7 +118,7 @@ class AssetBundle {
for (String packageName in packageMap.map.keys) {
final Uri package = packageMap.map[packageName];
if (package != null && package.scheme == 'file') {
final String packageManifestPath = package.resolve('../pubspec.yaml').path;
final String packageManifestPath = fs.path.fromUri(package.resolve('../pubspec.yaml'));
final FlutterManifest packageFlutterManifest = await FlutterManifest.createFromPath(packageManifestPath);
if (packageFlutterManifest == null)
continue;
......
// Copyright 2017 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:async';
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() {
group('Assets', () {
final String dataPath = fs.path.join(
getFlutterRoot(),
'packages',
'flutter_tools',
'test',
'data',
'asset_test',
);
setUpAll(() {
Cache.disableLocking();
});
// This test intentionally does not use a memory file system to ensure
// that AssetBundle with fonts also works on Windows.
testUsingContext('app font uses local font file', () async {
final AssetBundle asset = new AssetBundle();
await asset.build(
manifestPath : fs.path.join(dataPath, 'main', 'pubspec.yaml'),
packagesPath: fs.path.join(dataPath, 'main', '.packages'),
includeDefaultFonts: false,
);
expect(asset.entries.containsKey('FontManifest.json'), isTrue);
expect(
await getValueAsString('FontManifest.json', asset),
'[{"family":"packages/font/test_font","fonts":[{"asset":"packages/font/test_font_file"}]}]',
);
});
});
}
Future<String> getValueAsString(String key, AssetBundle asset) async {
return new String.fromCharCodes(await asset.entries[key].contentsAsBytes());
}
name: font
description: A test project that contains a font.
flutter:
uses-material-design: true
fonts:
- family: test_font
fonts:
- asset: test_font_file
name: main
description: A test project that has a package with a font as a dependency.
dependencies:
font:
path: ../font
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment