[io/win] Allow notFound stat errors in testDriveLetterNoBackslash.
Since the test uses existing system temp directory entries that
aren't created/maintained by the test itself, they may be removed
between the two calls to statSync(). Modify the test to allow for cases
where the first statSync() returns a non-notFound result and the second
returns a notFound result.
Also check that at least one iteration of the loop had a successful
result where the statSync() result is the same for both and was not a
notFound result, as all system temp entries retrieved by listSync()
being removed before one or both statSync() calls is highly unlikely.
TEST=standalone/io/file_windows_test
Fixes: https://github.com/dart-lang/sdk/issues/61007
Cq-Include-Trybots: luci.dart.try:vm-win-release-x64-try
Change-Id: If4bb4a6f6b1e21558e447e4e5a918523c69ff044
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/437442
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
diff --git a/tests/standalone/io/file_windows_test.dart b/tests/standalone/io/file_windows_test.dart
index 89ca668..d9af890 100644
--- a/tests/standalone/io/file_windows_test.dart
+++ b/tests/standalone/io/file_windows_test.dart
@@ -26,6 +26,7 @@
// converted refer to the same thing.
void testDriveLetterNoBackslash() {
final current = Directory.current.path;
+ var allFailed = true;
for (var e in Directory.systemTemp.listSync()) {
final path = e.path;
if (path.length < 3) return;
@@ -40,12 +41,22 @@
}
}
noBackslash += path.substring(3);
- Expect.equals(
- "${Directory(noBackslash).statSync()}",
- "${Directory(path).statSync()}",
- );
+ final noBackslashStat = Directory(noBackslash).statSync();
+ final pathStat = Directory(path).statSync();
+ if (noBackslashStat.type != pathStat.type) {
+ // Since these are entries in the system temp directory, they may
+ // be removed between the two calls.
+ Expect.notEquals(FileSystemEntityType.notFound, noBackslashStat.type);
+ Expect.equals(FileSystemEntityType.notFound, pathStat.type);
+ } else {
+ Expect.stringEquals(noBackslashStat.toString(), pathStat.toString());
+ if (noBackslashStat.type != FileSystemEntityType.notFound) {
+ allFailed = false;
+ }
+ }
}
}
+ Expect.isFalse(allFailed, "no successful statSync() comparisons");
}
void testDeleteLongPathPrefix() {