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

Side by Side Diff: pkg/front_end/test/incremental_kernel_generator_test.dart

Issue 2936313003: Test for the case when the watch function is null. (Closed)
Patch Set: Created 3 years, 6 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 | « no previous file | 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 import 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:front_end/compiler_options.dart'; 7 import 'package:front_end/compiler_options.dart';
8 import 'package:front_end/incremental_kernel_generator.dart'; 8 import 'package:front_end/incremental_kernel_generator.dart';
9 import 'package:front_end/memory_file_system.dart'; 9 import 'package:front_end/memory_file_system.dart';
10 import 'package:front_end/src/incremental/byte_store.dart'; 10 import 'package:front_end/src/incremental/byte_store.dart';
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 { 361 {
362 DeltaProgram delta = await incrementalKernelGenerator.computeDelta(); 362 DeltaProgram delta = await incrementalKernelGenerator.computeDelta();
363 Program program = delta.newProgram; 363 Program program = delta.newProgram;
364 _assertLibraryUris(program, 364 _assertLibraryUris(program,
365 includes: [aUri, bUri, cUri], excludes: [Uri.parse('dart:core')]); 365 includes: [aUri, bUri, cUri], excludes: [Uri.parse('dart:core')]);
366 // Compiled: c.dart (changed), and b.dart (has mixin). 366 // Compiled: c.dart (changed), and b.dart (has mixin).
367 _assertCompiledUris([cUri, bUri]); 367 _assertCompiledUris([cUri, bUri]);
368 } 368 }
369 } 369 }
370 370
371 void _assertCompiledUris(Iterable<Uri> expected) {
372 var compiledCycles = incrementalKernelGenerator.test.compiledCycles;
373 Set<Uri> compiledUris = compiledCycles
374 .map((cycle) => cycle.libraries.map((file) => file.uri))
375 .expand((uris) => uris)
376 .toSet();
377 expect(compiledUris, unorderedEquals(expected));
378 }
379
380 test_compile_typedef() async { 371 test_compile_typedef() async {
381 writeFile('/test/.packages', 'test:lib/'); 372 writeFile('/test/.packages', 'test:lib/');
382 String aPath = '/test/lib/a.dart'; 373 String aPath = '/test/lib/a.dart';
383 String bPath = '/test/lib/b.dart'; 374 String bPath = '/test/lib/b.dart';
384 writeFile(aPath, 'typedef int F<T>(T x);'); 375 writeFile(aPath, 'typedef int F<T>(T x);');
385 Uri bUri = writeFile( 376 Uri bUri = writeFile(
386 bPath, 377 bPath,
387 r''' 378 r'''
388 import 'a.dart'; 379 import 'a.dart';
389 F<String> f; 380 F<String> f;
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 { 806 {
816 await incrementalKernelGenerator.computeDelta(); 807 await incrementalKernelGenerator.computeDelta();
817 // No new used files. 808 // No new used files.
818 expect(usedFiles, isEmpty); 809 expect(usedFiles, isEmpty);
819 // The file b.dart is not used anymore. 810 // The file b.dart is not used anymore.
820 expect(unusedFiles, [bUri]); 811 expect(unusedFiles, [bUri]);
821 unusedFiles.clear(); 812 unusedFiles.clear();
822 } 813 }
823 } 814 }
824 815
816 test_watch_null() async {
817 writeFile('/test/.packages', 'test:lib/');
818 String aPath = '/test/lib/a.dart';
819 String bPath = '/test/lib/b.dart';
820 Uri aUri = writeFile(aPath, "");
821 Uri bUri = writeFile(bPath, "");
822
823 // Set null, as if the watch function is not provided.
824 watchFn = null;
825
826 await getInitialState(bUri);
827
828 // Update b.dart to import a.dart file.
829 writeFile(bPath, "import 'a.dart';");
830 incrementalKernelGenerator.invalidate(bUri);
831 await incrementalKernelGenerator.computeDelta();
832
833 // No exception even though the watcher function is null.
834 }
835
825 /// Write the given [text] of the file with the given [path] into the 836 /// Write the given [text] of the file with the given [path] into the
826 /// virtual filesystem. Return the URI of the file. 837 /// virtual filesystem. Return the URI of the file.
827 Uri writeFile(String path, String text) { 838 Uri writeFile(String path, String text) {
828 Uri uri = Uri.parse('file://$path'); 839 Uri uri = Uri.parse('file://$path');
829 fileSystem.entityForUri(uri).writeAsStringSync(text); 840 fileSystem.entityForUri(uri).writeAsStringSync(text);
830 return uri; 841 return uri;
831 } 842 }
832 843
833 /// Write the given file contents to the virtual filesystem. 844 /// Write the given file contents to the virtual filesystem.
834 void writeFiles(Map<String, String> contents) { 845 void writeFiles(Map<String, String> contents) {
835 contents.forEach(writeFile); 846 contents.forEach(writeFile);
836 } 847 }
837 848
849 void _assertCompiledUris(Iterable<Uri> expected) {
850 var compiledCycles = incrementalKernelGenerator.test.compiledCycles;
851 Set<Uri> compiledUris = compiledCycles
852 .map((cycle) => cycle.libraries.map((file) => file.uri))
853 .expand((uris) => uris)
854 .toSet();
855 expect(compiledUris, unorderedEquals(expected));
856 }
857
838 void _assertLibraryUris(Program program, 858 void _assertLibraryUris(Program program,
839 {List<Uri> includes: const [], List<Uri> excludes: const []}) { 859 {List<Uri> includes: const [], List<Uri> excludes: const []}) {
840 List<Uri> libraryUris = 860 List<Uri> libraryUris =
841 program.libraries.map((library) => library.importUri).toList(); 861 program.libraries.map((library) => library.importUri).toList();
842 for (var shouldInclude in includes) { 862 for (var shouldInclude in includes) {
843 expect(libraryUris, contains(shouldInclude)); 863 expect(libraryUris, contains(shouldInclude));
844 } 864 }
845 for (var shouldExclude in excludes) { 865 for (var shouldExclude in excludes) {
846 expect(libraryUris, isNot(contains(shouldExclude))); 866 expect(libraryUris, isNot(contains(shouldExclude)));
847 } 867 }
848 } 868 }
849 869
850 Library _getLibrary(Program program, Uri uri) { 870 Library _getLibrary(Program program, Uri uri) {
851 for (var library in program.libraries) { 871 for (var library in program.libraries) {
852 if (library.importUri == uri) return library; 872 if (library.importUri == uri) return library;
853 } 873 }
854 throw fail('No library found with URI "$uri"'); 874 throw fail('No library found with URI "$uri"');
855 } 875 }
856 876
857 String _getLibraryText(Library library) { 877 String _getLibraryText(Library library) {
858 StringBuffer buffer = new StringBuffer(); 878 StringBuffer buffer = new StringBuffer();
859 new Printer(buffer, syntheticNames: new NameSystem()) 879 new Printer(buffer, syntheticNames: new NameSystem())
860 .writeLibraryFile(library); 880 .writeLibraryFile(library);
861 return buffer.toString(); 881 return buffer.toString();
862 } 882 }
863 } 883 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698