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

Side by Side Diff: pkg/analyzer/test/generated/bazel_test.dart

Issue 2393813003: Add BazelWorkspace and move BazelFileUriResolver to it. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/analyzer/lib/src/generated/bazel.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 analyzer.test.generated.bazel_test; 5 library analyzer.test.generated.bazel_test;
6 6
7 import 'package:analyzer/file_system/file_system.dart';
8 import 'package:analyzer/file_system/memory_file_system.dart'; 7 import 'package:analyzer/file_system/memory_file_system.dart';
9 import 'package:analyzer/src/generated/bazel.dart'; 8 import 'package:analyzer/src/generated/bazel.dart';
10 import 'package:analyzer/src/generated/source.dart'; 9 import 'package:analyzer/src/generated/source.dart';
11 import 'package:test_reflective_loader/test_reflective_loader.dart'; 10 import 'package:test_reflective_loader/test_reflective_loader.dart';
12 import 'package:unittest/unittest.dart'; 11 import 'package:unittest/unittest.dart';
13 12
14 import '../utils.dart'; 13 import '../utils.dart';
15 14
16 main() { 15 main() {
17 initializeTestEnvironment(); 16 initializeTestEnvironment();
17 defineReflectiveTests(BazelWorkspaceTest);
18 defineReflectiveTests(BazelFileUriResolverTest); 18 defineReflectiveTests(BazelFileUriResolverTest);
19 } 19 }
20 20
21 @reflectiveTest 21 @reflectiveTest
22 class BazelFileUriResolverTest { 22 class BazelFileUriResolverTest {
23 MemoryResourceProvider provider; 23 MemoryResourceProvider provider;
24 Folder workspace; 24 BazelWorkspace workspace;
25 List<Folder> buildDirs; 25 BazelFileUriResolver resolver;
26 ResourceUriResolver resolver; 26
27 /**
28 * Prepare platform path.
29 */
30 String ppp(String path) {
Brian Wilkerson 2016/10/05 22:01:11 ?!? I know 'provider.convertPath' is longer, I fin
31 return provider.convertPath(path);
32 }
27 33
28 void setUp() { 34 void setUp() {
29 provider = new MemoryResourceProvider(); 35 provider = new MemoryResourceProvider();
30 workspace = provider.newFolder(provider.convertPath('/workspace')); 36 provider.newFile(ppp('/workspace/WORKSPACE'), '');
31 buildDirs = [ 37 workspace = new BazelWorkspace(provider, ppp('/workspace'));
32 provider.newFolder(provider.convertPath('/workspace/one')), 38 resolver = new BazelFileUriResolver(workspace);
33 provider.newFolder(provider.convertPath('/workspace/two')) 39 provider.newFile(ppp('/workspace/test.dart'), '');
34 ]; 40 provider.newFile(ppp('/workspace/bazel-bin/gen1.dart'), '');
35 resolver = new BazelFileUriResolver(provider, workspace, buildDirs); 41 provider.newFile(ppp('/workspace/bazel-genfiles/gen2.dart'), '');
36 provider.newFile(provider.convertPath('/workspace/test.dart'), '');
37 provider.newFile(provider.convertPath('/workspace/one/gen1.dart'), '');
38 provider.newFile(provider.convertPath('/workspace/two/gen2.dart'), '');
39 } 42 }
40 43
41 void test_creation() { 44 void test_resolveAbsolute_doesNotExist() {
42 expect(provider, isNotNull); 45 Source source = _resolvePath('/workspace/foo.dart');
43 expect(workspace, isNotNull); 46 expect(source, isNotNull);
44 expect(buildDirs, isNotNull); 47 expect(source.exists(), isFalse);
45 expect(buildDirs.length, 2); 48 expect(source.fullName, ppp('/workspace/foo.dart'));
46 expect(resolver, isNotNull);
47 } 49 }
48 50
49 void test_resolveAbsolute_file() { 51 void test_resolveAbsolute_file() {
50 var uri = provider.pathContext 52 Source source = _resolvePath('/workspace/test.dart');
51 .toUri(provider.convertPath('/workspace/test.dart'));
52 Source source = resolver.resolveAbsolute(uri);
53 expect(source, isNotNull); 53 expect(source, isNotNull);
54 expect(source.exists(), isTrue); 54 expect(source.exists(), isTrue);
55 expect(source.fullName, provider.convertPath('/workspace/test.dart')); 55 expect(source.fullName, ppp('/workspace/test.dart'));
56 } 56 }
57 57
58 void test_resolveAbsolute_folder() { 58 void test_resolveAbsolute_folder() {
59 var uri = provider.pathContext.toUri(provider.convertPath('/workspace')); 59 Source source = _resolvePath('/workspace');
60 Source source = resolver.resolveAbsolute(uri); 60 expect(source, isNotNull);
61 expect(source, isNull); 61 expect(source.exists(), isFalse);
62 } 62 expect(source.fullName, ppp('/workspace'));
63
64 void test_resolveAbsolute_generated_file_does_not_exist_three() {
65 var uri = provider.pathContext
66 .toUri(provider.convertPath('/workspace/gen3.dart'));
67 Source source = resolver.resolveAbsolute(uri);
68 expect(source, isNull);
69 } 63 }
70 64
71 void test_resolveAbsolute_generated_file_exists_one() { 65 void test_resolveAbsolute_generated_file_exists_one() {
72 var uri = provider.pathContext 66 Source source = _resolvePath('/workspace/gen1.dart');
73 .toUri(provider.convertPath('/workspace/gen1.dart'));
74 Source source = resolver.resolveAbsolute(uri);
75 expect(source, isNotNull); 67 expect(source, isNotNull);
76 expect(source.exists(), isTrue); 68 expect(source.exists(), isTrue);
77 expect(source.fullName, provider.convertPath('/workspace/one/gen1.dart')); 69 expect(source.fullName, ppp('/workspace/bazel-bin/gen1.dart'));
78 } 70 }
79 71
80 void test_resolveAbsolute_generated_file_exists_two() { 72 void test_resolveAbsolute_generated_file_exists_two() {
81 var uri = provider.pathContext 73 Source source = _resolvePath('/workspace/gen2.dart');
82 .toUri(provider.convertPath('/workspace/gen2.dart'));
83 Source source = resolver.resolveAbsolute(uri);
84 expect(source, isNotNull); 74 expect(source, isNotNull);
85 expect(source.exists(), isTrue); 75 expect(source.exists(), isTrue);
86 expect(source.fullName, provider.convertPath('/workspace/two/gen2.dart')); 76 expect(source.fullName, ppp('/workspace/bazel-genfiles/gen2.dart'));
87 } 77 }
88 78
89 void test_resolveAbsolute_notFile_dartUri() { 79 void test_resolveAbsolute_notFile_dartUri() {
90 var uri = new Uri(scheme: 'dart', path: 'core'); 80 Uri uri = new Uri(scheme: 'dart', path: 'core');
91 Source source = resolver.resolveAbsolute(uri); 81 Source source = resolver.resolveAbsolute(uri);
92 expect(source, isNull); 82 expect(source, isNull);
93 } 83 }
94 84
95 void test_resolveAbsolute_notFile_httpsUri() { 85 void test_resolveAbsolute_notFile_httpsUri() {
96 var uri = new Uri(scheme: 'https', path: '127.0.0.1/test.dart'); 86 Uri uri = new Uri(scheme: 'https', path: '127.0.0.1/test.dart');
97 Source source = resolver.resolveAbsolute(uri); 87 Source source = resolver.resolveAbsolute(uri);
98 expect(source, isNull); 88 expect(source, isNull);
99 } 89 }
100 90
101 void test_restoreAbsolute() { 91 void test_restoreAbsolute() {
102 var uri = provider.pathContext 92 Uri uri = provider.pathContext.toUri(ppp('/workspace/test.dart'));
103 .toUri(provider.convertPath('/workspace/test.dart'));
104 Source source = resolver.resolveAbsolute(uri); 93 Source source = resolver.resolveAbsolute(uri);
105 expect(source, isNotNull); 94 expect(source, isNotNull);
106 expect(resolver.restoreAbsolute(source), uri); 95 expect(resolver.restoreAbsolute(source), uri);
107 expect( 96 expect(
108 resolver.restoreAbsolute( 97 resolver.restoreAbsolute(
109 new NonExistingSource(source.fullName, null, null)), 98 new NonExistingSource(source.fullName, null, null)),
110 uri); 99 uri);
111 } 100 }
101
102 Source _resolvePath(String absolutePosixPath) {
103 String absolutePath = ppp(absolutePosixPath);
104 Uri uri = provider.pathContext.toUri(absolutePath);
105 return resolver.resolveAbsolute(uri);
106 }
112 } 107 }
108
109 @reflectiveTest
110 class BazelWorkspaceTest {
111 MemoryResourceProvider provider = new MemoryResourceProvider();
112
113 /**
114 * Prepare platform path.
115 */
116 String ppp(String path) {
117 return provider.convertPath(path);
118 }
119
120 void test_factory_fail_notAbsolute() {
121 expect(() => new BazelWorkspace(provider, ppp('not_absolute')),
122 throwsArgumentError);
123 }
124
125 void test_factory_hasReadonlyFolder() {
126 provider.newFolder(ppp('/Users/user/test/READONLY/prime'));
127 provider.newFolder(ppp('/Users/user/test/prime'));
128 BazelWorkspace workspace = new BazelWorkspace(
129 provider, ppp('/Users/user/test/prime/my/module'),
130 readonlySuffix: 'prime');
131 expect(workspace.root, ppp('/Users/user/test/prime'));
132 expect(workspace.readonly, ppp('/Users/user/test/READONLY/prime'));
133 expect(workspace.bin, ppp('/Users/user/test/prime/bazel-bin'));
134 expect(workspace.genfiles, ppp('/Users/user/test/prime/bazel-genfiles'));
135 }
136
137 void test_factory_hasWorkspaceFile() {
138 provider.newFile(ppp('/workspace/WORKSPACE'), '');
139 BazelWorkspace workspace =
140 new BazelWorkspace(provider, ppp('/workspace/my/module'));
141 expect(workspace.root, ppp('/workspace'));
142 expect(workspace.readonly, isNull);
143 expect(workspace.bin, ppp('/workspace/bazel-bin'));
144 expect(workspace.genfiles, ppp('/workspace/bazel-genfiles'));
145 }
146
147 void test_factory_hasWorkspaceFile_forModuleInWorkspace() {
148 provider.newFile(ppp('/workspace/WORKSPACE'), '');
149 BazelWorkspace workspace =
150 new BazelWorkspace(provider, ppp('/workspace/my/module'));
151 expect(workspace.root, ppp('/workspace'));
152 expect(workspace.readonly, isNull);
153 expect(workspace.bin, ppp('/workspace/bazel-bin'));
154 expect(workspace.genfiles, ppp('/workspace/bazel-genfiles'));
155 }
156
157 void test_factory_hasWorkspaceFile_forWorkspace() {
158 provider.newFile(ppp('/workspace/WORKSPACE'), '');
159 BazelWorkspace workspace = new BazelWorkspace(provider, ppp('/workspace'));
160 expect(workspace.root, ppp('/workspace'));
161 expect(workspace.readonly, isNull);
162 expect(workspace.bin, ppp('/workspace/bazel-bin'));
163 expect(workspace.genfiles, ppp('/workspace/bazel-genfiles'));
164 }
165
166 void test_factory_null_notInWorkspace() {
167 BazelWorkspace workspace =
168 new BazelWorkspace(provider, ppp('/workspace/my/module'));
169 expect(workspace, isNull);
170 }
171
172 void test_factory_symlinkPrefix() {
173 provider.newFile(ppp('/workspace/WORKSPACE'), '');
174 BazelWorkspace workspace = new BazelWorkspace(provider, ppp('/workspace'),
175 symlinkPrefix: 'foobar');
176 expect(workspace.root, ppp('/workspace'));
177 expect(workspace.readonly, isNull);
178 expect(workspace.bin, ppp('/workspace/foobar-bin'));
179 expect(workspace.genfiles, ppp('/workspace/foobar-genfiles'));
180 }
181
182 void test_findFile_hasReadonlyFolder() {
183 provider.newFolder(ppp('/Users/user/test/READONLY/prime'));
184 provider.newFolder(ppp('/Users/user/test/prime'));
185 provider.newFile(ppp('/Users/user/test/prime/my/module/test1.dart'), '');
186 provider.newFile(ppp('/Users/user/test/prime/my/module/test2.dart'), '');
187 provider.newFile(ppp('/Users/user/test/prime/my/module/test3.dart'), '');
188 provider.newFile(
189 ppp('/Users/user/test/prime/bazel-bin/my/module/test2.dart'), '');
190 provider.newFile(
191 ppp('/Users/user/test/prime/bazel-genfiles/my/module/test3.dart'), '');
192 provider.newFile(
193 ppp('/Users/user/test/READONLY/prime/other/module/test4.dart'), '');
194 BazelWorkspace workspace = new BazelWorkspace(
195 provider, ppp('/Users/user/test/prime/my/module'),
196 readonlySuffix: 'prime');
197 expect(
198 workspace.findFile('/Users/user/test/prime/my/module/test1.dart').path,
199 '/Users/user/test/prime/my/module/test1.dart');
200 expect(
201 workspace.findFile('/Users/user/test/prime/my/module/test2.dart').path,
202 '/Users/user/test/prime/bazel-bin/my/module/test2.dart');
203 expect(
204 workspace.findFile('/Users/user/test/prime/my/module/test3.dart').path,
205 '/Users/user/test/prime/bazel-genfiles/my/module/test3.dart');
206 expect(
207 workspace
208 .findFile('/Users/user/test/prime/other/module/test4.dart')
209 .path,
210 '/Users/user/test/READONLY/prime/other/module/test4.dart');
211 }
212
213 void test_findFile_noReadOnly() {
214 provider.newFile(ppp('/workspace/WORKSPACE'), '');
215 provider.newFile(ppp('/workspace/my/module/test1.dart'), '');
216 provider.newFile(ppp('/workspace/my/module/test2.dart'), '');
217 provider.newFile(ppp('/workspace/my/module/test3.dart'), '');
218 provider.newFile(ppp('/workspace/bazel-bin/my/module/test2.dart'), '');
219 provider.newFile(ppp('/workspace/bazel-genfiles/my/module/test3.dart'), '');
220 BazelWorkspace workspace =
221 new BazelWorkspace(provider, ppp('/workspace/my/module'));
222 expect(workspace.findFile('/workspace/my/module/test1.dart').path,
223 '/workspace/my/module/test1.dart');
224 expect(workspace.findFile('/workspace/my/module/test2.dart').path,
225 '/workspace/bazel-bin/my/module/test2.dart');
226 expect(workspace.findFile('/workspace/my/module/test3.dart').path,
227 '/workspace/bazel-genfiles/my/module/test3.dart');
228 }
229 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/bazel.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698