OLD | NEW |
---|---|
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' |
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
543 expect(node.structureChanged, isFalse); | 543 expect(node.structureChanged, isFalse); |
544 node.update(graph); | 544 node.update(graph); |
545 expect(node.structureChanged, isTrue); | 545 expect(node.structureChanged, isTrue); |
546 }); | 546 }); |
547 }); | 547 }); |
548 }); | 548 }); |
549 | 549 |
550 group('refresh structure and marks', () { | 550 group('refresh structure and marks', () { |
551 test('initial marks', () { | 551 test('initial marks', () { |
552 var node = nodeOf('/index3.html'); | 552 var node = nodeOf('/index3.html'); |
553 expectGraph(node, 'index3.html'); | 553 expectGraph(node, ''' |
554 index3.html | |
555 |-- dart_runtime.js | |
556 |-- harmony_feature_check.js | |
Jennifer Messerly
2015/03/09 16:12:41
not related to this CL, but ... I'm not sure we wa
Siggi Cherem (dart-lang)
2015/03/09 17:31:39
True, I've opened #87 to track
| |
557 '''); | |
554 refreshStructureAndMarks(node, graph); | 558 refreshStructureAndMarks(node, graph); |
555 expectGraph(node, ''' | 559 expectGraph(node, ''' |
556 index3.html [needs-rebuild] [structure-changed] | 560 index3.html [needs-rebuild] [structure-changed] |
557 |-- a2.dart [needs-rebuild] [structure-changed] | 561 |-- a2.dart [needs-rebuild] [structure-changed] |
558 | |-- a3.dart [needs-rebuild] | 562 | |-- a3.dart [needs-rebuild] |
559 | |-- a4.dart [needs-rebuild] [structure-changed] | 563 | |-- a4.dart [needs-rebuild] [structure-changed] |
560 | | |-- a10.dart [needs-rebuild] | 564 | | |-- a10.dart [needs-rebuild] |
561 | |-- a5.dart [needs-rebuild] | 565 | |-- a5.dart [needs-rebuild] |
562 | |-- a6.dart (part) [needs-rebuild] | 566 | |-- a6.dart (part) [needs-rebuild] |
567 |-- dart_runtime.js [needs-rebuild] | |
568 |-- harmony_feature_check.js [needs-rebuild] | |
563 '''); | 569 '''); |
564 }); | 570 }); |
565 | 571 |
566 test('cleared marks stay clear', () { | 572 test('cleared marks stay clear', () { |
567 var node = nodeOf('/index3.html'); | 573 var node = nodeOf('/index3.html'); |
568 refreshStructureAndMarks(node, graph); | 574 refreshStructureAndMarks(node, graph); |
569 expectGraph(node, ''' | 575 expectGraph(node, ''' |
570 index3.html [needs-rebuild] [structure-changed] | 576 index3.html [needs-rebuild] [structure-changed] |
571 |-- a2.dart [needs-rebuild] [structure-changed] | 577 |-- a2.dart [needs-rebuild] [structure-changed] |
572 | |-- a3.dart [needs-rebuild] | 578 | |-- a3.dart [needs-rebuild] |
573 | |-- a4.dart [needs-rebuild] [structure-changed] | 579 | |-- a4.dart [needs-rebuild] [structure-changed] |
574 | | |-- a10.dart [needs-rebuild] | 580 | | |-- a10.dart [needs-rebuild] |
575 | |-- a5.dart [needs-rebuild] | 581 | |-- a5.dart [needs-rebuild] |
576 | |-- a6.dart (part) [needs-rebuild] | 582 | |-- a6.dart (part) [needs-rebuild] |
583 |-- dart_runtime.js [needs-rebuild] | |
584 |-- harmony_feature_check.js [needs-rebuild] | |
577 '''); | 585 '''); |
578 clearMarks(node); | 586 clearMarks(node); |
579 expectGraph(node, ''' | 587 expectGraph(node, ''' |
580 index3.html | 588 index3.html |
581 |-- a2.dart | 589 |-- a2.dart |
582 | |-- a3.dart | 590 | |-- a3.dart |
583 | |-- a4.dart | 591 | |-- a4.dart |
584 | | |-- a10.dart | 592 | | |-- a10.dart |
585 | |-- a5.dart | 593 | |-- a5.dart |
586 | |-- a6.dart (part) | 594 | |-- a6.dart (part) |
595 |-- dart_runtime.js | |
596 |-- harmony_feature_check.js | |
587 '''); | 597 '''); |
588 | 598 |
589 refreshStructureAndMarks(node, graph); | 599 refreshStructureAndMarks(node, graph); |
590 expectGraph(node, ''' | 600 expectGraph(node, ''' |
591 index3.html | 601 index3.html |
592 |-- a2.dart | 602 |-- a2.dart |
593 | |-- a3.dart | 603 | |-- a3.dart |
594 | |-- a4.dart | 604 | |-- a4.dart |
595 | | |-- a10.dart | 605 | | |-- a10.dart |
596 | |-- a5.dart | 606 | |-- a5.dart |
597 | |-- a6.dart (part) | 607 | |-- a6.dart (part) |
608 |-- dart_runtime.js | |
609 |-- harmony_feature_check.js | |
598 '''); | 610 '''); |
599 }); | 611 }); |
600 | 612 |
601 test('needsRebuild mark updated on local modifications', () { | 613 test('needsRebuild mark updated on local modifications', () { |
602 var node = nodeOf('/index3.html'); | 614 var node = nodeOf('/index3.html'); |
603 refreshStructureAndMarks(node, graph); | 615 refreshStructureAndMarks(node, graph); |
604 clearMarks(node); | 616 clearMarks(node); |
605 var a3 = nodeOf('/a3.dart'); | 617 var a3 = nodeOf('/a3.dart'); |
606 a3.source.contents.modificationTime++; | 618 a3.source.contents.modificationTime++; |
607 | 619 |
608 refreshStructureAndMarks(node, graph); | 620 refreshStructureAndMarks(node, graph); |
609 expectGraph(node, ''' | 621 expectGraph(node, ''' |
610 index3.html | 622 index3.html |
611 |-- a2.dart | 623 |-- a2.dart |
612 | |-- a3.dart [needs-rebuild] | 624 | |-- a3.dart [needs-rebuild] |
613 | |-- a4.dart | 625 | |-- a4.dart |
614 | | |-- a10.dart | 626 | | |-- a10.dart |
615 | |-- a5.dart | 627 | |-- a5.dart |
616 | |-- a6.dart (part) | 628 | |-- a6.dart (part) |
629 |-- dart_runtime.js | |
630 |-- harmony_feature_check.js | |
617 '''); | 631 '''); |
618 }); | 632 }); |
619 | 633 |
620 test('structuredChanged mark updated on structure modifications', () { | 634 test('structuredChanged mark updated on structure modifications', () { |
621 var node = nodeOf('/index3.html'); | 635 var node = nodeOf('/index3.html'); |
622 refreshStructureAndMarks(node, graph); | 636 refreshStructureAndMarks(node, graph); |
623 clearMarks(node); | 637 clearMarks(node); |
624 var a5 = nodeOf('/a5.dart'); | 638 var a5 = nodeOf('/a5.dart'); |
625 a5.source.contents.modificationTime++; | 639 a5.source.contents.modificationTime++; |
626 a5.source.contents.data = 'import "a8.dart";'; | 640 a5.source.contents.data = 'import "a8.dart";'; |
627 | 641 |
628 refreshStructureAndMarks(node, graph); | 642 refreshStructureAndMarks(node, graph); |
629 expectGraph(node, ''' | 643 expectGraph(node, ''' |
630 index3.html | 644 index3.html |
631 |-- a2.dart | 645 |-- a2.dart |
632 | |-- a3.dart | 646 | |-- a3.dart |
633 | |-- a4.dart | 647 | |-- a4.dart |
634 | | |-- a10.dart | 648 | | |-- a10.dart |
635 | |-- a5.dart [needs-rebuild] [structure-changed] | 649 | |-- a5.dart [needs-rebuild] [structure-changed] |
636 | | |-- a8.dart [needs-rebuild] [structure-changed] | 650 | | |-- a8.dart [needs-rebuild] [structure-changed] |
637 | | | |-- a8.dart... | 651 | | | |-- a8.dart... |
638 | |-- a6.dart (part) | 652 | |-- a6.dart (part) |
653 |-- dart_runtime.js | |
654 |-- harmony_feature_check.js | |
639 '''); | 655 '''); |
640 }); | 656 }); |
641 }); | 657 }); |
642 | 658 |
643 group('rebuild', () { | 659 group('rebuild', () { |
644 var results; | 660 var results; |
645 void addName(SourceNode n) => results.add(nameFor(n)); | 661 void addName(SourceNode n) => results.add(nameFor(n)); |
646 | 662 |
647 bool buildNoTransitiveChange(SourceNode n) { | 663 bool buildNoTransitiveChange(SourceNode n) { |
648 addName(n); | 664 addName(n); |
(...skipping 12 matching lines...) Expand all Loading... | |
661 test('everything build on first run', () { | 677 test('everything build on first run', () { |
662 var node = nodeOf('/index3.html'); | 678 var node = nodeOf('/index3.html'); |
663 rebuild(node, graph, buildNoTransitiveChange); | 679 rebuild(node, graph, buildNoTransitiveChange); |
664 // Note: a6.dart is not included because it built as part of a2.dart | 680 // Note: a6.dart is not included because it built as part of a2.dart |
665 expect(results, [ | 681 expect(results, [ |
666 'a3.dart', | 682 'a3.dart', |
667 'a10.dart', | 683 'a10.dart', |
668 'a4.dart', | 684 'a4.dart', |
669 'a5.dart', | 685 'a5.dart', |
670 'a2.dart', | 686 'a2.dart', |
671 'index3.html' | 687 'dart_runtime.js', |
688 'harmony_feature_check.js', | |
689 'index3.html', | |
672 ]); | 690 ]); |
673 | 691 |
674 // Marks are removed automatically by rebuild | 692 // Marks are removed automatically by rebuild |
675 expectGraph(node, ''' | 693 expectGraph(node, ''' |
676 index3.html | 694 index3.html |
677 |-- a2.dart | 695 |-- a2.dart |
678 | |-- a3.dart | 696 | |-- a3.dart |
679 | |-- a4.dart | 697 | |-- a4.dart |
680 | | |-- a10.dart | 698 | | |-- a10.dart |
681 | |-- a5.dart | 699 | |-- a5.dart |
682 | |-- a6.dart (part) | 700 | |-- a6.dart (part) |
701 |-- dart_runtime.js | |
702 |-- harmony_feature_check.js | |
683 '''); | 703 '''); |
684 }); | 704 }); |
685 | 705 |
686 test('nothing to do after build', () { | 706 test('nothing to do after build', () { |
687 var node = nodeOf('/index3.html'); | 707 var node = nodeOf('/index3.html'); |
688 rebuild(node, graph, buildNoTransitiveChange); | 708 rebuild(node, graph, buildNoTransitiveChange); |
689 | 709 |
690 results = []; | 710 results = []; |
691 rebuild(node, graph, buildNoTransitiveChange); | 711 rebuild(node, graph, buildNoTransitiveChange); |
692 expect(results, []); | 712 expect(results, []); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
823 rebuild(node, graph, buildNoTransitiveChange); | 843 rebuild(node, graph, buildNoTransitiveChange); |
824 | 844 |
825 expectGraph(node, ''' | 845 expectGraph(node, ''' |
826 index3.html | 846 index3.html |
827 |-- a2.dart | 847 |-- a2.dart |
828 | |-- a3.dart | 848 | |-- a3.dart |
829 | |-- a4.dart | 849 | |-- a4.dart |
830 | | |-- a10.dart | 850 | | |-- a10.dart |
831 | |-- a5.dart | 851 | |-- a5.dart |
832 | |-- a6.dart (part) | 852 | |-- a6.dart (part) |
853 |-- dart_runtime.js | |
854 |-- harmony_feature_check.js | |
833 '''); | 855 '''); |
834 | 856 |
835 // Modify the file first: | 857 // Modify the file first: |
836 a6.source.contents.modificationTime++; | 858 a6.source.contents.modificationTime++; |
837 a6.source.contents.data = 'library a6; import "a5.dart";'; | 859 a6.source.contents.data = 'library a6; import "a5.dart";'; |
838 results = []; | 860 results = []; |
839 rebuild(node, graph, buildNoTransitiveChange); | 861 rebuild(node, graph, buildNoTransitiveChange); |
840 | 862 |
841 // Looks to us like a change in a part, we'll report errors that the | 863 // Looks to us like a change in a part, we'll report errors that the |
842 // part is not really a part-file. Note that a6.dart is not included | 864 // part is not really a part-file. Note that a6.dart is not included |
843 // below, because we don't build it as a library. | 865 // below, because we don't build it as a library. |
844 expect(results, ['a2.dart']); | 866 expect(results, ['a2.dart']); |
845 expectGraph(node, ''' | 867 expectGraph(node, ''' |
846 index3.html | 868 index3.html |
847 |-- a2.dart | 869 |-- a2.dart |
848 | |-- a3.dart | 870 | |-- a3.dart |
849 | |-- a4.dart | 871 | |-- a4.dart |
850 | | |-- a10.dart | 872 | | |-- a10.dart |
851 | |-- a5.dart | 873 | |-- a5.dart |
852 | |-- a6.dart (part) | 874 | |-- a6.dart (part) |
875 |-- dart_runtime.js | |
876 |-- harmony_feature_check.js | |
853 '''); | 877 '''); |
854 | 878 |
855 a2.source.contents.modificationTime++; | 879 a2.source.contents.modificationTime++; |
856 a2.source.contents.data = ''' | 880 a2.source.contents.data = ''' |
857 library a2; | 881 library a2; |
858 import 'a3.dart'; | 882 import 'a3.dart'; |
859 import 'a4.dart'; | 883 import 'a4.dart'; |
860 import 'a6.dart'; // properly import it | 884 import 'a6.dart'; // properly import it |
861 export 'a5.dart'; | 885 export 'a5.dart'; |
862 '''; | 886 '''; |
(...skipping 10 matching lines...) Expand all Loading... | |
873 | 897 |
874 expectGraph(node, ''' | 898 expectGraph(node, ''' |
875 index3.html | 899 index3.html |
876 |-- a2.dart | 900 |-- a2.dart |
877 | |-- a3.dart | 901 | |-- a3.dart |
878 | |-- a4.dart | 902 | |-- a4.dart |
879 | | |-- a10.dart | 903 | | |-- a10.dart |
880 | |-- a6.dart | 904 | |-- a6.dart |
881 | | |-- a5.dart | 905 | | |-- a5.dart |
882 | |-- a5.dart... | 906 | |-- a5.dart... |
907 |-- dart_runtime.js | |
908 |-- harmony_feature_check.js | |
883 '''); | 909 '''); |
884 }); | 910 }); |
885 | 911 |
886 test('convert part to a library after updating the import', () { | 912 test('convert part to a library after updating the import', () { |
887 var node = nodeOf('/index3.html'); | 913 var node = nodeOf('/index3.html'); |
888 var a2 = nodeOf('/a2.dart'); | 914 var a2 = nodeOf('/a2.dart'); |
889 var a6 = nodeOf('/a6.dart'); | 915 var a6 = nodeOf('/a6.dart'); |
890 rebuild(node, graph, buildNoTransitiveChange); | 916 rebuild(node, graph, buildNoTransitiveChange); |
891 | 917 |
892 expectGraph(node, ''' | 918 expectGraph(node, ''' |
893 index3.html | 919 index3.html |
894 |-- a2.dart | 920 |-- a2.dart |
895 | |-- a3.dart | 921 | |-- a3.dart |
896 | |-- a4.dart | 922 | |-- a4.dart |
897 | | |-- a10.dart | 923 | | |-- a10.dart |
898 | |-- a5.dart | 924 | |-- a5.dart |
899 | |-- a6.dart (part) | 925 | |-- a6.dart (part) |
926 |-- dart_runtime.js | |
927 |-- harmony_feature_check.js | |
900 '''); | 928 '''); |
901 | 929 |
902 a2.source.contents.modificationTime++; | 930 a2.source.contents.modificationTime++; |
903 a2.source.contents.data = ''' | 931 a2.source.contents.data = ''' |
904 library a2; | 932 library a2; |
905 import 'a3.dart'; | 933 import 'a3.dart'; |
906 import 'a4.dart'; | 934 import 'a4.dart'; |
907 import 'a6.dart'; // properly import it | 935 import 'a6.dart'; // properly import it |
908 export 'a5.dart'; | 936 export 'a5.dart'; |
909 '''; | 937 '''; |
910 results = []; | 938 results = []; |
911 rebuild(node, graph, buildNoTransitiveChange); | 939 rebuild(node, graph, buildNoTransitiveChange); |
912 expect(results, ['a6.dart', 'a2.dart', 'index3.html']); | 940 expect(results, ['a6.dart', 'a2.dart', 'index3.html']); |
913 expectGraph(node, ''' | 941 expectGraph(node, ''' |
914 index3.html | 942 index3.html |
915 |-- a2.dart | 943 |-- a2.dart |
916 | |-- a3.dart | 944 | |-- a3.dart |
917 | |-- a4.dart | 945 | |-- a4.dart |
918 | | |-- a10.dart | 946 | | |-- a10.dart |
919 | |-- a6.dart | 947 | |-- a6.dart |
920 | |-- a5.dart | 948 | |-- a5.dart |
949 |-- dart_runtime.js | |
950 |-- harmony_feature_check.js | |
921 '''); | 951 '''); |
922 | 952 |
923 a6.source.contents.modificationTime++; | 953 a6.source.contents.modificationTime++; |
924 a6.source.contents.data = 'library a6; import "a5.dart";'; | 954 a6.source.contents.data = 'library a6; import "a5.dart";'; |
925 results = []; | 955 results = []; |
926 rebuild(node, graph, buildNoTransitiveChange); | 956 rebuild(node, graph, buildNoTransitiveChange); |
927 expect(results, ['a6.dart', 'index3.html']); | 957 expect(results, ['a6.dart', 'index3.html']); |
928 expectGraph(node, ''' | 958 expectGraph(node, ''' |
929 index3.html | 959 index3.html |
930 |-- a2.dart | 960 |-- a2.dart |
931 | |-- a3.dart | 961 | |-- a3.dart |
932 | |-- a4.dart | 962 | |-- a4.dart |
933 | | |-- a10.dart | 963 | | |-- a10.dart |
934 | |-- a6.dart | 964 | |-- a6.dart |
935 | | |-- a5.dart | 965 | | |-- a5.dart |
936 | |-- a5.dart... | 966 | |-- a5.dart... |
967 |-- dart_runtime.js | |
968 |-- harmony_feature_check.js | |
937 '''); | 969 '''); |
938 }); | 970 }); |
939 | 971 |
940 test('disconnect part making it a library', () { | 972 test('disconnect part making it a library', () { |
941 var node = nodeOf('/index3.html'); | 973 var node = nodeOf('/index3.html'); |
942 var a2 = nodeOf('/a2.dart'); | 974 var a2 = nodeOf('/a2.dart'); |
943 var a6 = nodeOf('/a6.dart'); | 975 var a6 = nodeOf('/a6.dart'); |
944 rebuild(node, graph, buildNoTransitiveChange); | 976 rebuild(node, graph, buildNoTransitiveChange); |
945 | 977 |
946 expectGraph(node, ''' | 978 expectGraph(node, ''' |
947 index3.html | 979 index3.html |
948 |-- a2.dart | 980 |-- a2.dart |
949 | |-- a3.dart | 981 | |-- a3.dart |
950 | |-- a4.dart | 982 | |-- a4.dart |
951 | | |-- a10.dart | 983 | | |-- a10.dart |
952 | |-- a5.dart | 984 | |-- a5.dart |
953 | |-- a6.dart (part) | 985 | |-- a6.dart (part) |
986 |-- dart_runtime.js | |
987 |-- harmony_feature_check.js | |
954 '''); | 988 '''); |
955 | 989 |
956 a2.source.contents.modificationTime++; | 990 a2.source.contents.modificationTime++; |
957 a2.source.contents.data = ''' | 991 a2.source.contents.data = ''' |
958 library a2; | 992 library a2; |
959 import 'a3.dart'; | 993 import 'a3.dart'; |
960 import 'a4.dart'; | 994 import 'a4.dart'; |
961 export 'a5.dart'; | 995 export 'a5.dart'; |
962 '''; | 996 '''; |
963 a6.source.contents.modificationTime++; | 997 a6.source.contents.modificationTime++; |
964 a6.source.contents.data = 'library a6; import "a5.dart";'; | 998 a6.source.contents.data = 'library a6; import "a5.dart";'; |
965 results = []; | 999 results = []; |
966 rebuild(node, graph, buildNoTransitiveChange); | 1000 rebuild(node, graph, buildNoTransitiveChange); |
967 // a6 is not here, it's not reachable so we don't build it. | 1001 // a6 is not here, it's not reachable so we don't build it. |
968 expect(results, ['a2.dart', 'index3.html']); | 1002 expect(results, ['a2.dart', 'index3.html']); |
969 expectGraph(node, ''' | 1003 expectGraph(node, ''' |
970 index3.html | 1004 index3.html |
971 |-- a2.dart | 1005 |-- a2.dart |
972 | |-- a3.dart | 1006 | |-- a3.dart |
973 | |-- a4.dart | 1007 | |-- a4.dart |
974 | | |-- a10.dart | 1008 | | |-- a10.dart |
975 | |-- a5.dart | 1009 | |-- a5.dart |
1010 |-- dart_runtime.js | |
1011 |-- harmony_feature_check.js | |
976 '''); | 1012 '''); |
977 }); | 1013 }); |
978 | 1014 |
979 test('convert a library to a part', () { | 1015 test('convert a library to a part', () { |
980 var node = nodeOf('/index3.html'); | 1016 var node = nodeOf('/index3.html'); |
981 var a2 = nodeOf('/a2.dart'); | 1017 var a2 = nodeOf('/a2.dart'); |
982 var a5 = nodeOf('/a5.dart'); | 1018 var a5 = nodeOf('/a5.dart'); |
983 rebuild(node, graph, buildNoTransitiveChange); | 1019 rebuild(node, graph, buildNoTransitiveChange); |
984 | 1020 |
985 expectGraph(node, ''' | 1021 expectGraph(node, ''' |
986 index3.html | 1022 index3.html |
987 |-- a2.dart | 1023 |-- a2.dart |
988 | |-- a3.dart | 1024 | |-- a3.dart |
989 | |-- a4.dart | 1025 | |-- a4.dart |
990 | | |-- a10.dart | 1026 | | |-- a10.dart |
991 | |-- a5.dart | 1027 | |-- a5.dart |
992 | |-- a6.dart (part) | 1028 | |-- a6.dart (part) |
1029 |-- dart_runtime.js | |
1030 |-- harmony_feature_check.js | |
993 '''); | 1031 '''); |
994 | 1032 |
995 a2.source.contents.modificationTime++; | 1033 a2.source.contents.modificationTime++; |
996 a2.source.contents.data = ''' | 1034 a2.source.contents.data = ''' |
997 library a2; | 1035 library a2; |
998 import 'a3.dart'; | 1036 import 'a3.dart'; |
999 import 'a4.dart'; | 1037 import 'a4.dart'; |
1000 part 'a5.dart'; // make it a part | 1038 part 'a5.dart'; // make it a part |
1001 part 'a6.dart'; | 1039 part 'a6.dart'; |
1002 '''; | 1040 '''; |
1003 results = []; | 1041 results = []; |
1004 rebuild(node, graph, buildNoTransitiveChange); | 1042 rebuild(node, graph, buildNoTransitiveChange); |
1005 expect(results, ['a2.dart', 'index3.html']); | 1043 expect(results, ['a2.dart', 'index3.html']); |
1006 expectGraph(node, ''' | 1044 expectGraph(node, ''' |
1007 index3.html | 1045 index3.html |
1008 |-- a2.dart | 1046 |-- a2.dart |
1009 | |-- a3.dart | 1047 | |-- a3.dart |
1010 | |-- a4.dart | 1048 | |-- a4.dart |
1011 | | |-- a10.dart | 1049 | | |-- a10.dart |
1012 | |-- a5.dart (part) | 1050 | |-- a5.dart (part) |
1013 | |-- a6.dart (part) | 1051 | |-- a6.dart (part) |
1052 |-- dart_runtime.js | |
1053 |-- harmony_feature_check.js | |
1014 '''); | 1054 '''); |
1015 | 1055 |
1016 a5.source.contents.modificationTime++; | 1056 a5.source.contents.modificationTime++; |
1017 a5.source.contents.data = 'part of a2;'; | 1057 a5.source.contents.data = 'part of a2;'; |
1018 results = []; | 1058 results = []; |
1019 rebuild(node, graph, buildNoTransitiveChange); | 1059 rebuild(node, graph, buildNoTransitiveChange); |
1020 expect(results, ['a2.dart']); | 1060 expect(results, ['a2.dart']); |
1021 expectGraph(node, ''' | 1061 expectGraph(node, ''' |
1022 index3.html | 1062 index3.html |
1023 |-- a2.dart | 1063 |-- a2.dart |
1024 | |-- a3.dart | 1064 | |-- a3.dart |
1025 | |-- a4.dart | 1065 | |-- a4.dart |
1026 | | |-- a10.dart | 1066 | | |-- a10.dart |
1027 | |-- a5.dart (part) | 1067 | |-- a5.dart (part) |
1028 | |-- a6.dart (part) | 1068 | |-- a6.dart (part) |
1069 |-- dart_runtime.js | |
1070 |-- harmony_feature_check.js | |
1029 '''); | 1071 '''); |
1030 }); | 1072 }); |
1031 }); | 1073 }); |
1032 }); | 1074 }); |
1033 } | 1075 } |
1034 | 1076 |
1035 expectGraph(SourceNode node, String expectation) { | 1077 expectGraph(SourceNode node, String expectation) { |
1036 expect(printReachable(node), equalsIgnoringWhitespace(expectation)); | 1078 expect(printReachable(node), equalsIgnoringWhitespace(expectation)); |
1037 } | 1079 } |
1038 | 1080 |
(...skipping 30 matching lines...) Expand all Loading... | |
1069 ..write(e.structureChanged ? '[structure-changed] ' : ' ') | 1111 ..write(e.structureChanged ? '[structure-changed] ' : ' ') |
1070 ..write('\n'); | 1112 ..write('\n'); |
1071 }); | 1113 }); |
1072 } | 1114 } |
1073 } | 1115 } |
1074 helper(node); | 1116 helper(node); |
1075 return sb.toString(); | 1117 return sb.toString(); |
1076 } | 1118 } |
1077 | 1119 |
1078 bool _same(Set a, Set b) => a.length == b.length && a.containsAll(b); | 1120 bool _same(Set a, Set b) => a.length == b.length && a.containsAll(b); |
OLD | NEW |