summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/test-fs.js
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/test/test-fs.js')
-rw-r--r--addon-sdk/source/test/test-fs.js621
1 files changed, 0 insertions, 621 deletions
diff --git a/addon-sdk/source/test/test-fs.js b/addon-sdk/source/test/test-fs.js
deleted file mode 100644
index ed26ca3e3..000000000
--- a/addon-sdk/source/test/test-fs.js
+++ /dev/null
@@ -1,621 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-const { pathFor, platform } = require("sdk/system");
-const fs = require("sdk/io/fs");
-const url = require("sdk/url");
-const path = require("sdk/fs/path");
-const { defer } = require("sdk/core/promise");
-const { Buffer } = require("sdk/io/buffer");
-const { is } = require("sdk/system/xul-app");
-
-// Use profile directory to list / read / write files.
-const profilePath = pathFor("ProfD");
-const fileNameInProfile = "compatibility.ini";
-const dirNameInProfile = "extensions";
-const filePathInProfile = path.join(profilePath, fileNameInProfile);
-const dirPathInProfile = path.join(profilePath, dirNameInProfile);
-const mkdirPath = path.join(profilePath, "sdk-fixture-mkdir");
-const writePath = path.join(profilePath, "sdk-fixture-writeFile");
-const unlinkPath = path.join(profilePath, "sdk-fixture-unlink");
-const truncatePath = path.join(profilePath, "sdk-fixture-truncate");
-const renameFromPath = path.join(profilePath, "sdk-fixture-rename-from");
-const renameToPath = path.join(profilePath, "sdk-fixture-rename-to");
-const chmodPath = path.join(profilePath, "sdk-fixture-chmod");
-
-const profileEntries = [
- "compatibility.ini",
- "extensions",
- "prefs.js"
- // There are likely to be a lot more files but we can"t really
- // on consistent list so we limit to this.
-];
-
-const isWindows = platform.indexOf('win') === 0;
-
-exports["test readdir"] = function(assert, end) {
- var async = false;
- fs.readdir(profilePath, function(error, entries) {
- assert.ok(async, "readdir is async");
- assert.ok(!error, "there is no error when reading directory");
- assert.ok(profileEntries.length <= entries.length,
- "got at least number of entries we expect");
- assert.ok(profileEntries.every(function(entry) {
- return entries.indexOf(entry) >= 0;
- }), "all profiles are present");
- end();
- });
-
- async = true;
-};
-
-exports["test readdir error"] = function(assert, end) {
- var async = false;
- var path = profilePath + "-does-not-exists";
- fs.readdir(path, function(error, entries) {
- assert.ok(async, "readdir is async");
- assert.equal(error.message, "ENOENT, readdir " + path);
- assert.equal(error.code, "ENOENT", "error has a code");
- assert.equal(error.path, path, "error has a path");
- assert.equal(error.errno, 34, "error has a errno");
- end();
- });
-
- async = true;
-};
-
-exports["test readdirSync"] = function(assert) {
- var async = false;
- var entries = fs.readdirSync(profilePath);
- assert.ok(profileEntries.length <= entries.length,
- "got at least number of entries we expect");
- assert.ok(profileEntries.every(function(entry) {
- return entries.indexOf(entry) >= 0;
- }), "all profiles are present");
-};
-
-exports["test readdirSync error"] = function(assert) {
- var async = false;
- var path = profilePath + "-does-not-exists";
- try {
- fs.readdirSync(path);
- assert.fail(Error("No error was thrown"));
- } catch (error) {
- assert.equal(error.message, "ENOENT, readdir " + path);
- assert.equal(error.code, "ENOENT", "error has a code");
- assert.equal(error.path, path, "error has a path");
- assert.equal(error.errno, 34, "error has a errno");
- }
-};
-
-exports["test readFile"] = function(assert, end) {
- let async = false;
- fs.readFile(filePathInProfile, function(error, content) {
- assert.ok(async, "readFile is async");
- assert.ok(!error, "error is falsy");
-
- assert.ok(Buffer.isBuffer(content), "readFile returns buffer");
- assert.ok(typeof(content.length) === "number", "buffer has length");
- assert.ok(content.toString().indexOf("[Compatibility]") >= 0,
- "content contains expected data");
- end();
- });
- async = true;
-};
-
-exports["test readFile error"] = function(assert, end) {
- let async = false;
- let path = filePathInProfile + "-does-not-exists";
- fs.readFile(path, function(error, content) {
- assert.ok(async, "readFile is async");
- assert.equal(error.message, "ENOENT, open " + path);
- assert.equal(error.code, "ENOENT", "error has a code");
- assert.equal(error.path, path, "error has a path");
- assert.equal(error.errno, 34, "error has a errno");
-
- end();
- });
- async = true;
-};
-
-exports["test readFileSync not implemented"] = function(assert) {
- let buffer = fs.readFileSync(filePathInProfile);
- assert.ok(buffer.toString().indexOf("[Compatibility]") >= 0,
- "read content");
-};
-
-exports["test fs.stat file"] = function(assert, end) {
- let async = false;
- let path = filePathInProfile;
- fs.stat(path, function(error, stat) {
- assert.ok(async, "fs.stat is async");
- assert.ok(!error, "error is falsy");
- assert.ok(!stat.isDirectory(), "not a dir");
- assert.ok(stat.isFile(), "is a file");
- assert.ok(!stat.isSymbolicLink(), "isn't a symlink");
- assert.ok(typeof(stat.size) === "number", "size is a number");
- assert.ok(stat.exists === true, "file exists");
- assert.ok(typeof(stat.isBlockDevice()) === "boolean");
- assert.ok(typeof(stat.isCharacterDevice()) === "boolean");
- assert.ok(typeof(stat.isFIFO()) === "boolean");
- assert.ok(typeof(stat.isSocket()) === "boolean");
- assert.ok(typeof(stat.hidden) === "boolean");
- assert.ok(typeof(stat.writable) === "boolean")
- assert.ok(stat.readable === true);
-
- end();
- });
- async = true;
-};
-
-exports["test fs.stat dir"] = function(assert, end) {
- let async = false;
- let path = dirPathInProfile;
- fs.stat(path, function(error, stat) {
- assert.ok(async, "fs.stat is async");
- assert.ok(!error, "error is falsy");
- assert.ok(stat.isDirectory(), "is a dir");
- assert.ok(!stat.isFile(), "not a file");
- assert.ok(!stat.isSymbolicLink(), "isn't a symlink");
- assert.ok(typeof(stat.size) === "number", "size is a number");
- assert.ok(stat.exists === true, "file exists");
- assert.ok(typeof(stat.isBlockDevice()) === "boolean");
- assert.ok(typeof(stat.isCharacterDevice()) === "boolean");
- assert.ok(typeof(stat.isFIFO()) === "boolean");
- assert.ok(typeof(stat.isSocket()) === "boolean");
- assert.ok(typeof(stat.hidden) === "boolean");
- assert.ok(typeof(stat.writable) === "boolean")
- assert.ok(typeof(stat.readable) === "boolean");
-
- end();
- });
- async = true;
-};
-
-exports["test fs.stat error"] = function(assert, end) {
- let async = false;
- let path = filePathInProfile + "-does-not-exists";
- fs.stat(path, function(error, stat) {
- assert.ok(async, "fs.stat is async");
- assert.equal(error.message, "ENOENT, stat " + path);
- assert.equal(error.code, "ENOENT", "error has a code");
- assert.equal(error.path, path, "error has a path");
- assert.equal(error.errno, 34, "error has a errno");
-
- end();
- });
- async = true;
-};
-
-exports["test fs.exists NO"] = function(assert, end) {
- let async = false
- let path = filePathInProfile + "-does-not-exists";
- fs.exists(path, function(error, value) {
- assert.ok(async, "fs.exists is async");
- assert.ok(!error, "error is falsy");
- assert.ok(!value, "file does not exists");
- end();
- });
- async = true;
-};
-
-exports["test fs.exists YES"] = function(assert, end) {
- let async = false
- let path = filePathInProfile
- fs.exists(path, function(error, value) {
- assert.ok(async, "fs.exists is async");
- assert.ok(!error, "error is falsy");
- assert.ok(value, "file exists");
- end();
- });
- async = true;
-};
-
-exports["test fs.exists NO"] = function(assert, end) {
- let async = false
- let path = filePathInProfile + "-does-not-exists";
- fs.exists(path, function(error, value) {
- assert.ok(async, "fs.exists is async");
- assert.ok(!error, "error is falsy");
- assert.ok(!value, "file does not exists");
- end();
- });
- async = true;
-};
-
-exports["test fs.existsSync"] = function(assert) {
- let path = filePathInProfile
- assert.equal(fs.existsSync(path), true, "exists");
- assert.equal(fs.existsSync(path + "-does-not-exists"), false, "exists");
-};
-
-exports["test fs.mkdirSync fs.rmdirSync"] = function(assert) {
- let path = mkdirPath;
-
- assert.equal(fs.existsSync(path), false, "does not exists");
- fs.mkdirSync(path);
- assert.equal(fs.existsSync(path), true, "dir was created");
- try {
- fs.mkdirSync(path);
- assert.fail(Error("mkdir on existing should throw"));
- } catch (error) {
- assert.equal(error.message, "EEXIST, mkdir " + path);
- assert.equal(error.code, "EEXIST", "error has a code");
- assert.equal(error.path, path, "error has a path");
- assert.equal(error.errno, 47, "error has a errno");
- }
- fs.rmdirSync(path);
- assert.equal(fs.existsSync(path), false, "dir was removed");
-};
-
-exports["test fs.mkdir"] = function(assert, end) {
- let path = mkdirPath;
-
- if (!fs.existsSync(path)) {
- let async = false;
- fs.mkdir(path, function(error) {
- assert.ok(async, "mkdir is async");
- assert.ok(!error, "no error");
- assert.equal(fs.existsSync(path), true, "dir was created");
- fs.rmdirSync(path);
- assert.equal(fs.existsSync(path), false, "dir was removed");
- end();
- });
- async = true;
- }
-};
-
-exports["test fs.mkdir error"] = function(assert, end) {
- let path = mkdirPath;
-
- if (!fs.existsSync(path)) {
- fs.mkdirSync(path);
- let async = false;
- fs.mkdir(path, function(error) {
- assert.ok(async, "mkdir is async");
- assert.equal(error.message, "EEXIST, mkdir " + path);
- assert.equal(error.code, "EEXIST", "error has a code");
- assert.equal(error.path, path, "error has a path");
- assert.equal(error.errno, 47, "error has a errno");
- fs.rmdirSync(path);
- assert.equal(fs.existsSync(path), false, "dir was removed");
- end();
- });
- async = true;
- }
-};
-
-exports["test fs.rmdir"] = function(assert, end) {
- let path = mkdirPath;
-
- if (!fs.existsSync(path)) {
- fs.mkdirSync(path);
- assert.equal(fs.existsSync(path), true, "dir exists");
- let async = false;
- fs.rmdir(path, function(error) {
- assert.ok(async, "mkdir is async");
- assert.ok(!error, "no error");
- assert.equal(fs.existsSync(path), false, "dir was removed");
- end();
- });
- async = true;
- }
-};
-
-
-exports["test fs.rmdir error"] = function(assert, end) {
- let path = mkdirPath;
-
- if (!fs.existsSync(path)) {
- assert.equal(fs.existsSync(path), false, "dir doesn't exists");
- let async = false;
- fs.rmdir(path, function(error) {
- assert.ok(async, "mkdir is async");
- assert.equal(error.message, "ENOENT, remove " + path);
- assert.equal(error.code, "ENOENT", "error has a code");
- assert.equal(error.path, path, "error has a path");
- assert.equal(error.errno, 34, "error has a errno");
- assert.equal(fs.existsSync(path), false, "dir is removed");
- end();
- });
- async = true;
- }
-};
-
-exports["test fs.truncateSync fs.unlinkSync"] = function(assert) {
- let path = truncatePath;
-
- assert.equal(fs.existsSync(path), false, "does not exists");
- fs.truncateSync(path);
- assert.equal(fs.existsSync(path), true, "file was created");
- fs.truncateSync(path);
- fs.unlinkSync(path);
- assert.equal(fs.existsSync(path), false, "file was removed");
-};
-
-
-exports["test fs.truncate"] = function(assert, end) {
- let path = truncatePath;
- if (!fs.existsSync(path)) {
- let async = false;
- fs.truncate(path, 0, function(error) {
- assert.ok(async, "truncate is async");
- assert.ok(!error, "no error");
- assert.equal(fs.existsSync(path), true, "file was created");
- fs.unlinkSync(path);
- assert.equal(fs.existsSync(path), false, "file was removed");
- end();
- })
- async = true;
- }
-};
-
-exports["test fs.unlink"] = function(assert, end) {
- let path = unlinkPath;
- let async = false;
- assert.ok(!fs.existsSync(path), "file doesn't exists yet");
- fs.truncateSync(path, 0);
- assert.ok(fs.existsSync(path), "file was created");
- fs.unlink(path, function(error) {
- assert.ok(async, "fs.unlink is async");
- assert.ok(!error, "error is falsy");
- assert.ok(!fs.existsSync(path), "file was removed");
- end();
- });
- async = true;
-};
-
-exports["test fs.unlink error"] = function(assert, end) {
- let path = unlinkPath;
- let async = false;
- assert.ok(!fs.existsSync(path), "file doesn't exists yet");
- fs.unlink(path, function(error) {
- assert.ok(async, "fs.unlink is async");
- assert.equal(error.message, "ENOENT, remove " + path);
- assert.equal(error.code, "ENOENT", "error has a code");
- assert.equal(error.path, path, "error has a path");
- assert.equal(error.errno, 34, "error has a errno");
- end();
- });
- async = true;
-};
-
-exports["test fs.rename"] = function(assert, end) {
- let fromPath = renameFromPath;
- let toPath = renameToPath;
-
- fs.truncateSync(fromPath);
- assert.ok(fs.existsSync(fromPath), "source file exists");
- assert.ok(!fs.existsSync(toPath), "destination doesn't exists");
- var async = false;
- fs.rename(fromPath, toPath, function(error) {
- assert.ok(async, "fs.rename is async");
- assert.ok(!error, "error is falsy");
- assert.ok(!fs.existsSync(fromPath), "source path no longer exists");
- assert.ok(fs.existsSync(toPath), "destination file exists");
- fs.unlinkSync(toPath);
- assert.ok(!fs.existsSync(toPath), "cleaned up properly");
- end();
- });
- async = true;
-};
-
-exports["test fs.rename (missing source file)"] = function(assert, end) {
- let fromPath = renameFromPath;
- let toPath = renameToPath;
-
- assert.ok(!fs.existsSync(fromPath), "source file doesn't exists");
- assert.ok(!fs.existsSync(toPath), "destination doesn't exists");
- var async = false;
- fs.rename(fromPath, toPath, function(error) {
- assert.ok(async, "fs.rename is async");
- assert.equal(error.message, "ENOENT, rename " + fromPath);
- assert.equal(error.code, "ENOENT", "error has a code");
- assert.equal(error.path, fromPath, "error has a path");
- assert.equal(error.errno, 34, "error has a errno");
- end();
- });
- async = true;
-};
-
-exports["test fs.rename (existing target file)"] = function(assert, end) {
- let fromPath = renameFromPath;
- let toPath = renameToPath;
-
- fs.truncateSync(fromPath);
- fs.truncateSync(toPath);
- assert.ok(fs.existsSync(fromPath), "source file exists");
- assert.ok(fs.existsSync(toPath), "destination file exists");
- var async = false;
- fs.rename(fromPath, toPath, function(error) {
- assert.ok(async, "fs.rename is async");
- assert.ok(!error, "error is falsy");
- assert.ok(!fs.existsSync(fromPath), "source path no longer exists");
- assert.ok(fs.existsSync(toPath), "destination file exists");
- fs.unlinkSync(toPath);
- assert.ok(!fs.existsSync(toPath), "cleaned up properly");
- end();
- });
- async = true;
-};
-
-exports["test fs.writeFile"] = function(assert, end) {
- let path = writePath;
- let content = ["hello world",
- "this is some text"].join("\n");
-
- var async = false;
- fs.writeFile(path, content, function(error) {
- assert.ok(async, "fs write is async");
- assert.ok(!error, "error is falsy");
- assert.ok(fs.existsSync(path), "file was created");
- assert.equal(fs.readFileSync(path).toString(),
- content,
- "contet was written");
- fs.unlinkSync(path);
- assert.ok(!fs.exists(path), "file was removed");
-
- end();
- });
- async = true;
-};
-
-exports["test fs.writeFile (with large files)"] = function(assert, end) {
- let path = writePath;
- let content = "";
-
- for (var i = 0; i < 100000; i++) {
- content += "buffer\n";
- }
-
- var async = false;
- fs.writeFile(path, content, function(error) {
- assert.ok(async, "fs write is async");
- assert.ok(!error, "error is falsy");
- assert.ok(fs.existsSync(path), "file was created");
- assert.equal(fs.readFileSync(path).toString(),
- content,
- "contet was written");
- fs.unlinkSync(path);
- assert.ok(!fs.exists(path), "file was removed");
-
- end();
- });
- async = true;
-};
-
-exports["test fs.writeFile error"] = function (assert, done) {
- try {
- fs.writeFile({}, 'content', function (err) {
- assert.fail('Error thrown from TypeError should not be caught');
- });
- } catch (e) {
- assert.ok(e,
- 'writeFile with a non-string error should not be caught');
- assert.equal(e.name, 'TypeError', 'error should be TypeError');
- }
- fs.writeFile('not/a/valid/path', 'content', function (err) {
- assert.ok(err, 'error caught and handled in callback');
- done();
- });
-};
-
-exports["test fs.chmod"] = function (assert, done) {
- let content = ["hej från sverige"];
-
- fs.writeFile(chmodPath, content, function (err) {
- testPerm("0755")()
- .then(testPerm("0777"))
- .then(testPerm("0666"))
- .then(testPerm(0o511))
- .then(testPerm(0o200))
- .then(testPerm("0040"))
- .then(testPerm("0000"))
- .then(testPermSync(0o777))
- .then(testPermSync(0o666))
- .then(testPermSync("0511"))
- .then(testPermSync("0200"))
- .then(testPermSync("0040"))
- .then(testPermSync("0000"))
- .then(() => {
- assert.pass("Successful chmod passes");
- }, assert.fail)
- // Test invalid paths
- .then(() => chmod("not-a-valid-file", 0o755))
- .then(assert.fail, (err) => {
- checkPermError(err, "not-a-valid-file");
- })
- .then(() => chmod("not-a-valid-file", 0o755, "sync"))
- .then(assert.fail, (err) => {
- checkPermError(err, "not-a-valid-file");
- })
- // Test invalid files
- .then(() => chmod("resource://not-a-real-file", 0o755))
- .then(assert.fail, (err) => {
- checkPermError(err, "resource://not-a-real-file");
- })
- .then(() => chmod("resource://not-a-real-file", 0o755, 'sync'))
- .then(assert.fail, (err) => {
- checkPermError(err, "resource://not-a-real-file");
- })
- .then(done, assert.fail);
- });
-
- function checkPermError (err, path) {
- assert.equal(err.message, "ENOENT, chmod " + path);
- assert.equal(err.code, "ENOENT", "error has a code");
- assert.equal(err.path, path, "error has a path");
- assert.equal(err.errno, 34, "error has a errno");
- }
-
- function chmod (path, mode, sync) {
- let { promise, resolve, reject } = defer();
- if (!sync) {
- fs.chmod(path, mode, (err) => {
- if (err) reject(err);
- else resolve();
- });
- } else {
- fs.chmodSync(path, mode);
- resolve();
- }
- return promise;
- }
-
- function testPerm (mode, sync) {
- return function () {
- return chmod(chmodPath, mode, sync)
- .then(() => getPerm(chmodPath))
- .then(perm => {
- let nMode = normalizeMode(mode);
- if (isWindows)
- assert.equal(perm, nMode,
- "mode correctly set to " + mode + " (" + nMode + " on windows)");
- else
- assert.equal(perm, nMode, "mode correctly set to " + nMode);
- });
- };
- }
-
- function testPermSync (mode) {
- return testPerm(mode, true);
- }
-
- function getPerm (path) {
- let { promise, resolve, reject } = defer();
- fs.stat(path, function (err, stat) {
- if (err) reject(err);
- else resolve(stat.mode);
- });
- return promise;
- }
-
- /*
- * Converts a unix mode `0755` into a Windows version of unix permissions
- */
- function normalizeMode (mode) {
- if (typeof mode === "string")
- mode = parseInt(mode, 8);
-
- if (!isWindows)
- return mode;
-
- var ANY_READ = 0o444;
- var ANY_WRITE = 0o222;
- var winMode = 0;
-
- // On Windows, if WRITE is true, then READ is also true
- if (mode & ANY_WRITE)
- winMode |= ANY_WRITE | ANY_READ;
- // Minimum permissions are READ for Windows
- else
- winMode |= ANY_READ;
-
- return winMode;
- }
-};
-
-require("test").run(exports);