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

Side by Side Diff: test/dependency_graph_test.dart

Issue 988483006: Add widget to display errors, and report dependency_graph errors correctly (Closed) Base URL: git@github.com:dart-lang/dev_compiler.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
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 4
5 library dev_compiler.test.dependency_graph_test; 5 library dev_compiler.test.dependency_graph_test;
6 6
7 import 'package:unittest/compact_vm_config.dart'; 7 import 'package:unittest/compact_vm_config.dart';
8 import 'package:unittest/unittest.dart'; 8 import 'package:unittest/unittest.dart';
9 9
10 import 'package:dev_compiler/src/checker/dart_sdk.dart' 10 import 'package:dev_compiler/src/checker/dart_sdk.dart'
11 show mockSdkSources, dartSdkDirectory; 11 show mockSdkSources, dartSdkDirectory;
12 import 'package:dev_compiler/src/testing.dart'; 12 import 'package:dev_compiler/src/testing.dart';
13 import 'package:dev_compiler/src/options.dart'; 13 import 'package:dev_compiler/src/options.dart';
14 import 'package:dev_compiler/src/checker/resolver.dart'; 14 import 'package:dev_compiler/src/checker/resolver.dart';
15 import 'package:dev_compiler/src/dependency_graph.dart'; 15 import 'package:dev_compiler/src/dependency_graph.dart';
16 import 'package:dev_compiler/src/report.dart';
16 import 'package:path/path.dart' as path; 17 import 'package:path/path.dart' as path;
17 18
18 main() { 19 main() {
19 groupSep = " > "; 20 groupSep = " > ";
20 useCompactVMConfiguration(); 21 useCompactVMConfiguration();
21 22
22 var options = new CompilerOptions(); 23 var options = new CompilerOptions();
23 var testUriResolver; 24 var testUriResolver;
24 var context; 25 var context;
25 var graph; 26 var graph;
(...skipping 30 matching lines...) Expand all
56 }; 57 };
57 58
58 nodeOf(String filepath) => graph.nodeFromUri(new Uri.file(filepath)); 59 nodeOf(String filepath) => graph.nodeFromUri(new Uri.file(filepath));
59 60
60 setUp(() { 61 setUp(() {
61 /// We completely reset the TestUriResolver to avoid interference between 62 /// We completely reset the TestUriResolver to avoid interference between
62 /// tests (since some tests modify the state of the files). 63 /// tests (since some tests modify the state of the files).
63 testUriResolver = new TestUriResolver(testFiles); 64 testUriResolver = new TestUriResolver(testFiles);
64 context = new TypeResolver.fromMock(mockSdkSources, options, 65 context = new TypeResolver.fromMock(mockSdkSources, options,
65 otherResolvers: [testUriResolver]).context; 66 otherResolvers: [testUriResolver]).context;
66 graph = new SourceGraph(context, options); 67 graph = new SourceGraph(context, new LogReporter());
67 }); 68 });
68 69
69 group('HTML deps', () { 70 group('HTML deps', () {
70 test('initial deps', () { 71 test('initial deps', () {
71 var i1 = nodeOf('/index1.html'); 72 var i1 = nodeOf('/index1.html');
72 var i2 = nodeOf('/index2.html'); 73 var i2 = nodeOf('/index2.html');
73 expect(i1.scripts.length, 0); 74 expect(i1.scripts.length, 0);
74 expect(i2.scripts.length, 0); 75 expect(i2.scripts.length, 0);
75 i1.update(graph); 76 i1.update(graph);
76 i2.update(graph); 77 i2.update(graph);
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 }); 548 });
548 }); 549 });
549 550
550 group('refresh structure and marks', () { 551 group('refresh structure and marks', () {
551 test('initial marks', () { 552 test('initial marks', () {
552 var node = nodeOf('/index3.html'); 553 var node = nodeOf('/index3.html');
553 expectGraph(node, ''' 554 expectGraph(node, '''
554 index3.html 555 index3.html
555 |-- dart_runtime.js 556 |-- dart_runtime.js
556 |-- harmony_feature_check.js 557 |-- harmony_feature_check.js
558 |-- messages_widget.js
559 |-- messages.css
557 '''); 560 ''');
558 refreshStructureAndMarks(node, graph); 561 refreshStructureAndMarks(node, graph);
559 expectGraph(node, ''' 562 expectGraph(node, '''
560 index3.html [needs-rebuild] [structure-changed] 563 index3.html [needs-rebuild] [structure-changed]
561 |-- a2.dart [needs-rebuild] [structure-changed] 564 |-- a2.dart [needs-rebuild] [structure-changed]
562 | |-- a3.dart [needs-rebuild] 565 | |-- a3.dart [needs-rebuild]
563 | |-- a4.dart [needs-rebuild] [structure-changed] 566 | |-- a4.dart [needs-rebuild] [structure-changed]
564 | | |-- a10.dart [needs-rebuild] 567 | | |-- a10.dart [needs-rebuild]
565 | |-- a5.dart [needs-rebuild] 568 | |-- a5.dart [needs-rebuild]
566 | |-- a6.dart (part) [needs-rebuild] 569 | |-- a6.dart (part) [needs-rebuild]
567 |-- dart_runtime.js [needs-rebuild] 570 |-- dart_runtime.js [needs-rebuild]
568 |-- harmony_feature_check.js [needs-rebuild] 571 |-- harmony_feature_check.js [needs-rebuild]
572 |-- messages_widget.js [needs-rebuild]
573 |-- messages.css [needs-rebuild]
569 '''); 574 ''');
570 }); 575 });
571 576
572 test('cleared marks stay clear', () { 577 test('cleared marks stay clear', () {
573 var node = nodeOf('/index3.html'); 578 var node = nodeOf('/index3.html');
574 refreshStructureAndMarks(node, graph); 579 refreshStructureAndMarks(node, graph);
575 expectGraph(node, ''' 580 expectGraph(node, '''
576 index3.html [needs-rebuild] [structure-changed] 581 index3.html [needs-rebuild] [structure-changed]
577 |-- a2.dart [needs-rebuild] [structure-changed] 582 |-- a2.dart [needs-rebuild] [structure-changed]
578 | |-- a3.dart [needs-rebuild] 583 | |-- a3.dart [needs-rebuild]
579 | |-- a4.dart [needs-rebuild] [structure-changed] 584 | |-- a4.dart [needs-rebuild] [structure-changed]
580 | | |-- a10.dart [needs-rebuild] 585 | | |-- a10.dart [needs-rebuild]
581 | |-- a5.dart [needs-rebuild] 586 | |-- a5.dart [needs-rebuild]
582 | |-- a6.dart (part) [needs-rebuild] 587 | |-- a6.dart (part) [needs-rebuild]
583 |-- dart_runtime.js [needs-rebuild] 588 |-- dart_runtime.js [needs-rebuild]
584 |-- harmony_feature_check.js [needs-rebuild] 589 |-- harmony_feature_check.js [needs-rebuild]
590 |-- messages_widget.js [needs-rebuild]
591 |-- messages.css [needs-rebuild]
585 '''); 592 ''');
586 clearMarks(node); 593 clearMarks(node);
587 expectGraph(node, ''' 594 expectGraph(node, '''
588 index3.html 595 index3.html
589 |-- a2.dart 596 |-- a2.dart
590 | |-- a3.dart 597 | |-- a3.dart
591 | |-- a4.dart 598 | |-- a4.dart
592 | | |-- a10.dart 599 | | |-- a10.dart
593 | |-- a5.dart 600 | |-- a5.dart
594 | |-- a6.dart (part) 601 | |-- a6.dart (part)
595 |-- dart_runtime.js 602 |-- dart_runtime.js
596 |-- harmony_feature_check.js 603 |-- harmony_feature_check.js
604 |-- messages_widget.js
605 |-- messages.css
597 '''); 606 ''');
598 607
599 refreshStructureAndMarks(node, graph); 608 refreshStructureAndMarks(node, graph);
600 expectGraph(node, ''' 609 expectGraph(node, '''
601 index3.html 610 index3.html
602 |-- a2.dart 611 |-- a2.dart
603 | |-- a3.dart 612 | |-- a3.dart
604 | |-- a4.dart 613 | |-- a4.dart
605 | | |-- a10.dart 614 | | |-- a10.dart
606 | |-- a5.dart 615 | |-- a5.dart
607 | |-- a6.dart (part) 616 | |-- a6.dart (part)
608 |-- dart_runtime.js 617 |-- dart_runtime.js
609 |-- harmony_feature_check.js 618 |-- harmony_feature_check.js
619 |-- messages_widget.js
620 |-- messages.css
610 '''); 621 ''');
611 }); 622 });
612 623
613 test('needsRebuild mark updated on local modifications', () { 624 test('needsRebuild mark updated on local modifications', () {
614 var node = nodeOf('/index3.html'); 625 var node = nodeOf('/index3.html');
615 refreshStructureAndMarks(node, graph); 626 refreshStructureAndMarks(node, graph);
616 clearMarks(node); 627 clearMarks(node);
617 var a3 = nodeOf('/a3.dart'); 628 var a3 = nodeOf('/a3.dart');
618 a3.source.contents.modificationTime++; 629 a3.source.contents.modificationTime++;
619 630
620 refreshStructureAndMarks(node, graph); 631 refreshStructureAndMarks(node, graph);
621 expectGraph(node, ''' 632 expectGraph(node, '''
622 index3.html 633 index3.html
623 |-- a2.dart 634 |-- a2.dart
624 | |-- a3.dart [needs-rebuild] 635 | |-- a3.dart [needs-rebuild]
625 | |-- a4.dart 636 | |-- a4.dart
626 | | |-- a10.dart 637 | | |-- a10.dart
627 | |-- a5.dart 638 | |-- a5.dart
628 | |-- a6.dart (part) 639 | |-- a6.dart (part)
629 |-- dart_runtime.js 640 |-- dart_runtime.js
630 |-- harmony_feature_check.js 641 |-- harmony_feature_check.js
642 |-- messages_widget.js
643 |-- messages.css
631 '''); 644 ''');
632 }); 645 });
633 646
634 test('structuredChanged mark updated on structure modifications', () { 647 test('structuredChanged mark updated on structure modifications', () {
635 var node = nodeOf('/index3.html'); 648 var node = nodeOf('/index3.html');
636 refreshStructureAndMarks(node, graph); 649 refreshStructureAndMarks(node, graph);
637 clearMarks(node); 650 clearMarks(node);
638 var a5 = nodeOf('/a5.dart'); 651 var a5 = nodeOf('/a5.dart');
639 a5.source.contents.modificationTime++; 652 a5.source.contents.modificationTime++;
640 a5.source.contents.data = 'import "a8.dart";'; 653 a5.source.contents.data = 'import "a8.dart";';
641 654
642 refreshStructureAndMarks(node, graph); 655 refreshStructureAndMarks(node, graph);
643 expectGraph(node, ''' 656 expectGraph(node, '''
644 index3.html 657 index3.html
645 |-- a2.dart 658 |-- a2.dart
646 | |-- a3.dart 659 | |-- a3.dart
647 | |-- a4.dart 660 | |-- a4.dart
648 | | |-- a10.dart 661 | | |-- a10.dart
649 | |-- a5.dart [needs-rebuild] [structure-changed] 662 | |-- a5.dart [needs-rebuild] [structure-changed]
650 | | |-- a8.dart [needs-rebuild] [structure-changed] 663 | | |-- a8.dart [needs-rebuild] [structure-changed]
651 | | | |-- a8.dart... 664 | | | |-- a8.dart...
652 | |-- a6.dart (part) 665 | |-- a6.dart (part)
653 |-- dart_runtime.js 666 |-- dart_runtime.js
654 |-- harmony_feature_check.js 667 |-- harmony_feature_check.js
668 |-- messages_widget.js
669 |-- messages.css
655 '''); 670 ''');
656 }); 671 });
657 }); 672 });
658 673
659 group('rebuild', () { 674 group('rebuild', () {
660 var results; 675 var results;
661 void addName(SourceNode n) => results.add(nameFor(n)); 676 void addName(SourceNode n) => results.add(nameFor(n));
662 677
663 bool buildNoTransitiveChange(SourceNode n) { 678 bool buildNoTransitiveChange(SourceNode n) {
664 addName(n); 679 addName(n);
(...skipping 14 matching lines...) Expand all
679 rebuild(node, graph, buildNoTransitiveChange); 694 rebuild(node, graph, buildNoTransitiveChange);
680 // Note: a6.dart is not included because it built as part of a2.dart 695 // Note: a6.dart is not included because it built as part of a2.dart
681 expect(results, [ 696 expect(results, [
682 'a3.dart', 697 'a3.dart',
683 'a10.dart', 698 'a10.dart',
684 'a4.dart', 699 'a4.dart',
685 'a5.dart', 700 'a5.dart',
686 'a2.dart', 701 'a2.dart',
687 'dart_runtime.js', 702 'dart_runtime.js',
688 'harmony_feature_check.js', 703 'harmony_feature_check.js',
704 'messages_widget.js',
705 'messages.css',
689 'index3.html', 706 'index3.html',
690 ]); 707 ]);
691 708
692 // Marks are removed automatically by rebuild 709 // Marks are removed automatically by rebuild
693 expectGraph(node, ''' 710 expectGraph(node, '''
694 index3.html 711 index3.html
695 |-- a2.dart 712 |-- a2.dart
696 | |-- a3.dart 713 | |-- a3.dart
697 | |-- a4.dart 714 | |-- a4.dart
698 | | |-- a10.dart 715 | | |-- a10.dart
699 | |-- a5.dart 716 | |-- a5.dart
700 | |-- a6.dart (part) 717 | |-- a6.dart (part)
701 |-- dart_runtime.js 718 |-- dart_runtime.js
702 |-- harmony_feature_check.js 719 |-- harmony_feature_check.js
720 |-- messages_widget.js
721 |-- messages.css
703 '''); 722 ''');
704 }); 723 });
705 724
706 test('nothing to do after build', () { 725 test('nothing to do after build', () {
707 var node = nodeOf('/index3.html'); 726 var node = nodeOf('/index3.html');
708 rebuild(node, graph, buildNoTransitiveChange); 727 rebuild(node, graph, buildNoTransitiveChange);
709 728
710 results = []; 729 results = [];
711 rebuild(node, graph, buildNoTransitiveChange); 730 rebuild(node, graph, buildNoTransitiveChange);
712 expect(results, []); 731 expect(results, []);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 expectGraph(node, ''' 864 expectGraph(node, '''
846 index3.html 865 index3.html
847 |-- a2.dart 866 |-- a2.dart
848 | |-- a3.dart 867 | |-- a3.dart
849 | |-- a4.dart 868 | |-- a4.dart
850 | | |-- a10.dart 869 | | |-- a10.dart
851 | |-- a5.dart 870 | |-- a5.dart
852 | |-- a6.dart (part) 871 | |-- a6.dart (part)
853 |-- dart_runtime.js 872 |-- dart_runtime.js
854 |-- harmony_feature_check.js 873 |-- harmony_feature_check.js
874 |-- messages_widget.js
875 |-- messages.css
855 '''); 876 ''');
856 877
857 // Modify the file first: 878 // Modify the file first:
858 a6.source.contents.modificationTime++; 879 a6.source.contents.modificationTime++;
859 a6.source.contents.data = 'library a6; import "a5.dart";'; 880 a6.source.contents.data = 'library a6; import "a5.dart";';
860 results = []; 881 results = [];
861 rebuild(node, graph, buildNoTransitiveChange); 882 rebuild(node, graph, buildNoTransitiveChange);
862 883
863 // Looks to us like a change in a part, we'll report errors that the 884 // Looks to us like a change in a part, we'll report errors that the
864 // part is not really a part-file. Note that a6.dart is not included 885 // part is not really a part-file. Note that a6.dart is not included
865 // below, because we don't build it as a library. 886 // below, because we don't build it as a library.
866 expect(results, ['a2.dart']); 887 expect(results, ['a2.dart']);
867 expectGraph(node, ''' 888 expectGraph(node, '''
868 index3.html 889 index3.html
869 |-- a2.dart 890 |-- a2.dart
870 | |-- a3.dart 891 | |-- a3.dart
871 | |-- a4.dart 892 | |-- a4.dart
872 | | |-- a10.dart 893 | | |-- a10.dart
873 | |-- a5.dart 894 | |-- a5.dart
874 | |-- a6.dart (part) 895 | |-- a6.dart (part)
875 |-- dart_runtime.js 896 |-- dart_runtime.js
876 |-- harmony_feature_check.js 897 |-- harmony_feature_check.js
898 |-- messages_widget.js
899 |-- messages.css
877 '''); 900 ''');
878 901
879 a2.source.contents.modificationTime++; 902 a2.source.contents.modificationTime++;
880 a2.source.contents.data = ''' 903 a2.source.contents.data = '''
881 library a2; 904 library a2;
882 import 'a3.dart'; 905 import 'a3.dart';
883 import 'a4.dart'; 906 import 'a4.dart';
884 import 'a6.dart'; // properly import it 907 import 'a6.dart'; // properly import it
885 export 'a5.dart'; 908 export 'a5.dart';
886 '''; 909 ''';
(...skipping 12 matching lines...) Expand all
899 index3.html 922 index3.html
900 |-- a2.dart 923 |-- a2.dart
901 | |-- a3.dart 924 | |-- a3.dart
902 | |-- a4.dart 925 | |-- a4.dart
903 | | |-- a10.dart 926 | | |-- a10.dart
904 | |-- a6.dart 927 | |-- a6.dart
905 | | |-- a5.dart 928 | | |-- a5.dart
906 | |-- a5.dart... 929 | |-- a5.dart...
907 |-- dart_runtime.js 930 |-- dart_runtime.js
908 |-- harmony_feature_check.js 931 |-- harmony_feature_check.js
932 |-- messages_widget.js
933 |-- messages.css
909 '''); 934 ''');
910 }); 935 });
911 936
912 test('convert part to a library after updating the import', () { 937 test('convert part to a library after updating the import', () {
913 var node = nodeOf('/index3.html'); 938 var node = nodeOf('/index3.html');
914 var a2 = nodeOf('/a2.dart'); 939 var a2 = nodeOf('/a2.dart');
915 var a6 = nodeOf('/a6.dart'); 940 var a6 = nodeOf('/a6.dart');
916 rebuild(node, graph, buildNoTransitiveChange); 941 rebuild(node, graph, buildNoTransitiveChange);
917 942
918 expectGraph(node, ''' 943 expectGraph(node, '''
919 index3.html 944 index3.html
920 |-- a2.dart 945 |-- a2.dart
921 | |-- a3.dart 946 | |-- a3.dart
922 | |-- a4.dart 947 | |-- a4.dart
923 | | |-- a10.dart 948 | | |-- a10.dart
924 | |-- a5.dart 949 | |-- a5.dart
925 | |-- a6.dart (part) 950 | |-- a6.dart (part)
926 |-- dart_runtime.js 951 |-- dart_runtime.js
927 |-- harmony_feature_check.js 952 |-- harmony_feature_check.js
953 |-- messages_widget.js
954 |-- messages.css
928 '''); 955 ''');
929 956
930 a2.source.contents.modificationTime++; 957 a2.source.contents.modificationTime++;
931 a2.source.contents.data = ''' 958 a2.source.contents.data = '''
932 library a2; 959 library a2;
933 import 'a3.dart'; 960 import 'a3.dart';
934 import 'a4.dart'; 961 import 'a4.dart';
935 import 'a6.dart'; // properly import it 962 import 'a6.dart'; // properly import it
936 export 'a5.dart'; 963 export 'a5.dart';
937 '''; 964 ''';
938 results = []; 965 results = [];
939 rebuild(node, graph, buildNoTransitiveChange); 966 rebuild(node, graph, buildNoTransitiveChange);
940 expect(results, ['a6.dart', 'a2.dart', 'index3.html']); 967 expect(results, ['a6.dart', 'a2.dart', 'index3.html']);
941 expectGraph(node, ''' 968 expectGraph(node, '''
942 index3.html 969 index3.html
943 |-- a2.dart 970 |-- a2.dart
944 | |-- a3.dart 971 | |-- a3.dart
945 | |-- a4.dart 972 | |-- a4.dart
946 | | |-- a10.dart 973 | | |-- a10.dart
947 | |-- a6.dart 974 | |-- a6.dart
948 | |-- a5.dart 975 | |-- a5.dart
949 |-- dart_runtime.js 976 |-- dart_runtime.js
950 |-- harmony_feature_check.js 977 |-- harmony_feature_check.js
978 |-- messages_widget.js
979 |-- messages.css
951 '''); 980 ''');
952 981
953 a6.source.contents.modificationTime++; 982 a6.source.contents.modificationTime++;
954 a6.source.contents.data = 'library a6; import "a5.dart";'; 983 a6.source.contents.data = 'library a6; import "a5.dart";';
955 results = []; 984 results = [];
956 rebuild(node, graph, buildNoTransitiveChange); 985 rebuild(node, graph, buildNoTransitiveChange);
957 expect(results, ['a6.dart', 'index3.html']); 986 expect(results, ['a6.dart', 'index3.html']);
958 expectGraph(node, ''' 987 expectGraph(node, '''
959 index3.html 988 index3.html
960 |-- a2.dart 989 |-- a2.dart
961 | |-- a3.dart 990 | |-- a3.dart
962 | |-- a4.dart 991 | |-- a4.dart
963 | | |-- a10.dart 992 | | |-- a10.dart
964 | |-- a6.dart 993 | |-- a6.dart
965 | | |-- a5.dart 994 | | |-- a5.dart
966 | |-- a5.dart... 995 | |-- a5.dart...
967 |-- dart_runtime.js 996 |-- dart_runtime.js
968 |-- harmony_feature_check.js 997 |-- harmony_feature_check.js
998 |-- messages_widget.js
999 |-- messages.css
969 '''); 1000 ''');
970 }); 1001 });
971 1002
972 test('disconnect part making it a library', () { 1003 test('disconnect part making it a library', () {
973 var node = nodeOf('/index3.html'); 1004 var node = nodeOf('/index3.html');
974 var a2 = nodeOf('/a2.dart'); 1005 var a2 = nodeOf('/a2.dart');
975 var a6 = nodeOf('/a6.dart'); 1006 var a6 = nodeOf('/a6.dart');
976 rebuild(node, graph, buildNoTransitiveChange); 1007 rebuild(node, graph, buildNoTransitiveChange);
977 1008
978 expectGraph(node, ''' 1009 expectGraph(node, '''
979 index3.html 1010 index3.html
980 |-- a2.dart 1011 |-- a2.dart
981 | |-- a3.dart 1012 | |-- a3.dart
982 | |-- a4.dart 1013 | |-- a4.dart
983 | | |-- a10.dart 1014 | | |-- a10.dart
984 | |-- a5.dart 1015 | |-- a5.dart
985 | |-- a6.dart (part) 1016 | |-- a6.dart (part)
986 |-- dart_runtime.js 1017 |-- dart_runtime.js
987 |-- harmony_feature_check.js 1018 |-- harmony_feature_check.js
1019 |-- messages_widget.js
1020 |-- messages.css
988 '''); 1021 ''');
989 1022
990 a2.source.contents.modificationTime++; 1023 a2.source.contents.modificationTime++;
991 a2.source.contents.data = ''' 1024 a2.source.contents.data = '''
992 library a2; 1025 library a2;
993 import 'a3.dart'; 1026 import 'a3.dart';
994 import 'a4.dart'; 1027 import 'a4.dart';
995 export 'a5.dart'; 1028 export 'a5.dart';
996 '''; 1029 ''';
997 a6.source.contents.modificationTime++; 1030 a6.source.contents.modificationTime++;
998 a6.source.contents.data = 'library a6; import "a5.dart";'; 1031 a6.source.contents.data = 'library a6; import "a5.dart";';
999 results = []; 1032 results = [];
1000 rebuild(node, graph, buildNoTransitiveChange); 1033 rebuild(node, graph, buildNoTransitiveChange);
1001 // a6 is not here, it's not reachable so we don't build it. 1034 // a6 is not here, it's not reachable so we don't build it.
1002 expect(results, ['a2.dart', 'index3.html']); 1035 expect(results, ['a2.dart', 'index3.html']);
1003 expectGraph(node, ''' 1036 expectGraph(node, '''
1004 index3.html 1037 index3.html
1005 |-- a2.dart 1038 |-- a2.dart
1006 | |-- a3.dart 1039 | |-- a3.dart
1007 | |-- a4.dart 1040 | |-- a4.dart
1008 | | |-- a10.dart 1041 | | |-- a10.dart
1009 | |-- a5.dart 1042 | |-- a5.dart
1010 |-- dart_runtime.js 1043 |-- dart_runtime.js
1011 |-- harmony_feature_check.js 1044 |-- harmony_feature_check.js
1045 |-- messages_widget.js
1046 |-- messages.css
1012 '''); 1047 ''');
1013 }); 1048 });
1014 1049
1015 test('convert a library to a part', () { 1050 test('convert a library to a part', () {
1016 var node = nodeOf('/index3.html'); 1051 var node = nodeOf('/index3.html');
1017 var a2 = nodeOf('/a2.dart'); 1052 var a2 = nodeOf('/a2.dart');
1018 var a5 = nodeOf('/a5.dart'); 1053 var a5 = nodeOf('/a5.dart');
1019 rebuild(node, graph, buildNoTransitiveChange); 1054 rebuild(node, graph, buildNoTransitiveChange);
1020 1055
1021 expectGraph(node, ''' 1056 expectGraph(node, '''
1022 index3.html 1057 index3.html
1023 |-- a2.dart 1058 |-- a2.dart
1024 | |-- a3.dart 1059 | |-- a3.dart
1025 | |-- a4.dart 1060 | |-- a4.dart
1026 | | |-- a10.dart 1061 | | |-- a10.dart
1027 | |-- a5.dart 1062 | |-- a5.dart
1028 | |-- a6.dart (part) 1063 | |-- a6.dart (part)
1029 |-- dart_runtime.js 1064 |-- dart_runtime.js
1030 |-- harmony_feature_check.js 1065 |-- harmony_feature_check.js
1066 |-- messages_widget.js
1067 |-- messages.css
1031 '''); 1068 ''');
1032 1069
1033 a2.source.contents.modificationTime++; 1070 a2.source.contents.modificationTime++;
1034 a2.source.contents.data = ''' 1071 a2.source.contents.data = '''
1035 library a2; 1072 library a2;
1036 import 'a3.dart'; 1073 import 'a3.dart';
1037 import 'a4.dart'; 1074 import 'a4.dart';
1038 part 'a5.dart'; // make it a part 1075 part 'a5.dart'; // make it a part
1039 part 'a6.dart'; 1076 part 'a6.dart';
1040 '''; 1077 ''';
1041 results = []; 1078 results = [];
1042 rebuild(node, graph, buildNoTransitiveChange); 1079 rebuild(node, graph, buildNoTransitiveChange);
1043 expect(results, ['a2.dart', 'index3.html']); 1080 expect(results, ['a2.dart', 'index3.html']);
1044 expectGraph(node, ''' 1081 expectGraph(node, '''
1045 index3.html 1082 index3.html
1046 |-- a2.dart 1083 |-- a2.dart
1047 | |-- a3.dart 1084 | |-- a3.dart
1048 | |-- a4.dart 1085 | |-- a4.dart
1049 | | |-- a10.dart 1086 | | |-- a10.dart
1050 | |-- a5.dart (part) 1087 | |-- a5.dart (part)
1051 | |-- a6.dart (part) 1088 | |-- a6.dart (part)
1052 |-- dart_runtime.js 1089 |-- dart_runtime.js
1053 |-- harmony_feature_check.js 1090 |-- harmony_feature_check.js
1091 |-- messages_widget.js
1092 |-- messages.css
1054 '''); 1093 ''');
1055 1094
1056 a5.source.contents.modificationTime++; 1095 a5.source.contents.modificationTime++;
1057 a5.source.contents.data = 'part of a2;'; 1096 a5.source.contents.data = 'part of a2;';
1058 results = []; 1097 results = [];
1059 rebuild(node, graph, buildNoTransitiveChange); 1098 rebuild(node, graph, buildNoTransitiveChange);
1060 expect(results, ['a2.dart']); 1099 expect(results, ['a2.dart']);
1061 expectGraph(node, ''' 1100 expectGraph(node, '''
1062 index3.html 1101 index3.html
1063 |-- a2.dart 1102 |-- a2.dart
1064 | |-- a3.dart 1103 | |-- a3.dart
1065 | |-- a4.dart 1104 | |-- a4.dart
1066 | | |-- a10.dart 1105 | | |-- a10.dart
1067 | |-- a5.dart (part) 1106 | |-- a5.dart (part)
1068 | |-- a6.dart (part) 1107 | |-- a6.dart (part)
1069 |-- dart_runtime.js 1108 |-- dart_runtime.js
1070 |-- harmony_feature_check.js 1109 |-- harmony_feature_check.js
1110 |-- messages_widget.js
1111 |-- messages.css
1071 '''); 1112 ''');
1072 }); 1113 });
1073 }); 1114 });
1074 }); 1115 });
1075 } 1116 }
1076 1117
1077 expectGraph(SourceNode node, String expectation) { 1118 expectGraph(SourceNode node, String expectation) {
1078 expect(printReachable(node), equalsIgnoringWhitespace(expectation)); 1119 expect(printReachable(node), equalsIgnoringWhitespace(expectation));
1079 } 1120 }
1080 1121
(...skipping 30 matching lines...) Expand all
1111 ..write(e.structureChanged ? '[structure-changed] ' : ' ') 1152 ..write(e.structureChanged ? '[structure-changed] ' : ' ')
1112 ..write('\n'); 1153 ..write('\n');
1113 }); 1154 });
1114 } 1155 }
1115 } 1156 }
1116 helper(node); 1157 helper(node);
1117 return sb.toString(); 1158 return sb.toString();
1118 } 1159 }
1119 1160
1120 bool _same(Set a, Set b) => a.length == b.length && a.containsAll(b); 1161 bool _same(Set a, Set b) => a.length == b.length && a.containsAll(b);
OLDNEW
« lib/src/summary.dart ('K') | « lib/src/testing.dart ('k') | test/report_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698