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

Side by Side Diff: utils/tests/pub/io_test.dart

Issue 14297021: Move pub into sdk/lib/_internal. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Disallow package: imports of pub. Created 7 years, 8 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
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.
4
5 library io_test;
6
7 import 'dart:io';
8
9 import 'package:pathos/path.dart' as path;
10 import 'package:unittest/unittest.dart';
11
12 import '../../pub/io.dart';
13 import '../../pub/utils.dart';
14 import 'test_pub.dart';
15
16 main() {
17 initConfig();
18
19 group('listDir', () {
20 test('lists a simple directory non-recursively', () {
21 expect(withTempDir((temp) {
22 writeTextFile(path.join(temp, 'file1.txt'), '');
23 writeTextFile(path.join(temp, 'file2.txt'), '');
24 createDir(path.join(temp, 'subdir'));
25 writeTextFile(path.join(temp, 'subdir', 'file3.txt'), '');
26
27 expect(listDir(temp), unorderedEquals([
28 path.join(temp, 'file1.txt'),
29 path.join(temp, 'file2.txt'),
30 path.join(temp, 'subdir')
31 ]));
32 }), completes);
33 });
34
35 test('lists a simple directory recursively', () {
36 expect(withTempDir((temp) {
37 writeTextFile(path.join(temp, 'file1.txt'), '');
38 writeTextFile(path.join(temp, 'file2.txt'), '');
39 createDir(path.join(temp, 'subdir'));
40 writeTextFile(path.join(temp, 'subdir', 'file3.txt'), '');
41
42 expect(listDir(temp, recursive: true), unorderedEquals([
43 path.join(temp, 'file1.txt'),
44 path.join(temp, 'file2.txt'),
45 path.join(temp, 'subdir'),
46 path.join(temp, 'subdir', 'file3.txt'),
47 ]));
48 }), completes);
49 });
50
51 test('ignores hidden files by default', () {
52 expect(withTempDir((temp) {
53 writeTextFile(path.join(temp, 'file1.txt'), '');
54 writeTextFile(path.join(temp, 'file2.txt'), '');
55 writeTextFile(path.join(temp, '.file3.txt'), '');
56 createDir(path.join(temp, '.subdir'));
57 writeTextFile(path.join(temp, '.subdir', 'file3.txt'), '');
58
59 expect(listDir(temp, recursive: true), unorderedEquals([
60 path.join(temp, 'file1.txt'),
61 path.join(temp, 'file2.txt')
62 ]));
63 }), completes);
64 });
65
66 test('includes hidden files when told to', () {
67 expect(withTempDir((temp) {
68 writeTextFile(path.join(temp, 'file1.txt'), '');
69 writeTextFile(path.join(temp, 'file2.txt'), '');
70 writeTextFile(path.join(temp, '.file3.txt'), '');
71 createDir(path.join(temp, '.subdir'));
72 writeTextFile(path.join(temp, '.subdir', 'file3.txt'), '');
73
74 expect(listDir(temp, recursive: true, includeHidden: true),
75 unorderedEquals([
76 path.join(temp, 'file1.txt'),
77 path.join(temp, 'file2.txt'),
78 path.join(temp, '.file3.txt'),
79 path.join(temp, '.subdir'),
80 path.join(temp, '.subdir', 'file3.txt')
81 ]));
82 }), completes);
83 });
84
85 test('returns the unresolved paths for symlinks', () {
86 expect(withTempDir((temp) {
87 var dirToList = path.join(temp, 'dir-to-list');
88 createDir(path.join(temp, 'dir1'));
89 writeTextFile(path.join(temp, 'dir1', 'file1.txt'), '');
90 createDir(path.join(temp, 'dir2'));
91 writeTextFile(path.join(temp, 'dir2', 'file2.txt'), '');
92 createDir(dirToList);
93 createSymlink(
94 path.join(temp, 'dir1'),
95 path.join(dirToList, 'linked-dir1'));
96 createDir(path.join(dirToList, 'subdir'));
97 createSymlink(
98 path.join(temp, 'dir2'),
99 path.join(dirToList, 'subdir', 'linked-dir2'));
100
101 expect(listDir(dirToList, recursive: true), unorderedEquals([
102 path.join(dirToList, 'linked-dir1'),
103 path.join(dirToList, 'linked-dir1', 'file1.txt'),
104 path.join(dirToList, 'subdir'),
105 path.join(dirToList, 'subdir', 'linked-dir2'),
106 path.join(dirToList, 'subdir', 'linked-dir2', 'file2.txt'),
107 ]));
108 }), completes);
109 });
110
111 test('works with recursive symlinks', () {
112 expect(withTempDir((temp) {
113 writeTextFile(path.join(temp, 'file1.txt'), '');
114 createSymlink(temp, path.join(temp, 'linkdir'));
115
116 expect(listDir(temp, recursive: true), unorderedEquals([
117 path.join(temp, 'file1.txt'),
118 path.join(temp, 'linkdir')
119 ]));
120 }), completes);
121 });
122
123 test('treats a broken symlink as a file', () {
124 expect(withTempDir((temp) {
125 writeTextFile(path.join(temp, 'file1.txt'), '');
126 createDir(path.join(temp, 'dir'));
127 createSymlink(path.join(temp, 'dir'), path.join(temp, 'linkdir'));
128 deleteEntry(path.join(temp, 'dir'));
129
130 expect(listDir(temp, recursive: true), unorderedEquals([
131 path.join(temp, 'file1.txt'),
132 path.join(temp, 'linkdir')
133 ]));
134 }), completes);
135 });
136 });
137
138 testExistencePredicate("entryExists", entryExists,
139 forFile: true,
140 forFileSymlink: true,
141 forMultiLevelFileSymlink: true,
142 forDirectory: true,
143 forDirectorySymlink: true,
144 forMultiLevelDirectorySymlink: true,
145 forBrokenSymlink: true,
146 forMultiLevelBrokenSymlink: true);
147
148 testExistencePredicate("linkExists", linkExists,
149 forFile: false,
150 forFileSymlink: true,
151 forMultiLevelFileSymlink: true,
152 forDirectory: false,
153 forDirectorySymlink: true,
154 forMultiLevelDirectorySymlink: true,
155 forBrokenSymlink: true,
156 forMultiLevelBrokenSymlink: true);
157
158 testExistencePredicate("fileExists", fileExists,
159 forFile: true,
160 forFileSymlink: true,
161 forMultiLevelFileSymlink: true,
162 forDirectory: false,
163 forDirectorySymlink: false,
164 forMultiLevelDirectorySymlink: false,
165 forBrokenSymlink: false,
166 forMultiLevelBrokenSymlink: false);
167
168 testExistencePredicate("dirExists", dirExists,
169 forFile: false,
170 forFileSymlink: false,
171 forMultiLevelFileSymlink: false,
172 forDirectory: true,
173 forDirectorySymlink: true,
174 forMultiLevelDirectorySymlink: true,
175 forBrokenSymlink: false,
176 forMultiLevelBrokenSymlink: false);
177 }
178
179 void testExistencePredicate(String name, bool predicate(String path),
180 {bool forFile,
181 bool forFileSymlink,
182 bool forMultiLevelFileSymlink,
183 bool forDirectory,
184 bool forDirectorySymlink,
185 bool forMultiLevelDirectorySymlink,
186 bool forBrokenSymlink,
187 bool forMultiLevelBrokenSymlink}) {
188 group(name, () {
189 test('returns $forFile for a file', () {
190 expect(withTempDir((temp) {
191 var file = path.join(temp, "test.txt");
192 writeTextFile(file, "contents");
193 expect(predicate(file), equals(forFile));
194 }), completes);
195 });
196
197 test('returns $forDirectory for a directory', () {
198 expect(withTempDir((temp) {
199 var file = path.join(temp, "dir");
200 createDir(file);
201 expect(predicate(file), equals(forDirectory));
202 }), completes);
203 });
204
205 test('returns $forDirectorySymlink for a symlink to a directory', () {
206 expect(withTempDir((temp) {
207 var targetPath = path.join(temp, "dir");
208 var symlinkPath = path.join(temp, "linkdir");
209 createDir(targetPath);
210 createSymlink(targetPath, symlinkPath);
211 expect(predicate(symlinkPath), equals(forDirectorySymlink));
212 }), completes);
213 });
214
215 test('returns $forMultiLevelDirectorySymlink for a multi-level symlink to '
216 'a directory', () {
217 expect(withTempDir((temp) {
218 var targetPath = path.join(temp, "dir");
219 var symlink1Path = path.join(temp, "link1dir");
220 var symlink2Path = path.join(temp, "link2dir");
221 createDir(targetPath);
222 createSymlink(targetPath, symlink1Path);
223 createSymlink(symlink1Path, symlink2Path);
224 expect(predicate(symlink2Path),
225 equals(forMultiLevelDirectorySymlink));
226 }), completes);
227 });
228
229 test('returns $forBrokenSymlink for a broken symlink', () {
230 expect(withTempDir((temp) {
231 var targetPath = path.join(temp, "dir");
232 var symlinkPath = path.join(temp, "linkdir");
233 createDir(targetPath);
234 createSymlink(targetPath, symlinkPath);
235 deleteEntry(targetPath);
236 expect(predicate(symlinkPath), equals(forBrokenSymlink));
237 }), completes);
238 });
239
240 test('returns $forMultiLevelBrokenSymlink for a multi-level broken symlink',
241 () {
242 expect(withTempDir((temp) {
243 var targetPath = path.join(temp, "dir");
244 var symlink1Path = path.join(temp, "link1dir");
245 var symlink2Path = path.join(temp, "link2dir");
246 createDir(targetPath);
247 createSymlink(targetPath, symlink1Path);
248 createSymlink(symlink1Path, symlink2Path);
249 deleteEntry(targetPath);
250 expect(predicate(symlink2Path), equals(forMultiLevelBrokenSymlink));
251 }), completes);
252 });
253
254 // Windows doesn't support symlinking to files.
255 if (Platform.operatingSystem != 'windows') {
256 test('returns $forFileSymlink for a symlink to a file', () {
257 expect(withTempDir((temp) {
258 var targetPath = path.join(temp, "test.txt");
259 var symlinkPath = path.join(temp, "link.txt");
260 writeTextFile(targetPath, "contents");
261 createSymlink(targetPath, symlinkPath);
262 expect(predicate(symlinkPath), equals(forFileSymlink));
263 }), completes);
264 });
265
266 test('returns $forMultiLevelFileSymlink for a multi-level symlink to a '
267 'file', () {
268 expect(withTempDir((temp) {
269 var targetPath = path.join(temp, "test.txt");
270 var symlink1Path = path.join(temp, "link1.txt");
271 var symlink2Path = path.join(temp, "link2.txt");
272 writeTextFile(targetPath, "contents");
273 createSymlink(targetPath, symlink1Path);
274 createSymlink(symlink1Path, symlink2Path);
275 expect(predicate(symlink2Path), equals(forMultiLevelFileSymlink));
276 }), completes);
277 });
278 }
279 });
280 }
OLDNEW
« no previous file with comments | « utils/tests/pub/install/switch_source_test.dart ('k') | utils/tests/pub/lish/archives_and_uploads_a_package_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698