Skip to content

Commit 003e797

Browse files
aamcommit-bot@chromium.org
authored andcommitted
[gardening] Ensure directory_fuzz_test creates test directories in temp folder, not in check-out location.
Fixes #46737 This is similar to https://dart-review.googlesource.com/c/sdk/+/208285 TEST=directory_fuzz_test Change-Id: Ia74e221ac7095fd6fc4729aec51770df5eabdbe0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/209105 Commit-Queue: Alexander Aprelev <[email protected]> Reviewed-by: Martin Kustermann <[email protected]>
1 parent 167cd02 commit 003e797

File tree

2 files changed

+115
-103
lines changed

2 files changed

+115
-103
lines changed

tests/standalone/io/directory_fuzz_test.dart

Lines changed: 58 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -12,68 +12,75 @@ import "package:async_helper/async_helper.dart";
1212
import "package:expect/expect.dart";
1313

1414
import 'fuzz_support.dart';
15+
import 'file_write_only_test.dart' show withTempDir, withTempDirSync;
1516

1617
fuzzSyncMethods() {
17-
typeMapping.forEach((k, v) {
18-
doItSync(() {
19-
Directory.systemTemp.createTempSync(v as String?).deleteSync();
20-
});
21-
Directory? directory;
22-
doItSync(() => directory = new Directory(v as String));
23-
if (directory == null) return;
24-
final d = directory!;
25-
doItSync(d.existsSync);
26-
doItSync(d.createSync);
27-
doItSync(d.deleteSync);
28-
doItSync(d.listSync);
29-
doItSync(() {
30-
d.createTempSync('tempdir').deleteSync();
31-
});
32-
doItSync(() {
33-
// Let's be a little careful. If the directory exists we don't
34-
// want to delete it and all its contents.
35-
if (!d.existsSync()) d.deleteSync(recursive: true);
36-
});
37-
typeMapping.forEach((k2, v2) {
38-
doItSync(() => d.renameSync(v2 as String));
39-
doItSync(() => d.listSync(recursive: v2 as bool));
18+
withTempDirSync('dart_directory_fuzz', (temp) {
19+
typeMapping.forEach((k, v) {
20+
doItSync(() {
21+
Directory.systemTemp.createTempSync("${temp.path}/${v as String}")
22+
.deleteSync();
23+
});
24+
Directory? directory;
25+
doItSync(() => directory = new Directory("${temp.path}/${v as String}"));
26+
if (directory == null) return;
27+
final d = directory!;
28+
doItSync(d.existsSync);
29+
doItSync(d.createSync);
30+
doItSync(d.deleteSync);
31+
doItSync(d.listSync);
32+
doItSync(() {
33+
d.createTempSync('tempdir').deleteSync();
34+
});
35+
doItSync(() {
36+
// Let's be a little careful. If the directory exists we don't
37+
// want to delete it and all its contents.
38+
if (!d.existsSync()) d.deleteSync(recursive: true);
39+
});
40+
typeMapping.forEach((k2, v2) {
41+
doItSync(() => d.renameSync(v2 as String));
42+
doItSync(() => d.listSync(recursive: v2 as bool));
43+
});
4044
});
4145
});
4246
}
4347

44-
fuzzAsyncMethods() {
48+
fuzzAsyncMethods() async {
4549
asyncStart();
46-
var futures = <Future>[];
47-
typeMapping.forEach((k, v) {
48-
futures.add(doItAsync(() {
49-
Directory.systemTemp.createTempSync(v as String?).deleteSync();
50-
}));
51-
if (v is! String) {
52-
return;
53-
}
54-
var d = new Directory(v);
55-
futures.add(doItAsync(d.exists));
56-
futures.add(doItAsync(d.create));
57-
futures.add(doItAsync(d.delete));
58-
futures.add(doItAsync(() {
59-
return d.createTemp('tempdir').then((temp) {
60-
return temp.delete();
61-
});
62-
}));
63-
futures.add(doItAsync(() {
64-
return d.exists().then((res) {
65-
if (!res) return d.delete(recursive: true);
66-
return new Future.value(true);
67-
});
68-
}));
69-
typeMapping.forEach((k2, v2) {
70-
futures.add(doItAsync(() => d.rename(v2 as String)));
50+
await withTempDir('dart_directory_fuzz', (temp) async {
51+
final futures = <Future>[];
52+
typeMapping.forEach((k, v) {
53+
futures.add(doItAsync(() {
54+
Directory.systemTemp.createTempSync("${temp.path}/${v as String}")
55+
.deleteSync();
56+
}));
57+
if (v is! String) {
58+
return;
59+
}
60+
var d = new Directory("${temp.path}/$v");
61+
futures.add(doItAsync(d.exists));
62+
futures.add(doItAsync(d.create));
63+
futures.add(doItAsync(d.delete));
7164
futures.add(doItAsync(() {
72-
d.list(recursive: v2 as bool).listen((_) {}, onError: (e) => null);
65+
return d.createTemp('tempdir').then((temp) {
66+
return temp.delete();
67+
});
7368
}));
69+
futures.add(doItAsync(() {
70+
return d.exists().then((res) {
71+
if (!res) return d.delete(recursive: true);
72+
return new Future.value(true);
73+
});
74+
}));
75+
typeMapping.forEach((k2, v2) {
76+
futures.add(doItAsync(() => d.rename(v2 as String)));
77+
futures.add(doItAsync(() {
78+
d.list(recursive: v2 as bool).listen((_) {}, onError: (e) => null);
79+
}));
80+
});
7481
});
82+
await Future.wait(futures).then((_) => asyncEnd());
7583
});
76-
Future.wait(futures).then((_) => asyncEnd());
7784
}
7885

7986
main() {

tests/standalone_2/io/directory_fuzz_test.dart

Lines changed: 57 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -14,69 +14,74 @@ import "package:async_helper/async_helper.dart";
1414
import "package:expect/expect.dart";
1515

1616
import 'fuzz_support.dart';
17+
import 'file_write_only_test.dart' show withTempDir, withTempDirSync;
1718

1819
fuzzSyncMethods() {
19-
typeMapping.forEach((k, v) {
20-
doItSync(() {
21-
Directory.systemTemp.createTempSync(v).deleteSync();
22-
});
23-
Directory d;
24-
doItSync(() => d = new Directory(v));
25-
if (d == null) return;
26-
doItSync(d.existsSync);
27-
doItSync(d.createSync);
28-
doItSync(d.deleteSync);
29-
doItSync(d.listSync);
30-
doItSync(() {
31-
d.createTempSync('tempdir').deleteSync();
32-
});
33-
doItSync(() {
34-
// Let's be a little careful. If the directory exists we don't
35-
// want to delete it and all its contents.
36-
if (!d.existsSync()) d.deleteSync(recursive: true);
37-
});
38-
typeMapping.forEach((k2, v2) {
39-
doItSync(() => d.renameSync(v2));
40-
doItSync(() => d.listSync(recursive: v2));
20+
withTempDirSync('dart_directory_fuzz', (temp) {
21+
typeMapping.forEach((k, v) {
22+
doItSync(() {
23+
Directory.systemTemp.createTempSync("${temp.path}/$v").deleteSync();
24+
});
25+
Directory d;
26+
doItSync(() => d = new Directory("${temp.path}/$v"));
27+
if (d == null) return;
28+
doItSync(d.existsSync);
29+
doItSync(d.createSync);
30+
doItSync(d.deleteSync);
31+
doItSync(d.listSync);
32+
doItSync(() {
33+
d.createTempSync('tempdir').deleteSync();
34+
});
35+
doItSync(() {
36+
// Let's be a little careful. If the directory exists we don't
37+
// want to delete it and all its contents.
38+
if (!d.existsSync()) d.deleteSync(recursive: true);
39+
});
40+
typeMapping.forEach((k2, v2) {
41+
doItSync(() => d.renameSync(v2));
42+
doItSync(() => d.listSync(recursive: v2));
43+
});
4144
});
4245
});
4346
}
4447

45-
fuzzAsyncMethods() {
48+
fuzzAsyncMethods() async {
4649
asyncStart();
47-
var futures = <Future>[];
48-
typeMapping.forEach((k, v) {
49-
futures.add(doItAsync(() {
50-
Directory.systemTemp.createTempSync(v).deleteSync();
51-
}));
52-
if (v is! String) {
53-
Expect.throws(() => new Directory(v),
54-
(e) => e is ArgumentError || e is TypeError);
55-
return;
56-
}
57-
var d = new Directory(v);
58-
futures.add(doItAsync(d.exists));
59-
futures.add(doItAsync(d.create));
60-
futures.add(doItAsync(d.delete));
61-
futures.add(doItAsync(() {
62-
return d.createTemp('tempdir').then((temp) {
63-
return temp.delete();
64-
});
65-
}));
66-
futures.add(doItAsync(() {
67-
return d.exists().then((res) {
68-
if (!res) return d.delete(recursive: true);
69-
return new Future.value(true);
70-
});
71-
}));
72-
typeMapping.forEach((k2, v2) {
73-
futures.add(doItAsync(() => d.rename(v2)));
50+
await withTempDir('dart_directory_fuzz', (temp) async {
51+
final futures = <Future>[];
52+
typeMapping.forEach((k, v) {
53+
futures.add(doItAsync(() {
54+
Directory.systemTemp.createTempSync("${temp.path}/$v").deleteSync();
55+
}));
56+
if (v is! String) {
57+
Expect.throws(() => new Directory(v),
58+
(e) => e is ArgumentError || e is TypeError);
59+
return;
60+
}
61+
var d = new Directory("${temp.path}/$v");
62+
futures.add(doItAsync(d.exists));
63+
futures.add(doItAsync(d.create));
64+
futures.add(doItAsync(d.delete));
7465
futures.add(doItAsync(() {
75-
d.list(recursive: v2).listen((_) {}, onError: (e) => null);
66+
return d.createTemp('tempdir').then((temp) {
67+
return temp.delete();
68+
});
7669
}));
70+
futures.add(doItAsync(() {
71+
return d.exists().then((res) {
72+
if (!res) return d.delete(recursive: true);
73+
return new Future.value(true);
74+
});
75+
}));
76+
typeMapping.forEach((k2, v2) {
77+
futures.add(doItAsync(() => d.rename(v2)));
78+
futures.add(doItAsync(() {
79+
d.list(recursive: v2).listen((_) {}, onError: (e) => null);
80+
}));
81+
});
7782
});
83+
await Future.wait(futures).then((_) => asyncEnd());
7884
});
79-
Future.wait(futures).then((_) => asyncEnd());
8085
}
8186

8287
main() {

0 commit comments

Comments
 (0)