OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 test.context.directory.manager; | 5 library test.context.directory.manager; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:analysis_server/src/context_manager.dart'; | 9 import 'package:analysis_server/src/context_manager.dart'; |
10 import 'package:analysis_server/src/plugin/notification_manager.dart'; | 10 import 'package:analysis_server/src/plugin/notification_manager.dart'; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 // Create files. | 93 // Create files. |
94 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 94 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
95 newFile([libPath, 'main.dart']); | 95 newFile([libPath, 'main.dart']); |
96 newFile([libPath, 'nope.dart']); | 96 newFile([libPath, 'nope.dart']); |
97 String embedderPath = newFolder([projPath, 'embedder']); | 97 String embedderPath = newFolder([projPath, 'embedder']); |
98 newFile([embedderPath, 'entry.dart']); | 98 newFile([embedderPath, 'entry.dart']); |
99 String embedderSrcPath = newFolder([projPath, 'embedder', 'src']); | 99 String embedderSrcPath = newFolder([projPath, 'embedder', 'src']); |
100 newFile([embedderSrcPath, 'part.dart']); | 100 newFile([embedderSrcPath, 'part.dart']); |
101 | 101 |
102 // Setup _embedder.yaml. | 102 // Setup _embedder.yaml. |
103 newFile( | 103 newFile([libPath, '_embedder.yaml'], r''' |
104 [libPath, '_embedder.yaml'], | |
105 r''' | |
106 embedded_libs: | 104 embedded_libs: |
107 "dart:foobar": "../embedder/entry.dart" | 105 "dart:foobar": "../embedder/entry.dart" |
108 "dart:typed_data": "../embedder/src/part" | 106 "dart:typed_data": "../embedder/src/part" |
109 '''); | 107 '''); |
110 | 108 |
111 Folder projectFolder = resourceProvider.newFolder(projPath); | 109 Folder projectFolder = resourceProvider.newFolder(projPath); |
112 | 110 |
113 // NOTE that this is Not in our package path yet. | 111 // NOTE that this is Not in our package path yet. |
114 | 112 |
115 // Setup context. | 113 // Setup context. |
116 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 114 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
117 await pumpEventQueue(); | 115 await pumpEventQueue(); |
118 // Confirm that one driver / context was created. | 116 // Confirm that one driver / context was created. |
119 List<AnalysisDriver> drivers = | 117 List<AnalysisDriver> drivers = |
120 manager.getDriversInAnalysisRoot(projectFolder); | 118 manager.getDriversInAnalysisRoot(projectFolder); |
121 expect(drivers, isNotNull); | 119 expect(drivers, isNotNull); |
122 expect(drivers, hasLength(1)); | 120 expect(drivers, hasLength(1)); |
123 | 121 |
124 // No embedded libs yet. | 122 // No embedded libs yet. |
125 expect(sourceFactory.forUri('dart:typed_data'), isNull); | 123 expect(sourceFactory.forUri('dart:typed_data'), isNull); |
126 | 124 |
127 // Add .packages file that introduces a dependency with embedded libs. | 125 // Add .packages file that introduces a dependency with embedded libs. |
128 newFile( | 126 newFile([projPath, '.packages'], r''' |
129 [projPath, '.packages'], | |
130 r''' | |
131 test_pack:lib/'''); | 127 test_pack:lib/'''); |
132 | 128 |
133 await pumpEventQueue(); | 129 await pumpEventQueue(); |
134 | 130 |
135 // Confirm that we still have just one driver / context. | 131 // Confirm that we still have just one driver / context. |
136 drivers = manager.getDriversInAnalysisRoot(projectFolder); | 132 drivers = manager.getDriversInAnalysisRoot(projectFolder); |
137 expect(drivers, isNotNull); | 133 expect(drivers, isNotNull); |
138 expect(drivers, hasLength(1)); | 134 expect(drivers, hasLength(1)); |
139 | 135 |
140 // Embedded lib should be defined now. | 136 // Embedded lib should be defined now. |
141 expect(sourceFactory.forUri('dart:typed_data'), isNotNull); | 137 expect(sourceFactory.forUri('dart:typed_data'), isNotNull); |
142 } | 138 } |
143 | 139 |
144 test_embedder_packagespec() async { | 140 test_embedder_packagespec() async { |
145 // Create files. | 141 // Create files. |
146 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 142 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
147 newFile([libPath, 'main.dart']); | 143 newFile([libPath, 'main.dart']); |
148 newFile([libPath, 'nope.dart']); | 144 newFile([libPath, 'nope.dart']); |
149 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 145 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
150 newFile([sdkExtPath, 'entry.dart']); | 146 newFile([sdkExtPath, 'entry.dart']); |
151 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); | 147 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
152 newFile([sdkExtSrcPath, 'part.dart']); | 148 newFile([sdkExtSrcPath, 'part.dart']); |
153 // Setup _embedder.yaml. | 149 // Setup _embedder.yaml. |
154 newFile( | 150 newFile([libPath, '_embedder.yaml'], r''' |
155 [libPath, '_embedder.yaml'], | |
156 r''' | |
157 embedded_libs: | 151 embedded_libs: |
158 "dart:foobar": "../sdk_ext/entry.dart" | 152 "dart:foobar": "../sdk_ext/entry.dart" |
159 "dart:typed_data": "../sdk_ext/src/part" | 153 "dart:typed_data": "../sdk_ext/src/part" |
160 '''); | 154 '''); |
161 // Setup .packages file | 155 // Setup .packages file |
162 newFile( | 156 newFile([projPath, '.packages'], r''' |
163 [projPath, '.packages'], | |
164 r''' | |
165 test_pack:lib/'''); | 157 test_pack:lib/'''); |
166 // Setup context. | 158 // Setup context. |
167 | 159 |
168 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 160 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
169 await pumpEventQueue(); | 161 await pumpEventQueue(); |
170 // Confirm that one context was created. | 162 // Confirm that one context was created. |
171 int count = manager | 163 int count = manager |
172 .numberOfContextsInAnalysisRoot(resourceProvider.newFolder(projPath)); | 164 .numberOfContextsInAnalysisRoot(resourceProvider.newFolder(projPath)); |
173 expect(count, equals(1)); | 165 expect(count, equals(1)); |
174 var source = sourceFactory.forUri('dart:foobar'); | 166 var source = sourceFactory.forUri('dart:foobar'); |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 test_sdk_ext_packagespec() async { | 370 test_sdk_ext_packagespec() async { |
379 // Create files. | 371 // Create files. |
380 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 372 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
381 newFile([libPath, 'main.dart']); | 373 newFile([libPath, 'main.dart']); |
382 newFile([libPath, 'nope.dart']); | 374 newFile([libPath, 'nope.dart']); |
383 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 375 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
384 newFile([sdkExtPath, 'entry.dart']); | 376 newFile([sdkExtPath, 'entry.dart']); |
385 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); | 377 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
386 newFile([sdkExtSrcPath, 'part.dart']); | 378 newFile([sdkExtSrcPath, 'part.dart']); |
387 // Setup sdk extension mapping. | 379 // Setup sdk extension mapping. |
388 newFile( | 380 newFile([libPath, '_sdkext'], r''' |
389 [libPath, '_sdkext'], | |
390 r''' | |
391 { | 381 { |
392 "dart:foobar": "../sdk_ext/entry.dart" | 382 "dart:foobar": "../sdk_ext/entry.dart" |
393 } | 383 } |
394 '''); | 384 '''); |
395 // Setup .packages file | 385 // Setup .packages file |
396 newFile( | 386 newFile([projPath, '.packages'], r''' |
397 [projPath, '.packages'], | |
398 r''' | |
399 test_pack:lib/'''); | 387 test_pack:lib/'''); |
400 // Setup context. | 388 // Setup context. |
401 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 389 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
402 // Confirm that one context was created. | 390 // Confirm that one context was created. |
403 int count = manager | 391 int count = manager |
404 .numberOfContextsInAnalysisRoot(resourceProvider.newFolder(projPath)); | 392 .numberOfContextsInAnalysisRoot(resourceProvider.newFolder(projPath)); |
405 expect(count, equals(1)); | 393 expect(count, equals(1)); |
406 var source = sourceFactory.forUri('dart:foobar'); | 394 var source = sourceFactory.forUri('dart:foobar'); |
407 expect(source.fullName, equals('/my/proj/sdk_ext/entry.dart')); | 395 expect(source.fullName, equals('/my/proj/sdk_ext/entry.dart')); |
408 } | 396 } |
(...skipping 1434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1843 @reflectiveTest | 1831 @reflectiveTest |
1844 class ContextManagerWithOldOptionsTest extends ContextManagerWithOptionsTest { | 1832 class ContextManagerWithOldOptionsTest extends ContextManagerWithOptionsTest { |
1845 String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_FILE; | 1833 String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_FILE; |
1846 } | 1834 } |
1847 | 1835 |
1848 abstract class ContextManagerWithOptionsTest extends ContextManagerTest { | 1836 abstract class ContextManagerWithOptionsTest extends ContextManagerTest { |
1849 String get optionsFileName; | 1837 String get optionsFileName; |
1850 | 1838 |
1851 test_analysis_options_file_delete() async { | 1839 test_analysis_options_file_delete() async { |
1852 // Setup analysis options | 1840 // Setup analysis options |
1853 newFile( | 1841 newFile([projPath, optionsFileName], r''' |
1854 [projPath, optionsFileName], | |
1855 r''' | |
1856 embedded_libs: | 1842 embedded_libs: |
1857 "dart:foobar": "../sdk_ext/entry.dart" | 1843 "dart:foobar": "../sdk_ext/entry.dart" |
1858 analyzer: | 1844 analyzer: |
1859 language: | 1845 language: |
1860 enableStrictCallChecks: true | 1846 enableStrictCallChecks: true |
1861 errors: | 1847 errors: |
1862 unused_local_variable: false | 1848 unused_local_variable: false |
1863 linter: | 1849 linter: |
1864 rules: | 1850 rules: |
1865 - camel_case_types | 1851 - camel_case_types |
(...skipping 17 matching lines...) Expand all Loading... |
1883 expect(lints, isEmpty); | 1869 expect(lints, isEmpty); |
1884 expect(analysisOptions.enableStrictCallChecks, isFalse); | 1870 expect(analysisOptions.enableStrictCallChecks, isFalse); |
1885 } | 1871 } |
1886 | 1872 |
1887 @failingTest | 1873 @failingTest |
1888 test_analysis_options_file_delete_with_embedder() async { | 1874 test_analysis_options_file_delete_with_embedder() async { |
1889 // This fails because the ContextBuilder doesn't pick up the strongMode | 1875 // This fails because the ContextBuilder doesn't pick up the strongMode |
1890 // flag from the embedder.yaml file. | 1876 // flag from the embedder.yaml file. |
1891 // Setup _embedder.yaml. | 1877 // Setup _embedder.yaml. |
1892 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 1878 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
1893 newFile( | 1879 newFile([libPath, '_embedder.yaml'], r''' |
1894 [libPath, '_embedder.yaml'], | |
1895 r''' | |
1896 analyzer: | 1880 analyzer: |
1897 strong-mode: true | 1881 strong-mode: true |
1898 errors: | 1882 errors: |
1899 missing_return: false | 1883 missing_return: false |
1900 linter: | 1884 linter: |
1901 rules: | 1885 rules: |
1902 - avoid_as | 1886 - avoid_as |
1903 '''); | 1887 '''); |
1904 | 1888 |
1905 // Setup .packages file | 1889 // Setup .packages file |
1906 newFile( | 1890 newFile([projPath, '.packages'], r''' |
1907 [projPath, '.packages'], | |
1908 r''' | |
1909 test_pack:lib/'''); | 1891 test_pack:lib/'''); |
1910 | 1892 |
1911 // Setup analysis options | 1893 // Setup analysis options |
1912 newFile( | 1894 newFile([projPath, optionsFileName], r''' |
1913 [projPath, optionsFileName], | |
1914 r''' | |
1915 analyzer: | 1895 analyzer: |
1916 language: | 1896 language: |
1917 enableStrictCallChecks: true | 1897 enableStrictCallChecks: true |
1918 errors: | 1898 errors: |
1919 unused_local_variable: false | 1899 unused_local_variable: false |
1920 linter: | 1900 linter: |
1921 rules: | 1901 rules: |
1922 - camel_case_types | 1902 - camel_case_types |
1923 '''); | 1903 '''); |
1924 | 1904 |
(...skipping 21 matching lines...) Expand all Loading... |
1946 | 1926 |
1947 test_analysis_options_include() async { | 1927 test_analysis_options_include() async { |
1948 // Create files. | 1928 // Create files. |
1949 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 1929 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
1950 newFile([libPath, 'main.dart']); | 1930 newFile([libPath, 'main.dart']); |
1951 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 1931 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
1952 newFile([sdkExtPath, 'entry.dart']); | 1932 newFile([sdkExtPath, 'entry.dart']); |
1953 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); | 1933 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
1954 newFile([sdkExtSrcPath, 'part.dart']); | 1934 newFile([sdkExtSrcPath, 'part.dart']); |
1955 // Setup analysis options file which includes another options file. | 1935 // Setup analysis options file which includes another options file. |
1956 newFile( | 1936 newFile([projPath, optionsFileName], r''' |
1957 [projPath, optionsFileName], | |
1958 r''' | |
1959 include: other_options.yaml | 1937 include: other_options.yaml |
1960 '''); | 1938 '''); |
1961 newFile( | 1939 newFile([projPath, 'other_options.yaml'], r''' |
1962 [projPath, 'other_options.yaml'], | |
1963 r''' | |
1964 analyzer: | 1940 analyzer: |
1965 language: | 1941 language: |
1966 enableStrictCallChecks: true | 1942 enableStrictCallChecks: true |
1967 errors: | 1943 errors: |
1968 unused_local_variable: false | 1944 unused_local_variable: false |
1969 linter: | 1945 linter: |
1970 rules: | 1946 rules: |
1971 - camel_case_types | 1947 - camel_case_types |
1972 '''); | 1948 '''); |
1973 // Setup context. | 1949 // Setup context. |
1974 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 1950 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
1975 await pumpEventQueue(); | 1951 await pumpEventQueue(); |
1976 // Verify options were set. | 1952 // Verify options were set. |
1977 expect(analysisOptions.enableStrictCallChecks, isTrue); | 1953 expect(analysisOptions.enableStrictCallChecks, isTrue); |
1978 expect(errorProcessors, hasLength(1)); | 1954 expect(errorProcessors, hasLength(1)); |
1979 expect(lints, hasLength(1)); | 1955 expect(lints, hasLength(1)); |
1980 expect(lints[0].name, 'camel_case_types'); | 1956 expect(lints[0].name, 'camel_case_types'); |
1981 } | 1957 } |
1982 | 1958 |
1983 test_analysis_options_include_package() async { | 1959 test_analysis_options_include_package() async { |
1984 // Create files. | 1960 // Create files. |
1985 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 1961 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
1986 newFile([libPath, 'main.dart']); | 1962 newFile([libPath, 'main.dart']); |
1987 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 1963 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
1988 newFile([sdkExtPath, 'entry.dart']); | 1964 newFile([sdkExtPath, 'entry.dart']); |
1989 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); | 1965 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
1990 newFile([sdkExtSrcPath, 'part.dart']); | 1966 newFile([sdkExtSrcPath, 'part.dart']); |
1991 // Setup package | 1967 // Setup package |
1992 String booLibPosixPath = '/my/pkg/boo/lib'; | 1968 String booLibPosixPath = '/my/pkg/boo/lib'; |
1993 newFile( | 1969 newFile([booLibPosixPath, 'other_options.yaml'], r''' |
1994 [booLibPosixPath, 'other_options.yaml'], | |
1995 r''' | |
1996 analyzer: | 1970 analyzer: |
1997 language: | 1971 language: |
1998 enableStrictCallChecks: true | 1972 enableStrictCallChecks: true |
1999 errors: | 1973 errors: |
2000 unused_local_variable: false | 1974 unused_local_variable: false |
2001 linter: | 1975 linter: |
2002 rules: | 1976 rules: |
2003 - camel_case_types | 1977 - camel_case_types |
2004 '''); | 1978 '''); |
2005 // Setup analysis options file which includes another options file. | 1979 // Setup analysis options file which includes another options file. |
2006 newFile([projPath, ContextManagerImpl.PACKAGE_SPEC_NAME], | 1980 newFile([projPath, ContextManagerImpl.PACKAGE_SPEC_NAME], |
2007 'boo:$booLibPosixPath\n'); | 1981 'boo:$booLibPosixPath\n'); |
2008 newFile( | 1982 newFile([projPath, optionsFileName], r''' |
2009 [projPath, optionsFileName], | |
2010 r''' | |
2011 include: package:boo/other_options.yaml | 1983 include: package:boo/other_options.yaml |
2012 '''); | 1984 '''); |
2013 // Setup context. | 1985 // Setup context. |
2014 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 1986 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2015 await pumpEventQueue(); | 1987 await pumpEventQueue(); |
2016 // Verify options were set. | 1988 // Verify options were set. |
2017 expect(analysisOptions.enableStrictCallChecks, isTrue); | 1989 expect(analysisOptions.enableStrictCallChecks, isTrue); |
2018 expect(errorProcessors, hasLength(1)); | 1990 expect(errorProcessors, hasLength(1)); |
2019 expect(lints, hasLength(1)); | 1991 expect(lints, hasLength(1)); |
2020 expect(lints[0].name, 'camel_case_types'); | 1992 expect(lints[0].name, 'camel_case_types'); |
2021 } | 1993 } |
2022 | 1994 |
2023 test_analysis_options_parse_failure() async { | 1995 test_analysis_options_parse_failure() async { |
2024 // Create files. | 1996 // Create files. |
2025 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 1997 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
2026 newFile([libPath, 'main.dart']); | 1998 newFile([libPath, 'main.dart']); |
2027 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 1999 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
2028 newFile([sdkExtPath, 'entry.dart']); | 2000 newFile([sdkExtPath, 'entry.dart']); |
2029 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); | 2001 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
2030 newFile([sdkExtSrcPath, 'part.dart']); | 2002 newFile([sdkExtSrcPath, 'part.dart']); |
2031 // Setup analysis options file with ignore list. | 2003 // Setup analysis options file with ignore list. |
2032 String optionsFilePath = newFile( | 2004 String optionsFilePath = newFile([projPath, optionsFileName], r''' |
2033 [projPath, optionsFileName], | |
2034 r''' | |
2035 ; | 2005 ; |
2036 '''); | 2006 '''); |
2037 // Setup context. | 2007 // Setup context. |
2038 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2008 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2039 | 2009 |
2040 // Check that an error was produced. | 2010 // Check that an error was produced. |
2041 TestNotificationManager notificationManager = callbacks.notificationManager; | 2011 TestNotificationManager notificationManager = callbacks.notificationManager; |
2042 var errors = notificationManager.recordedErrors; | 2012 var errors = notificationManager.recordedErrors; |
2043 expect(errors, hasLength(1)); | 2013 expect(errors, hasLength(1)); |
2044 expect(errors[errors.keys.first][optionsFilePath], hasLength(1)); | 2014 expect(errors[errors.keys.first][optionsFilePath], hasLength(1)); |
(...skipping 17 matching lines...) Expand all Loading... |
2062 // This fails because the ContextBuilder doesn't pick up the strongMode | 2032 // This fails because the ContextBuilder doesn't pick up the strongMode |
2063 // flag from the embedder.yaml file. | 2033 // flag from the embedder.yaml file. |
2064 // Create files. | 2034 // Create files. |
2065 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 2035 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
2066 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 2036 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
2067 newFile([projPath, 'test', 'test.dart']); | 2037 newFile([projPath, 'test', 'test.dart']); |
2068 newFile([sdkExtPath, 'entry.dart']); | 2038 newFile([sdkExtPath, 'entry.dart']); |
2069 List<int> bytes = new SummaryBuilder([], null, true).build(); | 2039 List<int> bytes = new SummaryBuilder([], null, true).build(); |
2070 newFileFromBytes([projPath, 'sdk.ds'], bytes); | 2040 newFileFromBytes([projPath, 'sdk.ds'], bytes); |
2071 // Setup _embedder.yaml. | 2041 // Setup _embedder.yaml. |
2072 newFile( | 2042 newFile([libPath, '_embedder.yaml'], r''' |
2073 [libPath, '_embedder.yaml'], | |
2074 r''' | |
2075 embedded_libs: | 2043 embedded_libs: |
2076 "dart:foobar": "../sdk_ext/entry.dart" | 2044 "dart:foobar": "../sdk_ext/entry.dart" |
2077 analyzer: | 2045 analyzer: |
2078 strong-mode: true | 2046 strong-mode: true |
2079 language: | 2047 language: |
2080 enableSuperMixins: true | 2048 enableSuperMixins: true |
2081 errors: | 2049 errors: |
2082 missing_return: false | 2050 missing_return: false |
2083 linter: | 2051 linter: |
2084 rules: | 2052 rules: |
2085 - avoid_as | 2053 - avoid_as |
2086 '''); | 2054 '''); |
2087 // Setup .packages file | 2055 // Setup .packages file |
2088 newFile( | 2056 newFile([projPath, '.packages'], r''' |
2089 [projPath, '.packages'], | |
2090 r''' | |
2091 test_pack:lib/'''); | 2057 test_pack:lib/'''); |
2092 | 2058 |
2093 // Setup analysis options | 2059 // Setup analysis options |
2094 newFile( | 2060 newFile([projPath, optionsFileName], r''' |
2095 [projPath, optionsFileName], | |
2096 r''' | |
2097 analyzer: | 2061 analyzer: |
2098 exclude: | 2062 exclude: |
2099 - 'test/**' | 2063 - 'test/**' |
2100 language: | 2064 language: |
2101 enableStrictCallChecks: true | 2065 enableStrictCallChecks: true |
2102 errors: | 2066 errors: |
2103 unused_local_variable: false | 2067 unused_local_variable: false |
2104 linter: | 2068 linter: |
2105 rules: | 2069 rules: |
2106 - camel_case_types | 2070 - camel_case_types |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2146 ['avoid_as' /* embedder */, 'camel_case_types' /* options */])); | 2110 ['avoid_as' /* embedder */, 'camel_case_types' /* options */])); |
2147 | 2111 |
2148 // Sanity check embedder libs. | 2112 // Sanity check embedder libs. |
2149 var source = sourceFactory.forUri('dart:foobar'); | 2113 var source = sourceFactory.forUri('dart:foobar'); |
2150 expect(source, isNotNull); | 2114 expect(source, isNotNull); |
2151 expect(source.fullName, '/my/proj/sdk_ext/entry.dart'); | 2115 expect(source.fullName, '/my/proj/sdk_ext/entry.dart'); |
2152 } | 2116 } |
2153 | 2117 |
2154 test_error_filter_analysis_option() async { | 2118 test_error_filter_analysis_option() async { |
2155 // Create files. | 2119 // Create files. |
2156 newFile( | 2120 newFile([projPath, optionsFileName], r''' |
2157 [projPath, optionsFileName], | |
2158 r''' | |
2159 analyzer: | 2121 analyzer: |
2160 errors: | 2122 errors: |
2161 unused_local_variable: ignore | 2123 unused_local_variable: ignore |
2162 '''); | 2124 '''); |
2163 // Setup context. | 2125 // Setup context. |
2164 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2126 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2165 | 2127 |
2166 // Verify filter setup. | 2128 // Verify filter setup. |
2167 expect(errorProcessors, hasLength(1)); | 2129 expect(errorProcessors, hasLength(1)); |
2168 expect(getProcessor(unused_local_variable).severity, isNull); | 2130 expect(getProcessor(unused_local_variable).severity, isNull); |
2169 } | 2131 } |
2170 | 2132 |
2171 test_error_filter_analysis_option_multiple_filters() async { | 2133 test_error_filter_analysis_option_multiple_filters() async { |
2172 // Create files. | 2134 // Create files. |
2173 newFile( | 2135 newFile([projPath, optionsFileName], r''' |
2174 [projPath, optionsFileName], | |
2175 r''' | |
2176 analyzer: | 2136 analyzer: |
2177 errors: | 2137 errors: |
2178 invalid_assignment: ignore | 2138 invalid_assignment: ignore |
2179 unused_local_variable: error | 2139 unused_local_variable: error |
2180 '''); | 2140 '''); |
2181 // Setup context. | 2141 // Setup context. |
2182 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2142 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2183 | 2143 |
2184 // Verify filter setup. | 2144 // Verify filter setup. |
2185 expect(errorProcessors, hasLength(2)); | 2145 expect(errorProcessors, hasLength(2)); |
2186 | 2146 |
2187 expect(getProcessor(invalid_assignment_error).severity, isNull); | 2147 expect(getProcessor(invalid_assignment_error).severity, isNull); |
2188 expect(getProcessor(unused_local_variable).severity, ErrorSeverity.ERROR); | 2148 expect(getProcessor(unused_local_variable).severity, ErrorSeverity.ERROR); |
2189 } | 2149 } |
2190 | 2150 |
2191 test_error_filter_analysis_option_synonyms() async { | 2151 test_error_filter_analysis_option_synonyms() async { |
2192 // Create files. | 2152 // Create files. |
2193 newFile( | 2153 newFile([projPath, optionsFileName], r''' |
2194 [projPath, optionsFileName], | |
2195 r''' | |
2196 analyzer: | 2154 analyzer: |
2197 errors: | 2155 errors: |
2198 unused_local_variable: ignore | 2156 unused_local_variable: ignore |
2199 ambiguous_import: false | 2157 ambiguous_import: false |
2200 '''); | 2158 '''); |
2201 // Setup context. | 2159 // Setup context. |
2202 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2160 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2203 | 2161 |
2204 // Verify filter setup. | 2162 // Verify filter setup. |
2205 expect(errorProcessors, isNotNull); | 2163 expect(errorProcessors, isNotNull); |
2206 expect(errorProcessors, hasLength(2)); | 2164 expect(errorProcessors, hasLength(2)); |
2207 } | 2165 } |
2208 | 2166 |
2209 test_error_filter_analysis_option_unpsecified() async { | 2167 test_error_filter_analysis_option_unpsecified() async { |
2210 // Create files. | 2168 // Create files. |
2211 newFile( | 2169 newFile([projPath, optionsFileName], r''' |
2212 [projPath, optionsFileName], | |
2213 r''' | |
2214 analyzer: | 2170 analyzer: |
2215 # errors: | 2171 # errors: |
2216 # unused_local_variable: ignore | 2172 # unused_local_variable: ignore |
2217 '''); | 2173 '''); |
2218 // Setup context. | 2174 // Setup context. |
2219 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2175 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2220 | 2176 |
2221 // Verify filter setup. | 2177 // Verify filter setup. |
2222 expect(errorProcessors, isEmpty); | 2178 expect(errorProcessors, isEmpty); |
2223 } | 2179 } |
2224 | 2180 |
2225 @failingTest | 2181 @failingTest |
2226 test_optionsFile_update_strongMode() async { | 2182 test_optionsFile_update_strongMode() async { |
2227 // It appears that this fails because we are not correctly updating the | 2183 // It appears that this fails because we are not correctly updating the |
2228 // analysis options in the driver when the file is modified. | 2184 // analysis options in the driver when the file is modified. |
2229 //return super.test_optionsFile_update_strongMode(); | 2185 //return super.test_optionsFile_update_strongMode(); |
2230 // After a few other changes, the test now times out on my machine, so I'm | 2186 // After a few other changes, the test now times out on my machine, so I'm |
2231 // disabling it in order to prevent it from being flaky. | 2187 // disabling it in order to prevent it from being flaky. |
2232 fail('Test times out'); | 2188 fail('Test times out'); |
2233 var file = resourceProvider.newFile( | 2189 var file = resourceProvider.newFile('$projPath/bin/test.dart', r''' |
2234 '$projPath/bin/test.dart', | |
2235 r''' | |
2236 main() { | 2190 main() { |
2237 var paths = <int>[]; | 2191 var paths = <int>[]; |
2238 var names = <String>[]; | 2192 var names = <String>[]; |
2239 paths.addAll(names.map((s) => s.length)); | 2193 paths.addAll(names.map((s) => s.length)); |
2240 } | 2194 } |
2241 '''); | 2195 '''); |
2242 resourceProvider.newFile( | 2196 resourceProvider.newFile('$projPath/$optionsFileName', r''' |
2243 '$projPath/$optionsFileName', | |
2244 r''' | |
2245 analyzer: | 2197 analyzer: |
2246 strong-mode: false | 2198 strong-mode: false |
2247 '''); | 2199 '''); |
2248 // Create the context. | 2200 // Create the context. |
2249 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2201 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2250 await pumpEventQueue(); | 2202 await pumpEventQueue(); |
2251 | 2203 |
2252 AnalysisResult result = await callbacks.currentDriver.getResult(file.path); | 2204 AnalysisResult result = await callbacks.currentDriver.getResult(file.path); |
2253 | 2205 |
2254 // Not strong mode - both in the context and the SDK context. | 2206 // Not strong mode - both in the context and the SDK context. |
2255 AnalysisContext sdkContext = sourceFactory.dartSdk.context; | 2207 AnalysisContext sdkContext = sourceFactory.dartSdk.context; |
2256 expect(analysisOptions.strongMode, isFalse); | 2208 expect(analysisOptions.strongMode, isFalse); |
2257 expect(sdkContext.analysisOptions.strongMode, isFalse); | 2209 expect(sdkContext.analysisOptions.strongMode, isFalse); |
2258 expect(result.errors, isEmpty); | 2210 expect(result.errors, isEmpty); |
2259 | 2211 |
2260 // Update the options file - turn on 'strong-mode'. | 2212 // Update the options file - turn on 'strong-mode'. |
2261 resourceProvider.updateFile( | 2213 resourceProvider.updateFile('$projPath/$optionsFileName', r''' |
2262 '$projPath/$optionsFileName', | |
2263 r''' | |
2264 analyzer: | 2214 analyzer: |
2265 strong-mode: true | 2215 strong-mode: true |
2266 '''); | 2216 '''); |
2267 await pumpEventQueue(); | 2217 await pumpEventQueue(); |
2268 | 2218 |
2269 // Strong mode - both in the context and the SDK context. | 2219 // Strong mode - both in the context and the SDK context. |
2270 result = await callbacks.currentDriver.getResult(file.path); | 2220 result = await callbacks.currentDriver.getResult(file.path); |
2271 | 2221 |
2272 // Not strong mode - both in the context and the SDK context. | 2222 // Not strong mode - both in the context and the SDK context. |
2273 sdkContext = sourceFactory.dartSdk.context; | 2223 sdkContext = sourceFactory.dartSdk.context; |
2274 expect(analysisOptions.strongMode, isTrue); | 2224 expect(analysisOptions.strongMode, isTrue); |
2275 expect(sdkContext.analysisOptions.strongMode, isTrue); | 2225 expect(sdkContext.analysisOptions.strongMode, isTrue); |
2276 // The code is strong-mode clean. | 2226 // The code is strong-mode clean. |
2277 // Verify that TypeSystem was reset. | 2227 // Verify that TypeSystem was reset. |
2278 expect(result.errors, isEmpty); | 2228 expect(result.errors, isEmpty); |
2279 } | 2229 } |
2280 | 2230 |
2281 @failingTest | 2231 @failingTest |
2282 test_path_filter_analysis_option() async { | 2232 test_path_filter_analysis_option() async { |
2283 // This fails because we're not analyzing the analysis options file. | 2233 // This fails because we're not analyzing the analysis options file. |
2284 // Create files. | 2234 // Create files. |
2285 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 2235 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
2286 newFile([libPath, 'main.dart']); | 2236 newFile([libPath, 'main.dart']); |
2287 newFile([libPath, 'nope.dart']); | 2237 newFile([libPath, 'nope.dart']); |
2288 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 2238 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
2289 newFile([sdkExtPath, 'entry.dart']); | 2239 newFile([sdkExtPath, 'entry.dart']); |
2290 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); | 2240 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
2291 newFile([sdkExtSrcPath, 'part.dart']); | 2241 newFile([sdkExtSrcPath, 'part.dart']); |
2292 // Setup analysis options file with ignore list. | 2242 // Setup analysis options file with ignore list. |
2293 newFile( | 2243 newFile([projPath, optionsFileName], r''' |
2294 [projPath, optionsFileName], | |
2295 r''' | |
2296 analyzer: | 2244 analyzer: |
2297 exclude: | 2245 exclude: |
2298 - lib/nope.dart | 2246 - lib/nope.dart |
2299 - 'sdk_ext/**' | 2247 - 'sdk_ext/**' |
2300 '''); | 2248 '''); |
2301 // Setup context. | 2249 // Setup context. |
2302 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2250 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2303 | 2251 |
2304 // Verify that analysis options was parsed and the ignore patterns applied. | 2252 // Verify that analysis options was parsed and the ignore patterns applied. |
2305 Folder projectFolder = resourceProvider.newFolder(projPath); | 2253 Folder projectFolder = resourceProvider.newFolder(projPath); |
2306 var drivers = manager.getDriversInAnalysisRoot(projectFolder); | 2254 var drivers = manager.getDriversInAnalysisRoot(projectFolder); |
2307 expect(drivers, hasLength(1)); | 2255 expect(drivers, hasLength(1)); |
2308 AnalysisDriver driver = drivers[0]; | 2256 AnalysisDriver driver = drivers[0]; |
2309 expect( | 2257 expect( |
2310 driver.addedFiles, | 2258 driver.addedFiles, |
2311 unorderedEquals( | 2259 unorderedEquals( |
2312 ['/my/proj/lib/main.dart', '/my/proj/$optionsFileName'])); | 2260 ['/my/proj/lib/main.dart', '/my/proj/$optionsFileName'])); |
2313 } | 2261 } |
2314 | 2262 |
2315 test_path_filter_child_contexts_option() async { | 2263 test_path_filter_child_contexts_option() async { |
2316 // Create files. | 2264 // Create files. |
2317 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 2265 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
2318 newFile([libPath, 'main.dart']); | 2266 newFile([libPath, 'main.dart']); |
2319 newFile( | 2267 newFile([libPath, 'pubspec.yaml'], r''' |
2320 [libPath, 'pubspec.yaml'], | |
2321 r''' | |
2322 name: foobar | 2268 name: foobar |
2323 '''); | 2269 '''); |
2324 String otherLibPath = newFolder([projPath, 'other_lib']); | 2270 String otherLibPath = newFolder([projPath, 'other_lib']); |
2325 newFile([otherLibPath, 'entry.dart']); | 2271 newFile([otherLibPath, 'entry.dart']); |
2326 newFile( | 2272 newFile([otherLibPath, 'pubspec.yaml'], r''' |
2327 [otherLibPath, 'pubspec.yaml'], | |
2328 r''' | |
2329 name: other_lib | 2273 name: other_lib |
2330 '''); | 2274 '''); |
2331 // Setup analysis options file with ignore list that ignores the 'other_lib' | 2275 // Setup analysis options file with ignore list that ignores the 'other_lib' |
2332 // directory by name. | 2276 // directory by name. |
2333 newFile( | 2277 newFile([projPath, optionsFileName], r''' |
2334 [projPath, optionsFileName], | |
2335 r''' | |
2336 analyzer: | 2278 analyzer: |
2337 exclude: | 2279 exclude: |
2338 - 'other_lib' | 2280 - 'other_lib' |
2339 '''); | 2281 '''); |
2340 // Setup context. | 2282 // Setup context. |
2341 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2283 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2342 // Verify that the context in other_lib wasn't created and that the | 2284 // Verify that the context in other_lib wasn't created and that the |
2343 // context in lib was created. | 2285 // context in lib was created. |
2344 Folder projectFolder = resourceProvider.newFolder(projPath); | 2286 Folder projectFolder = resourceProvider.newFolder(projPath); |
2345 var drivers = manager.getDriversInAnalysisRoot(projectFolder); | 2287 var drivers = manager.getDriversInAnalysisRoot(projectFolder); |
2346 expect(drivers, hasLength(2)); | 2288 expect(drivers, hasLength(2)); |
2347 expect(drivers[0].name, equals('/my/proj')); | 2289 expect(drivers[0].name, equals('/my/proj')); |
2348 expect(drivers[1].name, equals('/my/proj/lib')); | 2290 expect(drivers[1].name, equals('/my/proj/lib')); |
2349 } | 2291 } |
2350 | 2292 |
2351 test_path_filter_recursive_wildcard_child_contexts_option() async { | 2293 test_path_filter_recursive_wildcard_child_contexts_option() async { |
2352 // Create files. | 2294 // Create files. |
2353 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 2295 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
2354 newFile([libPath, 'main.dart']); | 2296 newFile([libPath, 'main.dart']); |
2355 newFile( | 2297 newFile([libPath, 'pubspec.yaml'], r''' |
2356 [libPath, 'pubspec.yaml'], | |
2357 r''' | |
2358 name: foobar | 2298 name: foobar |
2359 '''); | 2299 '''); |
2360 String otherLibPath = newFolder([projPath, 'other_lib']); | 2300 String otherLibPath = newFolder([projPath, 'other_lib']); |
2361 newFile([otherLibPath, 'entry.dart']); | 2301 newFile([otherLibPath, 'entry.dart']); |
2362 newFile( | 2302 newFile([otherLibPath, 'pubspec.yaml'], r''' |
2363 [otherLibPath, 'pubspec.yaml'], | |
2364 r''' | |
2365 name: other_lib | 2303 name: other_lib |
2366 '''); | 2304 '''); |
2367 // Setup analysis options file with ignore list that ignores 'other_lib' | 2305 // Setup analysis options file with ignore list that ignores 'other_lib' |
2368 // and all descendants. | 2306 // and all descendants. |
2369 newFile( | 2307 newFile([projPath, optionsFileName], r''' |
2370 [projPath, optionsFileName], | |
2371 r''' | |
2372 analyzer: | 2308 analyzer: |
2373 exclude: | 2309 exclude: |
2374 - 'other_lib/**' | 2310 - 'other_lib/**' |
2375 '''); | 2311 '''); |
2376 // Setup context. | 2312 // Setup context. |
2377 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2313 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2378 | 2314 |
2379 // Verify that the context in other_lib wasn't created and that the | 2315 // Verify that the context in other_lib wasn't created and that the |
2380 // context in lib was created. | 2316 // context in lib was created. |
2381 Folder projectFolder = resourceProvider.newFolder(projPath); | 2317 Folder projectFolder = resourceProvider.newFolder(projPath); |
2382 var drivers = manager.getDriversInAnalysisRoot(projectFolder); | 2318 var drivers = manager.getDriversInAnalysisRoot(projectFolder); |
2383 expect(drivers, hasLength(2)); | 2319 expect(drivers, hasLength(2)); |
2384 expect(drivers[0].name, equals('/my/proj')); | 2320 expect(drivers[0].name, equals('/my/proj')); |
2385 expect(drivers[1].name, equals('/my/proj/lib')); | 2321 expect(drivers[1].name, equals('/my/proj/lib')); |
2386 } | 2322 } |
2387 | 2323 |
2388 test_path_filter_wildcard_child_contexts_option() async { | 2324 test_path_filter_wildcard_child_contexts_option() async { |
2389 // Create files. | 2325 // Create files. |
2390 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 2326 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
2391 newFile([libPath, 'main.dart']); | 2327 newFile([libPath, 'main.dart']); |
2392 newFile( | 2328 newFile([libPath, 'pubspec.yaml'], r''' |
2393 [libPath, 'pubspec.yaml'], | |
2394 r''' | |
2395 name: foobar | 2329 name: foobar |
2396 '''); | 2330 '''); |
2397 String otherLibPath = newFolder([projPath, 'other_lib']); | 2331 String otherLibPath = newFolder([projPath, 'other_lib']); |
2398 newFile([otherLibPath, 'entry.dart']); | 2332 newFile([otherLibPath, 'entry.dart']); |
2399 newFile( | 2333 newFile([otherLibPath, 'pubspec.yaml'], r''' |
2400 [otherLibPath, 'pubspec.yaml'], | |
2401 r''' | |
2402 name: other_lib | 2334 name: other_lib |
2403 '''); | 2335 '''); |
2404 // Setup analysis options file with ignore list that ignores 'other_lib' | 2336 // Setup analysis options file with ignore list that ignores 'other_lib' |
2405 // and all immediate children. | 2337 // and all immediate children. |
2406 newFile( | 2338 newFile([projPath, optionsFileName], r''' |
2407 [projPath, optionsFileName], | |
2408 r''' | |
2409 analyzer: | 2339 analyzer: |
2410 exclude: | 2340 exclude: |
2411 - 'other_lib/*' | 2341 - 'other_lib/*' |
2412 '''); | 2342 '''); |
2413 // Setup context / driver. | 2343 // Setup context / driver. |
2414 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2344 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2415 | 2345 |
2416 Folder projectFolder = resourceProvider.newFolder(projPath); | 2346 Folder projectFolder = resourceProvider.newFolder(projPath); |
2417 var drivers = manager.getDriversInAnalysisRoot(projectFolder); | 2347 var drivers = manager.getDriversInAnalysisRoot(projectFolder); |
2418 expect(drivers, hasLength(2)); | 2348 expect(drivers, hasLength(2)); |
2419 expect(drivers[0].name, equals('/my/proj')); | 2349 expect(drivers[0].name, equals('/my/proj')); |
2420 expect(drivers[1].name, equals('/my/proj/lib')); | 2350 expect(drivers[1].name, equals('/my/proj/lib')); |
2421 } | 2351 } |
2422 | 2352 |
2423 void test_setRoots_nested_excludedByOuter() { | 2353 void test_setRoots_nested_excludedByOuter() { |
2424 String project = '/project'; | 2354 String project = '/project'; |
2425 String projectPubspec = '$project/pubspec.yaml'; | 2355 String projectPubspec = '$project/pubspec.yaml'; |
2426 String example = '$project/example'; | 2356 String example = '$project/example'; |
2427 String examplePubspec = '$example/pubspec.yaml'; | 2357 String examplePubspec = '$example/pubspec.yaml'; |
2428 // create files | 2358 // create files |
2429 resourceProvider.newFile(projectPubspec, 'name: project'); | 2359 resourceProvider.newFile(projectPubspec, 'name: project'); |
2430 resourceProvider.newFile(examplePubspec, 'name: example'); | 2360 resourceProvider.newFile(examplePubspec, 'name: example'); |
2431 newFile( | 2361 newFile([project, optionsFileName], r''' |
2432 [project, optionsFileName], | |
2433 r''' | |
2434 analyzer: | 2362 analyzer: |
2435 exclude: | 2363 exclude: |
2436 - 'example' | 2364 - 'example' |
2437 '''); | 2365 '''); |
2438 manager | 2366 manager |
2439 .setRoots(<String>[project, example], <String>[], <String, String>{}); | 2367 .setRoots(<String>[project, example], <String>[], <String, String>{}); |
2440 // verify | 2368 // verify |
2441 { | 2369 { |
2442 ContextInfo rootInfo = manager.rootInfo; | 2370 ContextInfo rootInfo = manager.rootInfo; |
2443 expect(rootInfo.children, hasLength(1)); | 2371 expect(rootInfo.children, hasLength(1)); |
(...skipping 13 matching lines...) Expand all Loading... |
2457 } | 2385 } |
2458 | 2386 |
2459 void test_setRoots_nested_excludedByOuter_deep() { | 2387 void test_setRoots_nested_excludedByOuter_deep() { |
2460 String a = '/a'; | 2388 String a = '/a'; |
2461 String c = '$a/b/c'; | 2389 String c = '$a/b/c'; |
2462 String aPubspec = '$a/pubspec.yaml'; | 2390 String aPubspec = '$a/pubspec.yaml'; |
2463 String cPubspec = '$c/pubspec.yaml'; | 2391 String cPubspec = '$c/pubspec.yaml'; |
2464 // create files | 2392 // create files |
2465 resourceProvider.newFile(aPubspec, 'name: aaa'); | 2393 resourceProvider.newFile(aPubspec, 'name: aaa'); |
2466 resourceProvider.newFile(cPubspec, 'name: ccc'); | 2394 resourceProvider.newFile(cPubspec, 'name: ccc'); |
2467 newFile( | 2395 newFile([a, optionsFileName], r''' |
2468 [a, optionsFileName], | |
2469 r''' | |
2470 analyzer: | 2396 analyzer: |
2471 exclude: | 2397 exclude: |
2472 - 'b**' | 2398 - 'b**' |
2473 '''); | 2399 '''); |
2474 manager.setRoots(<String>[a, c], <String>[], <String, String>{}); | 2400 manager.setRoots(<String>[a, c], <String>[], <String, String>{}); |
2475 // verify | 2401 // verify |
2476 { | 2402 { |
2477 ContextInfo rootInfo = manager.rootInfo; | 2403 ContextInfo rootInfo = manager.rootInfo; |
2478 expect(rootInfo.children, hasLength(1)); | 2404 expect(rootInfo.children, hasLength(1)); |
2479 { | 2405 { |
2480 ContextInfo aInfo = rootInfo.children[0]; | 2406 ContextInfo aInfo = rootInfo.children[0]; |
2481 expect(aInfo.folder.path, a); | 2407 expect(aInfo.folder.path, a); |
2482 expect(aInfo.children, hasLength(1)); | 2408 expect(aInfo.children, hasLength(1)); |
2483 { | 2409 { |
2484 ContextInfo cInfo = aInfo.children[0]; | 2410 ContextInfo cInfo = aInfo.children[0]; |
2485 expect(cInfo.folder.path, c); | 2411 expect(cInfo.folder.path, c); |
2486 expect(cInfo.children, isEmpty); | 2412 expect(cInfo.children, isEmpty); |
2487 } | 2413 } |
2488 } | 2414 } |
2489 } | 2415 } |
2490 expect(callbacks.currentContextRoots, hasLength(2)); | 2416 expect(callbacks.currentContextRoots, hasLength(2)); |
2491 expect(callbacks.currentContextRoots, unorderedEquals([a, c])); | 2417 expect(callbacks.currentContextRoots, unorderedEquals([a, c])); |
2492 } | 2418 } |
2493 | 2419 |
2494 test_strong_mode_analysis_option() async { | 2420 test_strong_mode_analysis_option() async { |
2495 // Create files. | 2421 // Create files. |
2496 newFile( | 2422 newFile([projPath, optionsFileName], r''' |
2497 [projPath, optionsFileName], | |
2498 r''' | |
2499 analyzer: | 2423 analyzer: |
2500 strong-mode: true | 2424 strong-mode: true |
2501 '''); | 2425 '''); |
2502 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 2426 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
2503 newFile([libPath, 'main.dart']); | 2427 newFile([libPath, 'main.dart']); |
2504 // Setup context. | 2428 // Setup context. |
2505 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 2429 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
2506 // Verify that analysis options was parsed and strong-mode set. | 2430 // Verify that analysis options was parsed and strong-mode set. |
2507 expect(analysisOptions.strongMode, true); | 2431 expect(analysisOptions.strongMode, true); |
2508 } | 2432 } |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2762 class TestUriResolver extends UriResolver { | 2686 class TestUriResolver extends UriResolver { |
2763 Map<Uri, Source> uriMap; | 2687 Map<Uri, Source> uriMap; |
2764 | 2688 |
2765 TestUriResolver(this.uriMap); | 2689 TestUriResolver(this.uriMap); |
2766 | 2690 |
2767 @override | 2691 @override |
2768 Source resolveAbsolute(Uri uri, [Uri actualUri]) { | 2692 Source resolveAbsolute(Uri uri, [Uri actualUri]) { |
2769 return uriMap[uri]; | 2693 return uriMap[uri]; |
2770 } | 2694 } |
2771 } | 2695 } |
OLD | NEW |