Flesh out ChrootFileSystem (#35)

This adds tests specific to ChrootFileSystem. These tests
exposed some design flaws in the previous implementation
of ChrootFileSystem, so this change includes some pretty
substantive changes to the implementation in order to bring
it up to spec.
7 files changed
tree: ed2955d2d2e8f0d012f81f54c68aaef6ced95785
  1. contrib/
  2. lib/
  3. test/
  4. tool/
  5. .analysis_options
  6. .gitignore
  7. .travis.yml
  8. CHANGELOG.md
  9. LICENSE
  10. pubspec.yaml
  11. README.md
README.md

Build Status Coverage Status

File

A generic file system abstraction for Dart.

This package is currently experimental and subject to change

Like dart:io, package:file supplies a rich Dart-idiomatic API for accessing a file system.

Unlike dart:io, package:file:

  • Does not mix synchronous and asynchronous API in one. It is up to users to choose one, the other, or both.
  • Has explicit factory classes for different implementations.
  • Can be used to implement custom file systems.
  • Comes with in-memory implementation out-of-the-box, making it super-easy to test code that works with the file system.
  • Allows using multiple file systems simultaneously. A file system is a first-class object. Instantiate however many you want and use them all.

Usage

Implement your own custom file system:

import 'package:file/file.dart';

class FooBarFileSystem implements FileSystem { ... }

Use the in-memory file system:

import 'package:file/file.dart';

var fs = new InMemoryFileSystem();

Use the local file system (requires dart:io access):

import 'package:file/io.dart';

var fs = const LocalFileSystem();

The synchronous counterparts can be imported from:

// API and in-memory implementation
import `package:file/sync.dart`;
// Implementation based on "dart:io"
import `package:file/sync_io.dart`;