anchor.diff:            print('Shell: $line');
         });
     }
  +}
  +
  +File _cachedFontConfig;
  +
  +/// Returns a Fontconfig config file that limits font fallback to directories
  +/// specified in [fontDirectories].
  +File get _fontConfigFile {
  +  if (_cachedFontConfig != null) return _cachedFontConfig;
  +
  +  Directory fontsDir = Directory.systemTemp.createTempSync('flutter_fonts');
  +
  +  StringBuffer sb = new StringBuffer();
  +  sb.writeln('<fontconfig>');
  +  for (String fontDir in fontDirectories) {
  +    sb.writeln('  <dir>$fontDir</dir>');
  +  }
  +  sb.writeln('  <cachedir>/var/cache/fontconfig</cachedir>');
  +  sb.writeln('</fontconfig>');
  +
  +  _cachedFontConfig = new File('${fontsDir.path}/fonts.conf');
  +  _cachedFontConfig.createSync();
  +  _cachedFontConfig.writeAsStringSync(sb.toString());
  +  return _cachedFontConfig;
   }
   
   class FlutterPlatform extends PlatformPlugin {
  
positive.code: const String _kPath = '/runner';
  
  String shellPath;
  
  void installHook() {
    hack.registerPlatformPlugin(<TestPlatform>[TestPlatform.vm], () => new FlutterPlatform());
  
negative.code:     mainPath
    ]);
    printTrace('$executable ${arguments.join(' ')}');
    Map<String, String> environment = <String, String>{
      'FLUTTER_TEST': 'true',
      'FONTCONFIG_FILE': _fontConfigFile.path,
    };
    return Process.start(executable, arguments, environment: environment);
  }
  
  void _attachStandardStreams(Process process) {
  