| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file |  | 
| 2 // for details. All rights reserved. Use of this source code is governed by a |  | 
| 3 // BSD-style license that can be found in the LICENSE file. |  | 
| 4 |  | 
| 5 /** Common definitions used for setting up the test environment. */ |  | 
| 6 library testing; |  | 
| 7 |  | 
| 8 import 'dart:async'; |  | 
| 9 import 'dart:io'; |  | 
| 10 |  | 
| 11 import 'package:csslib/visitor.dart'; |  | 
| 12 import 'package:html5lib/dom.dart'; |  | 
| 13 import 'package:html5lib/parser.dart'; |  | 
| 14 import 'package:polymer/src/analyzer.dart'; |  | 
| 15 import 'package:polymer/src/compiler.dart'; |  | 
| 16 import 'package:polymer/src/file_system.dart'; |  | 
| 17 import 'package:polymer/src/info.dart'; |  | 
| 18 import 'package:polymer/src/messages.dart'; |  | 
| 19 import 'package:polymer/src/compiler_options.dart'; |  | 
| 20 import 'package:polymer/src/files.dart'; |  | 
| 21 import 'package:polymer/src/utils.dart'; |  | 
| 22 |  | 
| 23 |  | 
| 24 Document parseDocument(String html) => parse(html); |  | 
| 25 |  | 
| 26 Element parseSubtree(String html) => parseFragment(html).nodes[0]; |  | 
| 27 |  | 
| 28 FileInfo analyzeDefinitionsInTree(Document doc, Messages messages, |  | 
| 29     {String packageRoot: 'packages'}) { |  | 
| 30 |  | 
| 31   return analyzeDefinitions(new GlobalInfo(), new UrlInfo('', '', null), |  | 
| 32       doc, packageRoot, messages); |  | 
| 33 } |  | 
| 34 |  | 
| 35 /** Parses files in [fileContents], with [mainHtmlFile] being the main file. */ |  | 
| 36 List<SourceFile> parseFiles(Map<String, String> fileContents, |  | 
| 37     [String mainHtmlFile = 'index.html']) { |  | 
| 38 |  | 
| 39   var result = <SourceFile>[]; |  | 
| 40   fileContents.forEach((filename, contents) { |  | 
| 41     var src = new SourceFile(filename); |  | 
| 42     src.document = parse(contents); |  | 
| 43     result.add(src); |  | 
| 44   }); |  | 
| 45 |  | 
| 46   return result; |  | 
| 47 } |  | 
| 48 |  | 
| 49 /** Analyze all files. */ |  | 
| 50 Map<String, FileInfo> analyzeFiles(List<SourceFile> files, |  | 
| 51     {Messages messages, String packageRoot: 'packages'}) { |  | 
| 52   messages = messages == null ? new Messages.silent() : messages; |  | 
| 53   var result = new Map<String, FileInfo>(); |  | 
| 54 |  | 
| 55   // analyze definitions |  | 
| 56   var global = new GlobalInfo(); |  | 
| 57   for (var file in files) { |  | 
| 58     var path = file.path; |  | 
| 59     result[path] = analyzeDefinitions(global, new UrlInfo(path, path, null), |  | 
| 60         file.document, packageRoot, messages); |  | 
| 61   } |  | 
| 62 |  | 
| 63   // analyze file contents |  | 
| 64   var uniqueIds = new IntIterator(); |  | 
| 65   var pseudoElements = new Map(); |  | 
| 66   for (var file in files) { |  | 
| 67     analyzeFile(file, result, uniqueIds, pseudoElements, messages, true); |  | 
| 68   } |  | 
| 69   return result; |  | 
| 70 } |  | 
| 71 |  | 
| 72 Compiler createCompiler(Map files, Messages messages, {bool errors: false, |  | 
| 73     bool scopedCss: false}) { |  | 
| 74   List baseOptions = ['--no-colors', '-o', 'out', '--deploy', 'index.html']; |  | 
| 75   if (errors) baseOptions.insert(0, '--warnings_as_errors'); |  | 
| 76   if (scopedCss) baseOptions.insert(0, '--scoped-css'); |  | 
| 77   var options = CompilerOptions.parse(baseOptions); |  | 
| 78   var fs = new MockFileSystem(files); |  | 
| 79   return new Compiler(fs, options, messages); |  | 
| 80 } |  | 
| 81 |  | 
| 82 String prettyPrintCss(StyleSheet styleSheet) => |  | 
| 83     ((new CssPrinter())..visitTree(styleSheet)).toString(); |  | 
| 84 |  | 
| 85 /** |  | 
| 86  * Abstraction around file system access to work in a variety of different |  | 
| 87  * environments. |  | 
| 88  */ |  | 
| 89 class MockFileSystem extends FileSystem { |  | 
| 90   final Map _files; |  | 
| 91   final Map readCount = {}; |  | 
| 92 |  | 
| 93   MockFileSystem(this._files); |  | 
| 94 |  | 
| 95   Future readTextOrBytes(String filename) => readText(filename); |  | 
| 96 |  | 
| 97   Future<String> readText(String path) { |  | 
| 98     readCount[path] = readCount.putIfAbsent(path, () => 0) + 1; |  | 
| 99     var file = _files[path]; |  | 
| 100     if (file != null) { |  | 
| 101       return new Future.value(file); |  | 
| 102     } else { |  | 
| 103       return new Future.error( |  | 
| 104           new FileException('MockFileSystem: $path not found')); |  | 
| 105     } |  | 
| 106   } |  | 
| 107 |  | 
| 108   // Compiler doesn't call these |  | 
| 109   void writeString(String outfile, String text) {} |  | 
| 110   Future flush() {} |  | 
| 111 } |  | 
| OLD | NEW | 
|---|