Comments (2)
I would like to put my vote behind this one as:
I'm trying to use the MemoryFileSystem to create a transient file system for unit tests that need to create/delete files and directories.
The package version is:
file: ^5.1.0
I have created a class TestZone which uses IOOverride and I'm using the MemoryFileSystem as target for all IO overrides.
import 'dart:io';
import 'package:file/memory.dart';
class TestZone {
MemoryFileSystem _fs;
TestZone({
FileSystemStyle style = FileSystemStyle.posix,
MemoryFileSystem fileSystem,
}) {
if (fileSystem == null) {
_fs = MemoryFileSystem(style: style);
} else {
_fs = fileSystem;
}
}
void run<R>(R Function() body) {
IOOverrides.runZoned(
body,
createDirectory: (String path) => _fs.directory(path),
createFile: (String path) => _fs.file(path),
createLink: (String path) => _fs.link(path),
getCurrentDirectory: () => _fs.currentDirectory,
setCurrentDirectory: (String path) => _fs.currentDirectory = path,
getSystemTempDirectory: () => _fs.systemTempDirectory,
stat: (String path) => _fs.stat(path),
statSync: (String path) => _fs.statSync(path),
fseIdentical: (String p1, String p2) => _fs.identical(p1, p2),
fseIdenticalSync: (String p1, String p2) => _fs.identicalSync(p1, p2),
fseGetType: (String path, bool followLinks) =>
_fs.type(path, followLinks: followLinks),
fseGetTypeSync: (String path, bool followLinks) =>
typeSync(path, followLinks),
fsWatch: (String a, int b, bool c) =>
throw UnsupportedError('unsupported'),
fsWatchIsSupported: () => _fs.isWatchSupported
);
}
FileSystemEntityType typeSync(String path, bool followLinks) {
path = path.substring(0, path.length - 1);
return _fs.typeSync(path, followLinks: followLinks);
}
}
The problem is that the MemoryFileSystem uses the class MemoryFile which does not have an implementation of openSync:
From the file memory_file.dart.
@override
io.RandomAccessFile openSync({io.FileMode mode = io.FileMode.read}) =>
throw UnimplementedError('TODO');
This omission means that you can't just drop in a IOOverride and expect your code to work as normal.
I'm trying to implement a package that could be used by any developer that writes to the file system during unit tests and wants to protect their local file system from corruption.
This singular omission would appear to make this impossible.
from file.dart.
Just adding a drive-by comment to signal interest.
Was hoping to use this library to speed up an image analysis component I'm working on.
from file.dart.
Related Issues (20)
- The system was unable to move the file to a different disk drive
- MemoryFileSystem is 10x slower to write than LocalFileSystem HOT 6
- What is the best way to check in a unit-test if all randomaccessfile objects are closed properly?
- Best way to close the LocalFileSystem HOT 1
- File created via MemoryFileSystem is implemented differently from dart:io File HOT 2
- Please add tags for released versions
- FileSystem.directory(...).list(...) and listSync(...) fail on self-linked directories HOT 3
- CI failing on windows (due to a failing test - succeedsIfDestinationIsEmptyDirectory) HOT 1
- MemoryFileSystem.isDirectory(r'\') crashes HOT 2
- move this package into the google.dev publisher? HOT 5
- Seeing issues when an older package:file is run on a newer SDK HOT 12
- Migrate mixins to be mixin declarations HOT 8
- Runtime exception on web when trying to DirectoryNode.clock HOT 3
- MemoryFileSystem addStream misbehaves on error HOT 1
- Local and memory implementation throw different exceptions
- Any breaking changes introduced in 7.0.0?
- Filenames encoded on Gnome's Google Drive
- implement for FileSystemOp.listSync
- android.system.ErrnoException: open failed: ENOENT (No such file or directory)
- `File.lastModifiedSync()` incorrect for newly created file in `MemoryFileSystem` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from file.dart.