Index: test/build/import_crawler_test.dart |
diff --git a/test/build/import_crawler_test.dart b/test/build/import_crawler_test.dart |
index 776ee1cec54a1084218aaaaff3f50d34a7f1977b..c140c09a9fb1c61908007cec295236f937be7126 100644 |
--- a/test/build/import_crawler_test.dart |
+++ b/test/build/import_crawler_test.dart |
@@ -3,24 +3,42 @@ |
// BSD-style license that can be found in the LICENSE file. |
library web_components.test.build.import_crawler_test; |
+import 'dart:async'; |
import 'package:barback/barback.dart'; |
import 'package:code_transformers/tests.dart'; |
import 'package:code_transformers/messages/build_logger.dart'; |
+import 'package:html5lib/dom.dart' show Document; |
+import 'package:web_components/build/common.dart'; |
import 'package:web_components/build/import_crawler.dart'; |
import 'package:unittest/compact_vm_config.dart'; |
class _TestTransformer extends Transformer { |
final String _entryPoint; |
Map<AssetId, ImportData> documents; |
+ final bool _preParseDocument; |
- _TestTransformer(this._entryPoint); |
+ _TestTransformer(this._entryPoint, [this._preParseDocument = false]); |
isPrimary(AssetId id) => id.path == _entryPoint; |
apply(Transform transform) { |
var primaryInput = transform.primaryInput; |
var logger = new BuildLogger(transform, primaryId: primaryInput.id); |
- var crawler = new ImportCrawler(transform, primaryInput.id, logger); |
+ if (_preParseDocument) { |
+ return primaryInput.readAsString().then((html) { |
+ var document = parseHtml(html, primaryInput.id.path); |
+ return crawlDocument(transform, logger, document); |
+ }); |
+ } else { |
+ return crawlDocument(transform, logger); |
+ } |
+ } |
+ |
+ Future crawlDocument( |
+ Transform transform, BuildLogger logger, [Document document]) { |
+ var primaryInput = transform.primaryInput; |
+ var crawler = new ImportCrawler( |
+ transform, primaryInput.id, logger, primaryDocument: document); |
return crawler.crawlImports().then((docs) { |
documents = docs; |
transform.addOutput(new Asset.fromString( |
@@ -31,8 +49,13 @@ class _TestTransformer extends Transformer { |
main() { |
useCompactVMConfiguration(); |
+ runTests([[new _TestTransformer('web/index.html')]]); |
+ // Test with a preparsed original document as well. |
+ runTests([[new _TestTransformer('web/index.html', true)]]); |
+} |
- testPhases('basic', [[new _TestTransformer('web/index.html')]], { |
+runTests(List<List<Transformer>> phases) { |
+ testPhases('basic', phases, { |
'a|web/index.html': ''' |
<link rel="import" href="foo.html"> |
<link rel="import" href="packages/a/foo.html"> |
@@ -53,7 +76,7 @@ main() { |
''', |
}, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
- testPhases('cycle', [[new _TestTransformer('web/index.html')]], { |
+ testPhases('cycle', phases, { |
'a|web/index.html': ''' |
<link rel="import" href="packages/a/foo.html"> |
<div>a|web/index.html</div> |
@@ -70,7 +93,7 @@ main() { |
''', |
}, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
- testPhases('deep imports', [[new _TestTransformer('web/index.html')]], { |
+ testPhases('deep imports', phases, { |
'a|web/index.html': ''' |
<link rel="import" href="packages/a/foo.html"> |
<div>a|web/index.html</div> |