X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=node_modules%2Ftemp%2Ftest%2Ftemp-test.js;fp=node_modules%2Ftemp%2Ftest%2Ftemp-test.js;h=c75550996c9cde396b55bc66b6290ac13761f4e6;hp=0000000000000000000000000000000000000000;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad diff --git a/node_modules/temp/test/temp-test.js b/node_modules/temp/test/temp-test.js new file mode 100644 index 000000000..c75550996 --- /dev/null +++ b/node_modules/temp/test/temp-test.js @@ -0,0 +1,99 @@ +var assert = require('assert'); +var path = require('path'); +var fs = require('fs'); +var util = require('util'); + +var temp = require('../lib/temp'); +temp.track(); + +var existsSync = function(path){ + try { + fs.statSync(path); + return true; + } catch (e){ + return false; + } +}; + +// Use path.exists for 0.6 if necessary +var safeExists = fs.exists || path.exists; + +var mkdirFired = false; +var mkdirPath = null; +temp.mkdir('foo', function(err, tpath) { + mkdirFired = true; + assert.ok(!err, "temp.mkdir did not execute without errors"); + assert.ok(path.basename(tpath).slice(0, 3) == 'foo', 'temp.mkdir did not use the prefix'); + assert.ok(existsSync(tpath), 'temp.mkdir did not create the directory'); + + fs.writeFileSync(path.join(tpath, 'a file'), 'a content'); + temp.cleanupSync(); + assert.ok(!existsSync(tpath), 'temp.cleanupSync did not remove the directory'); + + mkdirPath = tpath; +}); + +var openFired = false; +var openPath = null; +temp.open('bar', function(err, info) { + openFired = true; + assert.equal('object', typeof(info), "temp.open did not invoke the callback with the err and info object"); + assert.equal('number', typeof(info.fd), 'temp.open did not invoke the callback with an fd'); + fs.writeSync(info.fd, 'foo'); + fs.closeSync(info.fd); + assert.equal('string', typeof(info.path), 'temp.open did not invoke the callback with a path'); + assert.ok(existsSync(info.path), 'temp.open did not create a file'); + + temp.cleanupSync(); + assert.ok(!existsSync(info.path), 'temp.cleanupSync did not remove the file'); + + openPath = info.path; +}); + + +var stream = temp.createWriteStream('baz'); +assert.ok(stream instanceof fs.WriteStream, 'temp.createWriteStream did not invoke the callback with the err and stream object'); +stream.write('foo'); +stream.end("More text here\nand more..."); +assert.ok(existsSync(stream.path), 'temp.createWriteStream did not create a file'); + +var tempDir = temp.mkdirSync("foobar"); +assert.ok(existsSync(tempDir), 'temp.mkdirTemp did not create a directory'); + +// cleanupSync() +temp.cleanupSync(); +assert.ok(!existsSync(stream.path), 'temp.cleanupSync did not remove the createWriteStream file'); +assert.ok(!existsSync(tempDir), 'temp.cleanupSync did not remove the mkdirSync directory'); + +// cleanup() +var cleanupFired = false; +// Make a temp file just to cleanup +var tempFile = temp.openSync(); +fs.writeSync(tempFile.fd, 'foo'); +fs.closeSync(tempFile.fd); +assert.ok(existsSync(tempFile.path), 'temp.openSync did not create a file for cleanup'); + +// run cleanup() +temp.cleanup(function(err, counts) { + cleanupFired = true; + assert.ok(!err, 'temp.cleanup did not run without encountering an error'); + assert.ok(!existsSync(tempFile.path), 'temp.cleanup did not remove the openSync file for cleanup'); + assert.equal(1, counts.files, 'temp.cleanup did not report the correct removal statistics'); +}); + +var tempPath = temp.path(); +assert.ok(path.dirname(tempPath) === temp.dir, "temp.path does not work in default os temporary directory"); + +tempPath = temp.path({dir: process.cwd()}); +assert.ok(path.dirname(tempPath) === process.cwd(), "temp.path does not work in user-provided temporary directory"); + +for (var i=0; i <= 10; i++) { + temp.openSync(); +} +assert.equal(process.listeners('exit').length, 1, 'temp created more than one listener for exit'); + +process.addListener('exit', function() { + assert.ok(mkdirFired, "temp.mkdir callback did not fire"); + assert.ok(openFired, "temp.open callback did not fire"); + assert.ok(cleanupFired, "temp.cleanup callback did not fire"); +});