OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 descriptor.file; | 5 library descriptor.file; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:io'; | 8 import 'dart:io'; |
9 | 9 |
10 import '../../../../../pkg/pathos/lib/path.dart' as path; | 10 import '../../../../../pkg/pathos/lib/path.dart' as path; |
11 | 11 |
12 import '../../descriptor.dart'; | 12 import '../../descriptor.dart'; |
13 import '../../scheduled_test.dart'; | 13 import '../../scheduled_test.dart'; |
14 import '../utils.dart'; | 14 import '../utils.dart'; |
15 | 15 |
16 /// A path builder to ensure that [load] uses POSIX paths. | 16 /// A path builder to ensure that [load] uses POSIX paths. |
17 final path.Builder _path = new path.Builder(style: path.Style.posix); | 17 final path.Builder _path = new path.Builder(style: path.Style.posix); |
18 | 18 |
19 /// A descriptor describing a directory containing multiple files. | 19 /// A descriptor describing a directory containing multiple files. |
20 class DirectoryDescriptor extends Descriptor { | 20 class DirectoryDescriptor extends Descriptor { |
21 /// The entries contained within this directory. | 21 /// The entries contained within this directory. This is intentionally |
22 final Iterable<Descriptor> contents; | 22 /// mutable. |
| 23 final List<Descriptor> contents; |
23 | 24 |
24 DirectoryDescriptor(String name, this.contents) | 25 DirectoryDescriptor(String name, Iterable<Descriptor> contents) |
25 : super(name); | 26 : super(name), |
| 27 contents = contents.toList(); |
26 | 28 |
27 Future create([String parent]) => schedule(() { | 29 Future create([String parent]) => schedule(() { |
28 if (parent == null) parent = defaultRoot; | 30 if (parent == null) parent = defaultRoot; |
29 var fullPath = path.join(parent, name); | 31 var fullPath = path.join(parent, name); |
30 return new Directory(fullPath).create(recursive: true).then((_) { | 32 return new Directory(fullPath).create(recursive: true).then((_) { |
31 return Future.wait( | 33 return Future.wait( |
32 contents.map((entry) => entry.create(fullPath)).toList()); | 34 contents.map((entry) => entry.create(fullPath)).toList()); |
33 }); | 35 }); |
34 }, 'creating directory:\n${describe()}'); | 36 }, 'creating directory:\n${describe()}'); |
35 | 37 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 .replaceFirst('| ', '|-- '); | 91 .replaceFirst('| ', '|-- '); |
90 buffer.writeln(entryString); | 92 buffer.writeln(entryString); |
91 } | 93 } |
92 | 94 |
93 var lastEntryString = prefixLines(contents.last.describe(), prefix: ' ') | 95 var lastEntryString = prefixLines(contents.last.describe(), prefix: ' ') |
94 .replaceFirst(' ', "'-- "); | 96 .replaceFirst(' ', "'-- "); |
95 buffer.write(lastEntryString); | 97 buffer.write(lastEntryString); |
96 return buffer.toString(); | 98 return buffer.toString(); |
97 } | 99 } |
98 } | 100 } |
OLD | NEW |