95 lines
3.1 KiB
Dart
95 lines
3.1 KiB
Dart
@TestOn('browser')
|
|
import 'dart:convert';
|
|
import 'package:test/test.dart';
|
|
import 'package:web_file_system/web_file_system.dart';
|
|
|
|
void main() {
|
|
late WebFileSystem fs;
|
|
|
|
setUp(() async {
|
|
// Tests run in parallel in browser often sharing context, so use unique paths.
|
|
fs = WebFileSystem();
|
|
});
|
|
|
|
group('Troubleshooting NotFoundError', () {
|
|
test('Temp directory creation and persistence', () async {
|
|
print('DEBUG: creating temp dir');
|
|
final tempDir = await fs.systemTempDirectory.createTemp('debug_test_');
|
|
print('DEBUG: Created temp dir at ${tempDir.path}');
|
|
|
|
expect(await tempDir.exists(), isTrue);
|
|
|
|
final file = tempDir.childFile('test.txt');
|
|
await file.writeAsString('Persistence Check');
|
|
|
|
print('DEBUG: checking existence immediately');
|
|
expect(await file.exists(), isTrue);
|
|
expect(await file.readAsString(), equals('Persistence Check'));
|
|
|
|
// Wait a bit to simulate pipeline delays
|
|
await Future.delayed(const Duration(milliseconds: 500));
|
|
|
|
print('DEBUG: checking existence after delay');
|
|
expect(await file.readAsString(), equals('Persistence Check'));
|
|
|
|
// Cleanup
|
|
await tempDir.delete(recursive: true);
|
|
print('DEBUG: deleted temp dir');
|
|
expect(await file.exists(), isFalse);
|
|
});
|
|
|
|
test('Deep copy behavior verification', () async {
|
|
final srcDir = await fs.systemTempDirectory.createTemp('src_');
|
|
final destDir = await fs.systemTempDirectory.createTemp('dest_');
|
|
|
|
final srcFile = srcDir.childFile('source.dat');
|
|
// Write some substantial data
|
|
final data = utf8.encode('Essential Data for Export');
|
|
await srcFile.writeAsBytes(data);
|
|
|
|
print('DEBUG: Source file written to ${srcFile.path}');
|
|
|
|
final destPath = destDir.childFile('copy.dat').path;
|
|
print('DEBUG: Copying to $destPath');
|
|
|
|
final copiedFile = await srcFile.copy(destPath);
|
|
|
|
print('DEBUG: Copy complete');
|
|
expect(await copiedFile.exists(), isTrue);
|
|
expect(await copiedFile.readAsBytes(), equals(data));
|
|
|
|
// Now delete source
|
|
print('DEBUG: Deleting source file');
|
|
await srcFile.delete();
|
|
expect(await srcFile.exists(), isFalse);
|
|
|
|
// Verify copy still exists and is readable (Deep Copy Check)
|
|
print('DEBUG: Verifying copy after source deletion');
|
|
expect(await copiedFile.exists(), isTrue);
|
|
try {
|
|
final copyData = await copiedFile.readAsBytes();
|
|
expect(copyData, equals(data));
|
|
print('DEBUG: Deep copy verified!');
|
|
} catch (e) {
|
|
print('ERROR: Deep copy failed! Reading copy caused error: $e');
|
|
rethrow;
|
|
}
|
|
});
|
|
|
|
test('Concurrent Write/Read stress', () async {
|
|
final dir = await fs.systemTempDirectory.createTemp('stress_');
|
|
final file = dir.childFile('stress.txt');
|
|
|
|
// Write
|
|
await file.writeAsString('Initial');
|
|
|
|
// Rapidly update
|
|
for (int i = 0; i < 10; i++) {
|
|
await file.writeAsString('Update $i');
|
|
final content = await file.readAsString();
|
|
expect(content, equals('Update $i'));
|
|
}
|
|
});
|
|
});
|
|
}
|