// 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 'dart:async'; import '../base/file_system.dart'; import '../globals.dart' as globals; /// Manages a Font configuration that can be shared across multiple tests. class FontConfigManager { Directory? _fontsDirectory; /// Returns a Font configuration that limits font fallback to the artifact /// cache directory. late final File fontConfigFile = (){ final StringBuffer sb = StringBuffer(); sb.writeln('<fontconfig>'); sb.writeln(' <dir>${globals.cache.getCacheArtifacts().path}</dir>'); sb.writeln(' <cachedir>/var/cache/fontconfig</cachedir>'); sb.writeln('</fontconfig>'); if (_fontsDirectory == null) { _fontsDirectory = globals.fs.systemTempDirectory.createTempSync('flutter_test_fonts.'); globals.printTrace('Using this directory for fonts configuration: ${_fontsDirectory!.path}'); } final File cachedFontConfig = globals.fs.file('${_fontsDirectory!.path}/fonts.conf'); cachedFontConfig.createSync(); cachedFontConfig.writeAsStringSync(sb.toString()); return cachedFontConfig; }(); Future<void> dispose() async { if (_fontsDirectory != null) { globals.printTrace('Deleting ${_fontsDirectory!.path}...'); await _fontsDirectory!.delete(recursive: true); _fontsDirectory = null; } } }