]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/write-file-atomic/test/basic.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / write-file-atomic / test / basic.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/write-file-atomic/test/basic.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/write-file-atomic/test/basic.js
new file mode 100644 (file)
index 0000000..13b9719
--- /dev/null
@@ -0,0 +1,97 @@
+'use strict'
+var test = require('tap').test
+var requireInject = require('require-inject')
+var writeFileAtomic = requireInject('../index', {
+  'graceful-fs': {
+    writeFile: function (tmpfile, data, options, cb) {
+      if (/nowrite/.test(tmpfile)) return cb(new Error('ENOWRITE'))
+      cb()
+    },
+    chown: function (tmpfile, uid, gid, cb) {
+      if (/nochown/.test(tmpfile)) return cb(new Error('ENOCHOWN'))
+      cb()
+    },
+    rename: function (tmpfile, filename, cb) {
+      if (/norename/.test(tmpfile)) return cb(new Error('ENORENAME'))
+      cb()
+    },
+    unlink: function (tmpfile, cb) {
+      if (/nounlink/.test(tmpfile)) return cb(new Error('ENOUNLINK'))
+      cb()
+    },
+    writeFileSync: function (tmpfile, data, options) {
+      if (/nowrite/.test(tmpfile)) throw new Error('ENOWRITE')
+    },
+    chownSync: function (tmpfile, uid, gid) {
+      if (/nochown/.test(tmpfile)) throw new Error('ENOCHOWN')
+    },
+    renameSync: function (tmpfile, filename) {
+      if (/norename/.test(tmpfile)) throw new Error('ENORENAME')
+    },
+    unlinkSync: function (tmpfile) {
+      if (/nounlink/.test(tmpfile)) throw new Error('ENOUNLINK')
+    }
+  }
+})
+var writeFileAtomicSync = writeFileAtomic.sync
+
+test('async tests', function (t) {
+  t.plan(7)
+  writeFileAtomic('good', 'test', {mode: '0777'}, function (err) {
+    t.notOk(err, 'No errors occur when passing in options')
+  })
+  writeFileAtomic('good', 'test', function (err) {
+    t.notOk(err, 'No errors occur when NOT passing in options')
+  })
+  writeFileAtomic('nowrite', 'test', function (err) {
+    t.is(err.message, 'ENOWRITE', 'writeFile failures propagate')
+  })
+  writeFileAtomic('nochown', 'test', {chown: {uid: 100, gid: 100}}, function (err) {
+    t.is(err.message, 'ENOCHOWN', 'Chown failures propagate')
+  })
+  writeFileAtomic('nochown', 'test', function (err) {
+    t.notOk(err, 'No attempt to chown when no uid/gid passed in')
+  })
+  writeFileAtomic('norename', 'test', function (err) {
+    t.is(err.message, 'ENORENAME', 'Rename errors propagate')
+  })
+  writeFileAtomic('norename nounlink', 'test', function (err) {
+    t.is(err.message, 'ENORENAME', 'Failure to unlink the temp file does not clobber the original error')
+  })
+})
+
+test('sync tests', function (t) {
+  t.plan(7)
+  var throws = function (shouldthrow, msg, todo) {
+    var err
+    try { todo() } catch (e) { err = e }
+    t.is(shouldthrow, err.message, msg)
+  }
+  var noexception = function (msg, todo) {
+    var err
+    try { todo() } catch (e) { err = e }
+    t.notOk(err, msg)
+  }
+
+  noexception('No errors occur when passing in options', function () {
+    writeFileAtomicSync('good', 'test', {mode: '0777'})
+  })
+  noexception('No errors occur when NOT passing in options', function () {
+    writeFileAtomicSync('good', 'test')
+  })
+  throws('ENOWRITE', 'writeFile failures propagate', function () {
+    writeFileAtomicSync('nowrite', 'test')
+  })
+  throws('ENOCHOWN', 'Chown failures propagate', function () {
+    writeFileAtomicSync('nochown', 'test', {chown: {uid: 100, gid: 100}})
+  })
+  noexception('No attempt to chown when no uid/gid passed in', function () {
+    writeFileAtomicSync('nochown', 'test')
+  })
+  throws('ENORENAME', 'Rename errors propagate', function () {
+    writeFileAtomicSync('norename', 'test')
+  })
+  throws('ENORENAME', 'Failure to unlink the temp file does not clobber the original error', function () {
+    writeFileAtomicSync('norename nounlink', 'test')
+  })
+})