Permalink
Cannot retrieve contributors at this time
153 lines (129 sloc)
3.7 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
codeql-action/node_modules/tmp-promise/test.js
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
const fs = require('fs') | |
const assert = require('assert') | |
const { extname } = require('path') | |
const tmp = require('.') | |
async function checkFileResult(result) { | |
assert.deepEqual(Object.keys(result).sort(), ['cleanup', 'fd', 'path']) | |
const { path, fd, cleanup } = result | |
assert.ok(typeof path === 'string') | |
assert.ok(typeof fd === 'number') | |
assert.ok(typeof cleanup === 'function') | |
// Check that the path is a fille. | |
assert.ok(fs.statSync(path).isFile()) | |
// Check that the fd is correct and points to the file. | |
const message = 'hello there!' | |
fs.writeSync(fd, message) | |
fs.fdatasyncSync(fd) | |
assert.equal(fs.readFileSync(path), message) | |
// Check that the cleanup works. | |
await cleanup() | |
assert.throws(() => fs.statSync(path)) | |
} | |
describe('file()', function() | |
{ | |
context('when called without options', function() | |
{ | |
it('creates the file, returns the expected result, and the cleanup function works', async function() | |
{ | |
const result = await tmp.file() | |
await checkFileResult(result) | |
}) | |
}) | |
context('when called with options', function() | |
{ | |
it('creates the file, returns the expected result, and the cleanup function works', async function() | |
{ | |
const prefix = 'myTmpDir_' | |
const result = await tmp.file({ prefix }) | |
await checkFileResult(result) | |
assert.ok(result.path.includes(prefix)) | |
}) | |
}) | |
it('propagates errors', async function() { | |
try { | |
await tmp.file({ dir: 'nonexistent-path' }); | |
throw Error('Expected to throw'); | |
} catch (e) { | |
assert.ok(e.message.startsWith('ENOENT: no such file or directory')); | |
} | |
}); | |
}) | |
async function checkDirResult(result) { | |
assert.deepEqual(Object.keys(result).sort(), ['cleanup', 'path']) | |
const { path, cleanup } = result | |
assert.ok(typeof path === 'string') | |
assert.ok(typeof cleanup === 'function') | |
assert.ok(fs.statSync(path).isDirectory()) | |
await cleanup() | |
assert.throws(() => fs.statSync(path)) | |
} | |
describe('dir()', function() | |
{ | |
context('when called without options', function() | |
{ | |
it('creates the directory, returns the expected result, and the cleanup function works', async function() | |
{ | |
const result = await tmp.dir() | |
await checkDirResult(result) | |
}) | |
}) | |
context('when called with options', function() | |
{ | |
it('creates the directory, returns the expected result, and the cleanup function works', async function() | |
{ | |
const prefix = 'myTmpDir_' | |
const result = await tmp.dir({ prefix }) | |
await checkDirResult(result) | |
assert.ok(result.path.includes(prefix)) | |
}) | |
}) | |
it('propagates errors', async function() { | |
try { | |
await tmp.dir({ dir: 'nonexistent-path' }); | |
throw Error('Expected to throw'); | |
} catch (e) { | |
assert.ok(e.message.startsWith('ENOENT: no such file or directory')); | |
} | |
}); | |
}) | |
describe('withFile()', function() | |
{ | |
it("file doesn't exist after going out of scope", function() | |
{ | |
var filepath | |
return tmp.withFile(function(o) | |
{ | |
filepath = o.path | |
fs.accessSync(filepath) | |
assert.strictEqual(extname(filepath), '.txt') | |
}, {discardDescriptor: true, postfix: '.txt'}) | |
.then(function() | |
{ | |
assert.throws(function() | |
{ | |
fs.accessSync(filepath) | |
}, filepath + ' still exists') | |
}) | |
}) | |
}) | |
describe('withDir()', function() | |
{ | |
it("dir doesn't exist after going out of scope", function() | |
{ | |
var filepath | |
return tmp.withDir(function(o) | |
{ | |
filepath = o.path | |
fs.accessSync(filepath) | |
assert.strictEqual(extname(filepath), '.dir') | |
}, {postfix: '.dir'}) | |
.then(function() | |
{ | |
assert.throws(function() | |
{ | |
fs.accessSync(filepath) | |
}, filepath + ' still exists') | |
}) | |
}) | |
}) |