Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(115)

Side by Side Diff: test/build/import_crawler_test.dart

Issue 978453003: add option to ImportCrawler to start from an already parsed document (Closed) Base URL: git@github.com:dart-lang/web-components.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pubspec.yaml ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 library web_components.test.build.import_crawler_test; 4 library web_components.test.build.import_crawler_test;
5 5
6 import 'dart:async';
6 import 'package:barback/barback.dart'; 7 import 'package:barback/barback.dart';
7 import 'package:code_transformers/tests.dart'; 8 import 'package:code_transformers/tests.dart';
8 import 'package:code_transformers/messages/build_logger.dart'; 9 import 'package:code_transformers/messages/build_logger.dart';
10 import 'package:html5lib/dom.dart' show Document;
11 import 'package:web_components/build/common.dart';
9 import 'package:web_components/build/import_crawler.dart'; 12 import 'package:web_components/build/import_crawler.dart';
10 import 'package:unittest/compact_vm_config.dart'; 13 import 'package:unittest/compact_vm_config.dart';
11 14
12 class _TestTransformer extends Transformer { 15 class _TestTransformer extends Transformer {
13 final String _entryPoint; 16 final String _entryPoint;
14 Map<AssetId, ImportData> documents; 17 Map<AssetId, ImportData> documents;
18 final bool _preParseDocument;
15 19
16 _TestTransformer(this._entryPoint); 20 _TestTransformer(this._entryPoint, [this._preParseDocument = false]);
17 21
18 isPrimary(AssetId id) => id.path == _entryPoint; 22 isPrimary(AssetId id) => id.path == _entryPoint;
19 23
20 apply(Transform transform) { 24 apply(Transform transform) {
21 var primaryInput = transform.primaryInput; 25 var primaryInput = transform.primaryInput;
22 var logger = new BuildLogger(transform, primaryId: primaryInput.id); 26 var logger = new BuildLogger(transform, primaryId: primaryInput.id);
23 var crawler = new ImportCrawler(transform, primaryInput.id, logger); 27 if (_preParseDocument) {
28 return primaryInput.readAsString().then((html) {
29 var document = parseHtml(html, primaryInput.id.path);
30 return crawlDocument(transform, logger, document);
31 });
32 } else {
33 return crawlDocument(transform, logger);
34 }
35 }
36
37 Future crawlDocument(
38 Transform transform, BuildLogger logger, [Document document]) {
39 var primaryInput = transform.primaryInput;
40 var crawler = new ImportCrawler(
41 transform, primaryInput.id, logger, primaryDocument: document);
24 return crawler.crawlImports().then((docs) { 42 return crawler.crawlImports().then((docs) {
25 documents = docs; 43 documents = docs;
26 transform.addOutput(new Asset.fromString( 44 transform.addOutput(new Asset.fromString(
27 new AssetId('a', 'web/result.txt'), '${documents.keys}')); 45 new AssetId('a', 'web/result.txt'), '${documents.keys}'));
28 }); 46 });
29 } 47 }
30 } 48 }
31 49
32 main() { 50 main() {
33 useCompactVMConfiguration(); 51 useCompactVMConfiguration();
52 runTests([[new _TestTransformer('web/index.html')]]);
53 // Test with a preparsed original document as well.
54 runTests([[new _TestTransformer('web/index.html', true)]]);
55 }
34 56
35 testPhases('basic', [[new _TestTransformer('web/index.html')]], { 57 runTests(List<List<Transformer>> phases) {
58 testPhases('basic', phases, {
36 'a|web/index.html': ''' 59 'a|web/index.html': '''
37 <link rel="import" href="foo.html"> 60 <link rel="import" href="foo.html">
38 <link rel="import" href="packages/a/foo.html"> 61 <link rel="import" href="packages/a/foo.html">
39 <link rel="import" href="packages/b/foo.html"> 62 <link rel="import" href="packages/b/foo.html">
40 <link rel="import" href="packages/b/foo/bar.html"> 63 <link rel="import" href="packages/b/foo/bar.html">
41 <div>a|web/index.html</div> 64 <div>a|web/index.html</div>
42 ''', 65 ''',
43 'a|web/foo.html': '<div>a|web/foo.html</div>', 66 'a|web/foo.html': '<div>a|web/foo.html</div>',
44 'a|lib/foo.html': '<div>a|lib/foo.html</div>', 67 'a|lib/foo.html': '<div>a|lib/foo.html</div>',
45 'b|lib/foo.html': ''' 68 'b|lib/foo.html': '''
46 <link rel="import" href="foo/bar.html"> 69 <link rel="import" href="foo/bar.html">
47 <div>b|lib/foo.html</div> 70 <div>b|lib/foo.html</div>
48 ''', 71 ''',
49 'b|lib/foo/bar.html': '<div>b|lib/foo/bar.html</div>', 72 'b|lib/foo/bar.html': '<div>b|lib/foo/bar.html</div>',
50 }, { 73 }, {
51 'a|web/result.txt': ''' 74 'a|web/result.txt': '''
52 (a|web/foo.html, a|lib/foo.html, b|lib/foo/bar.html, b|lib/foo.html, a|web /index.html) 75 (a|web/foo.html, a|lib/foo.html, b|lib/foo/bar.html, b|lib/foo.html, a|web /index.html)
53 ''', 76 ''',
54 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 77 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
55 78
56 testPhases('cycle', [[new _TestTransformer('web/index.html')]], { 79 testPhases('cycle', phases, {
57 'a|web/index.html': ''' 80 'a|web/index.html': '''
58 <link rel="import" href="packages/a/foo.html"> 81 <link rel="import" href="packages/a/foo.html">
59 <div>a|web/index.html</div> 82 <div>a|web/index.html</div>
60 ''', 83 ''',
61 'a|lib/foo.html': ''' 84 'a|lib/foo.html': '''
62 <link rel="import" href="bar.html"> 85 <link rel="import" href="bar.html">
63 <div>a|lib/foo.html</div>''', 86 <div>a|lib/foo.html</div>''',
64 'a|lib/bar.html': ''' 87 'a|lib/bar.html': '''
65 <link rel="import" href="foo.html"> 88 <link rel="import" href="foo.html">
66 <div>a|lib/bar.html</div>''', 89 <div>a|lib/bar.html</div>''',
67 }, { 90 }, {
68 'a|web/result.txt': ''' 91 'a|web/result.txt': '''
69 (a|lib/bar.html, a|lib/foo.html, a|web/index.html) 92 (a|lib/bar.html, a|lib/foo.html, a|web/index.html)
70 ''', 93 ''',
71 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 94 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
72 95
73 testPhases('deep imports', [[new _TestTransformer('web/index.html')]], { 96 testPhases('deep imports', phases, {
74 'a|web/index.html': ''' 97 'a|web/index.html': '''
75 <link rel="import" href="packages/a/foo.html"> 98 <link rel="import" href="packages/a/foo.html">
76 <div>a|web/index.html</div> 99 <div>a|web/index.html</div>
77 ''', 100 ''',
78 'a|lib/foo.html': ''' 101 'a|lib/foo.html': '''
79 <link rel="import" href="one/bar.html"> 102 <link rel="import" href="one/bar.html">
80 <div>a|lib/foo.html</div>''', 103 <div>a|lib/foo.html</div>''',
81 'a|lib/one/bar.html': ''' 104 'a|lib/one/bar.html': '''
82 <link rel="import" href="two/baz.html"> 105 <link rel="import" href="two/baz.html">
83 <div>a|lib/one/bar.html</div>''', 106 <div>a|lib/one/bar.html</div>''',
84 'a|lib/one/two/baz.html': ''' 107 'a|lib/one/two/baz.html': '''
85 <link rel="import" href="three/zap.html"> 108 <link rel="import" href="three/zap.html">
86 <div>a|lib/one/two/baz.html</div>''', 109 <div>a|lib/one/two/baz.html</div>''',
87 'a|lib/one/two/three/zap.html': ''' 110 'a|lib/one/two/three/zap.html': '''
88 <div>a|lib/one/two/three/zap.html</div>''', 111 <div>a|lib/one/two/three/zap.html</div>''',
89 }, { 112 }, {
90 'a|web/result.txt': 113 'a|web/result.txt':
91 '(a|lib/one/two/three/zap.html, a|lib/one/two/baz.html, ' 114 '(a|lib/one/two/three/zap.html, a|lib/one/two/baz.html, '
92 'a|lib/one/bar.html, a|lib/foo.html, a|web/index.html)', 115 'a|lib/one/bar.html, a|lib/foo.html, a|web/index.html)',
93 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 116 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace);
94 } 117 }
OLDNEW
« no previous file with comments | « pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698