Version 1
[yaffs-website] / node_modules / temp / test / temp-test.js
diff --git a/node_modules/temp/test/temp-test.js b/node_modules/temp/test/temp-test.js
new file mode 100644 (file)
index 0000000..c755509
--- /dev/null
@@ -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");
+});