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

Side by Side Diff: test/emitter_test.dart

Issue 12474002: Support for parsing all CSS and producing one CSS file (Closed) Base URL: https://github.com/dart-lang/web-ui.git@master
Patch Set: bumped version Created 7 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
« pubspec.yaml ('K') | « test/data/input/root.css ('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) 2012, the Dart project authors. Please see the AUTHORS file 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 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 4
5 /** 5 /**
6 * These are not quite unit tests, since we build on top of the analyzer and the 6 * These are not quite unit tests, since we build on top of the analyzer and the
7 * html5parser to build the input for each test. 7 * html5parser to build the input for each test.
8 */ 8 */
9 library emitter_test; 9 library emitter_test;
10 10
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 '<script src="/a.js" type="text/javascript"></script>' 325 '<script src="/a.js" type="text/javascript"></script>'
326 '<link href="http://example.com/a.css" rel="stylesheet">' 326 '<link href="http://example.com/a.css" rel="stylesheet">'
327 '<link href="//example.com/a.css" rel="stylesheet">' 327 '<link href="//example.com/a.css" rel="stylesheet">'
328 '<link href="/a.css" rel="stylesheet">' 328 '<link href="/a.css" rel="stylesheet">'
329 '</head><body></body></html>'; 329 '</head><body></body></html>';
330 var doc = parseDocument(html); 330 var doc = parseDocument(html);
331 var fileInfo = analyzeNodeForTesting(doc, new Messages.silent()); 331 var fileInfo = analyzeNodeForTesting(doc, new Messages.silent());
332 fileInfo.inlinedCode = new DartCodeInfo('main', null, [], '', null); 332 fileInfo.inlinedCode = new DartCodeInfo('main', null, [], '', null);
333 var pathInfo = _newPathInfo('a', 'b', true); 333 var pathInfo = _newPathInfo('a', 'b', true);
334 334
335 var emitter = new MainPageEmitter(fileInfo); 335 var emitter = new MainPageEmitter(fileInfo, false);
336 emitter.run(doc, pathInfo, null, true); 336 emitter.run(doc, pathInfo, null, true);
337 expect(doc.outerHtml, equals(html)); 337 expect(doc.outerHtml, equals(html));
338 }); 338 });
339 339
340 group('transform css urls', () { 340 group('transform css urls', () {
341 341
342 var html = '<html><head>' 342 var html = '<html><head>'
343 '<link href="a.css" rel="stylesheet">' 343 '<link href="a.css" rel="stylesheet">'
344 '</head><body></body></html>'; 344 '</head><body></body></html>';
345 345
346 test('html at the top level', () { 346 test('html at the top level', () {
347 var doc = parseDocument(html); 347 var doc = parseDocument(html);
348 var fileInfo = analyzeNodeForTesting(doc, new Messages.silent(), 348 var fileInfo = analyzeNodeForTesting(doc, new Messages.silent(),
349 filepath: 'a.html'); 349 filepath: 'a.html');
350 fileInfo.inlinedCode = new DartCodeInfo('main', null, [], '', null); 350 fileInfo.inlinedCode = new DartCodeInfo('main', null, [], '', null);
351 // Issue #207 happened because we used to mistakenly take the path of 351 // Issue #207 happened because we used to mistakenly take the path of
352 // the external file when transforming the urls in the html file. 352 // the external file when transforming the urls in the html file.
353 fileInfo.externalFile = new Path('dir/a.dart'); 353 fileInfo.externalFile = new Path('dir/a.dart');
354 var pathInfo = _newPathInfo('', 'out', true); 354 var pathInfo = _newPathInfo('', 'out', true);
355 var emitter = new MainPageEmitter(fileInfo); 355 var emitter = new MainPageEmitter(fileInfo, false);
356 emitter.run(doc, pathInfo, null, true); 356 emitter.run(doc, pathInfo, null, true);
357 expect(doc.outerHtml, html.replaceAll('a.css', '../a.css')); 357 expect(doc.outerHtml, html.replaceAll('a.css', '../a.css'));
358 }); 358 });
359 359
360 test('file within dir -- base dir match input file dir', () { 360 test('file within dir -- base dir match input file dir', () {
361 var doc = parseDocument(html); 361 var doc = parseDocument(html);
362 var fileInfo = analyzeNodeForTesting(doc, new Messages.silent(), 362 var fileInfo = analyzeNodeForTesting(doc, new Messages.silent(),
363 filepath: 'dir/a.html'); 363 filepath: 'dir/a.html');
364 fileInfo.inlinedCode = new DartCodeInfo('main', null, [], '', null); 364 fileInfo.inlinedCode = new DartCodeInfo('main', null, [], '', null);
365 // Issue #207 happened because we used to mistakenly take the path of 365 // Issue #207 happened because we used to mistakenly take the path of
366 // the external file when transforming the urls in the html file. 366 // the external file when transforming the urls in the html file.
367 fileInfo.externalFile = new Path('dir/a.dart'); 367 fileInfo.externalFile = new Path('dir/a.dart');
368 var pathInfo = _newPathInfo('dir/', 'out', true); 368 var pathInfo = _newPathInfo('dir/', 'out', true);
369 var emitter = new MainPageEmitter(fileInfo); 369 var emitter = new MainPageEmitter(fileInfo, false);
370 emitter.run(doc, pathInfo, null, true); 370 emitter.run(doc, pathInfo, null, true);
371 expect(doc.outerHtml, html.replaceAll('a.css', '../dir/a.css')); 371 expect(doc.outerHtml, html.replaceAll('a.css', '../dir/a.css'));
372 }); 372 });
373 373
374 test('file within dir, base dir at top-level', () { 374 test('file within dir, base dir at top-level', () {
375 var doc = parseDocument(html); 375 var doc = parseDocument(html);
376 var fileInfo = analyzeNodeForTesting(doc, new Messages.silent(), 376 var fileInfo = analyzeNodeForTesting(doc, new Messages.silent(),
377 filepath: 'dir/a.html'); 377 filepath: 'dir/a.html');
378 fileInfo.inlinedCode = new DartCodeInfo('main', null, [], '', null); 378 fileInfo.inlinedCode = new DartCodeInfo('main', null, [], '', null);
379 // Issue #207 happened because we used to mistakenly take the path of 379 // Issue #207 happened because we used to mistakenly take the path of
380 // the external file when transforming the urls in the html file. 380 // the external file when transforming the urls in the html file.
381 fileInfo.externalFile = new Path('dir/a.dart'); 381 fileInfo.externalFile = new Path('dir/a.dart');
382 var pathInfo = _newPathInfo('', 'out', true); 382 var pathInfo = _newPathInfo('', 'out', true);
383 var emitter = new MainPageEmitter(fileInfo); 383 var emitter = new MainPageEmitter(fileInfo, false);
384 emitter.run(doc, pathInfo, null, true); 384 emitter.run(doc, pathInfo, null, true);
385 expect(doc.outerHtml, html.replaceAll('a.css', '../../dir/a.css')); 385 expect(doc.outerHtml, html.replaceAll('a.css', '../../dir/a.css'));
386 }); 386 });
387 387
388 test('no changes when feature is disabled', () { 388 test('no changes when feature is disabled', () {
389 var doc = parseDocument(html); 389 var doc = parseDocument(html);
390 var fileInfo = analyzeNodeForTesting(doc, new Messages.silent(), 390 var fileInfo = analyzeNodeForTesting(doc, new Messages.silent(),
391 filepath: 'a.html'); 391 filepath: 'a.html');
392 fileInfo.inlinedCode = new DartCodeInfo('main', null, [], '', null); 392 fileInfo.inlinedCode = new DartCodeInfo('main', null, [], '', null);
393 fileInfo.externalFile = new Path('dir/a.dart'); 393 fileInfo.externalFile = new Path('dir/a.dart');
394 var pathInfo = _newPathInfo('', 'out', true); 394 var pathInfo = _newPathInfo('', 'out', true);
395 var emitter = new MainPageEmitter(fileInfo); 395 var emitter = new MainPageEmitter(fileInfo, false);
396 emitter.run(doc, pathInfo, null, false); 396 emitter.run(doc, pathInfo, null, false);
397 expect(doc.outerHtml, html); 397 expect(doc.outerHtml, html);
398 }); 398 });
399 }); 399 });
400 }); 400 });
401 } 401 }
402 402
403 _init(Element elem, {int child}) { 403 _init(Element elem, {int child}) {
404 var info = analyzeElement(elem, new Messages.silent()); 404 var info = analyzeElement(elem, new Messages.silent());
405 var printer = new CodePrinter(0); 405 var printer = new CodePrinter(0);
(...skipping 26 matching lines...) Expand all
432 if (child != null) { 432 if (child != null) {
433 info = info.children[child]; 433 info = info.children[child];
434 } 434 }
435 new RecursiveEmitter(null, context).visit(info); 435 new RecursiveEmitter(null, context).visit(info);
436 return context; 436 return context;
437 } 437 }
438 438
439 _newPathInfo(String baseDir, String outDir, bool forceMangle) => 439 _newPathInfo(String baseDir, String outDir, bool forceMangle) =>
440 new PathInfo(new Path(baseDir), new Path(outDir), new Path('packages'), 440 new PathInfo(new Path(baseDir), new Path(outDir), new Path('packages'),
441 forceMangle); 441 forceMangle);
OLDNEW
« pubspec.yaml ('K') | « test/data/input/root.css ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698