1.24.0 • Published 2 years ago

filesystem-sandbox v1.24.0

Weekly downloads
5
License
ISC
Repository
github
Last release
2 years ago

filesystem-sandbox

Test

npm

JavaScript module to provide (insecure) filesystem sandboxes for testing

Why?

Because I've needed to write tests which do file I/O and I want an easy way to do that and clean up afterwards.

Usage

Creation

// create a sandbox in a folder under your repo dir:
const sandbox1 = await Sandbox.create();

// create a sandbox somehere specific
const sandbox2 = await Sandbox.create("/tmp");

Cleanup

const sandbox1 = await Sandbox.create();
const sandbox2 = await Sandbox.create();
const sandbox3 = await Sandbox.create();

// clean up an individual sandbox
await sandbox1.destroy();

// clean up all sandboxes seen in this session, eg in `afterEach`
await Sandbox.destroyAll();

// precautionary: destroy any sandboxes in the default location
// -> useful as a beforeAll in single test (beware using in jest
//    with concurrent testing!) or in your jest setup to clean
//    out remnants from prior interrupted sessions. Will not destroy
//    sandboxes in custom locations
await Sandbox.destroyAny();

Path resolution

// get the full path to a file for operations not catered for
// by the sandbox:
const sandbox = await Sandbox.create();
const fullpath = sandbox.fullPathFor("some-file.txt");

File I/O

const sandbox = Sandbox.create();
// write a binary file
const buf1 = Buffer.from([1,2,3]);
await sandbox.writeFile("binary.blob", buf1);
// write a text file
await sandbox.writeFile("hello.txt", "hello world");
// read a text file
const text = await sandbox.readTextFile("hello.txt");
// read a binary file
const data = await sandbox.readFile("binary.blob");

File operations

const sandbox = Sandbox.create();
sandbox.writeFile("hello.txt", "hello world");
const exists = await sandbox.fileExists("hello.txt"); // true
const missing = await sandbox.folderExists("hello.txt"); // false: hello.txt is a file
const stat = await sandbox.stat("hello.txt"); // get fulll stat info
const noStats = await sandbox.stat("missing"); // you'll get null
1.23.0

2 years ago

1.24.0

2 years ago

1.21.0

2 years ago

1.22.0

2 years ago

1.19.1

4 years ago

1.20.0

4 years ago

1.19.0

4 years ago

1.18.0

4 years ago

1.17.0

4 years ago

1.16.0

4 years ago

1.15.0

4 years ago

1.14.0

4 years ago

1.13.0

4 years ago

1.12.0

4 years ago

1.11.0

4 years ago

1.10.0

4 years ago

1.9.0

4 years ago

1.8.0

4 years ago

1.7.0

4 years ago

1.6.4

4 years ago

1.6.3

4 years ago

1.3.0

4 years ago

1.2.0

4 years ago

1.1.1

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.0.1

4 years ago