Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
sindresorhus committed Nov 5, 2020
1 parent 064e92d commit cf02568
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 86 deletions.
2 changes: 0 additions & 2 deletions package.json
Expand Up @@ -25,8 +25,6 @@
"mkdirp",
"make",
"directories",
"dir",
"dirs",
"folders",
"directory",
"folder",
Expand Down
File renamed without changes.
86 changes: 43 additions & 43 deletions test/async.js
Expand Up @@ -4,95 +4,95 @@ import test from 'ava';
import tempy from 'tempy';
import gracefulFs from 'graceful-fs';
import semver from 'semver';
import {getFixture, assertDirectory, customFsOptions} from './helpers/util';
import makeDir from '..';
import {getFixture, assertDirectory, customFsOptions} from './_util';
import makeDirectory from '..';

test('main', async t => {
const dir = getFixture();
const madeDir = await makeDir(dir);
t.true(madeDir.length > 0);
assertDirectory(t, madeDir);
const directory = getFixture();
const madeDirectory = await makeDirectory(directory);
t.true(madeDirectory.length > 0);
assertDirectory(t, madeDirectory);
});

test('`fs` option - graceful-fs', async t => {
const dir = getFixture();
await makeDir(dir, {fs: gracefulFs});
assertDirectory(t, dir);
const directory = getFixture();
await makeDirectory(directory, {fs: gracefulFs});
assertDirectory(t, directory);
});

test('`fs` option - custom', async t => {
const dir = getFixture();
const madeDir = await makeDir(dir, customFsOptions);
t.true(madeDir.length > 0);
assertDirectory(t, madeDir);
const directory = getFixture();
const madeDirectory = await makeDirectory(directory, customFsOptions);
t.true(madeDirectory.length > 0);
assertDirectory(t, madeDirectory);
});

test('`mode` option', async t => {
const dir = getFixture();
const directory = getFixture();
const mode = 0o744;
await makeDir(dir, {mode});
assertDirectory(t, dir, mode);
await makeDirectory(directory, {mode});
assertDirectory(t, directory, mode);

// Ensure it's writable
await makeDir(dir);
assertDirectory(t, dir, mode);
await makeDirectory(directory);
assertDirectory(t, directory, mode);
});

test('dir exists', async t => {
const dir = await makeDir(tempy.directory());
t.true(dir.length > 0);
assertDirectory(t, dir);
const directory = await makeDirectory(tempy.directory());
t.true(directory.length > 0);
assertDirectory(t, directory);
});

test('file exits', async t => {
const fp = tempy.file();
fs.writeFileSync(fp, '');
await t.throwsAsync(makeDir(fp), {code: 'EEXIST'});
const filePath = tempy.file();
fs.writeFileSync(filePath, '');
await t.throwsAsync(makeDirectory(filePath), {code: 'EEXIST'});
});

test('parent dir is file', async t => {
const fp = tempy.file();
fs.writeFileSync(fp, '');
const error = await t.throwsAsync(makeDir(fp + '/sub/dir'));
const filePath = tempy.file();
fs.writeFileSync(filePath, '');
const error = await t.throwsAsync(makeDirectory(filePath + '/sub/dir'));
t.regex(error.code, /ENOTDIR|EEXIST/);
});

test('root dir', async t => {
if (process.platform === 'win32') {
// Do not assume that `C:` is current drive
await t.throwsAsync(makeDir('/'), {
await t.throwsAsync(makeDirectory('/'), {
code: 'EPERM',
message: /operation not permitted, mkdir '[A-Za-z]:\\'/
});
} else {
const mode = fs.statSync('/').mode & 0o777;
const dir = await makeDir('/');
t.true(dir.length > 0);
assertDirectory(t, dir, mode);
const directory = await makeDirectory('/');
t.true(directory.length > 0);
assertDirectory(t, directory, mode);
}
});

test('race two', async t => {
const dir = getFixture();
await Promise.all([makeDir(dir), makeDir(dir)]);
assertDirectory(t, dir);
const directory = getFixture();
await Promise.all([makeDirectory(directory), makeDirectory(directory)]);
assertDirectory(t, directory);
});

test('race many', async t => {
const dir = getFixture();
const directory = getFixture();
const all = [];

for (let i = 0; i < 100; i++) {
all.push(makeDir(dir));
all.push(makeDirectory(directory));
}

await Promise.all(all);
assertDirectory(t, dir);
assertDirectory(t, directory);
});

test('handles null bytes in path', async t => {
const dir = path.join(tempy.directory(), 'foo\u0000bar');
const error = await t.throwsAsync(makeDir(dir), /null bytes/);
const directory = path.join(tempy.directory(), 'foo\u0000bar');
const error = await t.throwsAsync(makeDirectory(directory), /null bytes/);
t.regex(error.code, /ERR_INVALID_ARG_VALUE|ENOENT/);
});

Expand All @@ -104,11 +104,11 @@ test.serial('handles invalid path characters', async t => {
});

// Also to please `nyc`
await makeDir(tempy.directory());
await makeDirectory(tempy.directory());

const dir = path.join(tempy.directory(), 'foo"bar');
const directory = path.join(tempy.directory(), 'foo"bar');

await t.throwsAsync(makeDir(dir), {
await t.throwsAsync(makeDirectory(directory), {
code: 'EINVAL',
message: /invalid characters/
});
Expand All @@ -129,6 +129,6 @@ if (process.platform === 'win32') {
};

// We assume the `o:\` drive doesn't exist on Windows.
await t.throwsAsync(makeDir('o:\\foo'), expectedError);
await t.throwsAsync(makeDirectory('o:\\foo'), expectedError);
});
}
82 changes: 41 additions & 41 deletions test/sync.js
Expand Up @@ -4,59 +4,59 @@ import test from 'ava';
import tempy from 'tempy';
import gracefulFs from 'graceful-fs';
import semver from 'semver';
import {getFixture, assertDirectory, customFsOptions} from './helpers/util';
import makeDir from '..';
import {getFixture, assertDirectory, customFsOptions} from './_util';
import makeDirectory from '..';

test('main', t => {
const dir = getFixture();
const madeDir = makeDir.sync(dir);
t.true(madeDir.length > 0);
assertDirectory(t, madeDir);
const directory = getFixture();
const madeDirectory = makeDirectory.sync(directory);
t.true(madeDirectory.length > 0);
assertDirectory(t, madeDirectory);
});

test('`fs` option - graceful-fs', t => {
const dir = getFixture();
makeDir.sync(dir, {fs: gracefulFs});
assertDirectory(t, dir);
const directory = getFixture();
makeDirectory.sync(directory, {fs: gracefulFs});
assertDirectory(t, directory);
});

test('`fs` option - custom', t => {
const dir = getFixture();
const madeDir = makeDir.sync(dir, customFsOptions);
t.true(madeDir.length > 0);
assertDirectory(t, madeDir);
const directory = getFixture();
const madeDirectory = makeDirectory.sync(directory, customFsOptions);
t.true(madeDirectory.length > 0);
assertDirectory(t, madeDirectory);
});

test('`mode` option', t => {
const dir = getFixture();
const directory = getFixture();
const mode = 0o744;
makeDir.sync(dir, {mode});
assertDirectory(t, dir, mode);
makeDirectory.sync(directory, {mode});
assertDirectory(t, directory, mode);

// Ensure it's writable
makeDir.sync(dir);
assertDirectory(t, dir, mode);
makeDirectory.sync(directory);
assertDirectory(t, directory, mode);
});

test('dir exists', t => {
const dir = makeDir.sync(tempy.directory());
t.true(dir.length > 0);
assertDirectory(t, dir);
const directory = makeDirectory.sync(tempy.directory());
t.true(directory.length > 0);
assertDirectory(t, directory);
});

test('file exits', t => {
const fp = tempy.file();
fs.writeFileSync(fp, '');
const filePath = tempy.file();
fs.writeFileSync(filePath, '');
t.throws(() => {
makeDir.sync(fp);
makeDirectory.sync(filePath);
}, {code: 'EEXIST'});
});

test('parent dir is file', t => {
const fp = tempy.file();
fs.writeFileSync(fp, '');
const filePath = tempy.file();
fs.writeFileSync(filePath, '');
const error = t.throws(() => {
makeDir.sync(fp + '/sub/dir');
makeDirectory.sync(filePath + '/sub/dir');
});
t.regex(error.code, /ENOTDIR|EEXIST/);
});
Expand All @@ -65,41 +65,41 @@ test('root dir', t => {
if (process.platform === 'win32') {
// Do not assume that `C:` is current drive
t.throws(() => {
makeDir.sync('/');
makeDirectory.sync('/');
}, {
code: 'EPERM',
message: /operation not permitted, mkdir '[A-Za-z]:\\'/
});
} else {
const mode = fs.statSync('/').mode & 0o777;
const dir = makeDir.sync('/');
t.true(dir.length > 0);
assertDirectory(t, dir, mode);
const directory = makeDirectory.sync('/');
t.true(directory.length > 0);
assertDirectory(t, directory, mode);
}
});

test('race two', t => {
const dir = getFixture();
makeDir.sync(dir);
makeDir.sync(dir);
assertDirectory(t, dir);
const directory = getFixture();
makeDirectory.sync(directory);
makeDirectory.sync(directory);
assertDirectory(t, directory);
});

test('race many', t => {
const dir = getFixture();
const directory = getFixture();

for (let i = 0; i < 100; i++) {
makeDir.sync(dir);
makeDirectory.sync(directory);
}

assertDirectory(t, dir);
assertDirectory(t, directory);
});

test('handles null bytes in path', t => {
const dir = path.join(tempy.directory(), 'foo\u0000bar');
const directory = path.join(tempy.directory(), 'foo\u0000bar');

const error = t.throws(() => {
makeDir.sync(dir);
makeDirectory.sync(directory);
}, /null bytes/);
t.regex(error.code, /ERR_INVALID_ARG_VALUE|ENOENT/);
});
Expand All @@ -116,7 +116,7 @@ if (process.platform === 'win32') {

// We assume the `o:\` drive doesn't exist on Windows.
t.throws(() => {
makeDir.sync('o:\\foo');
makeDirectory.sync('o:\\foo');
}, expectedError);
});
}

0 comments on commit cf02568

Please sign in to comment.