Rework tests for node
This commit is contained in:
parent
d9ed65602a
commit
38627f95d6
|
@ -1,15 +1,14 @@
|
||||||
define(["Filer"], function(Filer) {
|
(function(global) {
|
||||||
|
var Filer = require("../..");
|
||||||
|
|
||||||
var indexedDB = (function(window) {
|
var indexedDB = global.indexedDB ||
|
||||||
return window.indexedDB ||
|
global.mozIndexedDB ||
|
||||||
window.mozIndexedDB ||
|
global.webkitIndexedDB ||
|
||||||
window.webkitIndexedDB ||
|
global.msIndexedDB;
|
||||||
window.msIndexedDB;
|
|
||||||
}(this));
|
|
||||||
|
|
||||||
var needsCleanup = [];
|
var needsCleanup = [];
|
||||||
if(typeof window !== 'undefined') {
|
if(global.addEventListener) {
|
||||||
window.addEventListener('beforeunload', function() {
|
global.addEventListener('beforeunload', function() {
|
||||||
needsCleanup.forEach(function(f) { f(); });
|
needsCleanup.forEach(function(f) { f(); });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -52,6 +51,6 @@ define(["Filer"], function(Filer) {
|
||||||
this.cleanup = cleanup;
|
this.cleanup = cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
return IndexedDBTestProvider;
|
module.exports = IndexedDBTestProvider;
|
||||||
|
|
||||||
});
|
}(this));
|
||||||
|
|
|
@ -1,24 +1,22 @@
|
||||||
define(["Filer"], function(Filer) {
|
var Filer = require('../..');
|
||||||
|
|
||||||
function MemoryTestProvider(name) {
|
function MemoryTestProvider(name) {
|
||||||
var that = this;
|
var that = this;
|
||||||
|
|
||||||
function cleanup(callback) {
|
function cleanup(callback) {
|
||||||
that.provider = null;
|
that.provider = null;
|
||||||
callback();
|
callback();
|
||||||
}
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
if(that.provider) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
that.provider = new Filer.FileSystem.providers.Memory(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.init = init;
|
|
||||||
this.cleanup = cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return MemoryTestProvider;
|
function init() {
|
||||||
|
if(that.provider) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
that.provider = new Filer.FileSystem.providers.Memory(name);
|
||||||
|
}
|
||||||
|
|
||||||
});
|
this.init = init;
|
||||||
|
this.cleanup = cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = MemoryTestProvider;
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
define(["Filer", "tests/lib/indexeddb", "tests/lib/websql", "tests/lib/memory"],
|
(function(global) {
|
||||||
function(Filer, IndexedDBTestProvider, WebSQLTestProvider, MemoryTestProvider) {
|
|
||||||
|
var Filer = require('../..');
|
||||||
|
var IndexedDBTestProvider = require('./indexeddb.js');
|
||||||
|
var WebSQLTestProvider = require('./websql.js');
|
||||||
|
var MemoryTestProvider = require('./memory.js');
|
||||||
|
|
||||||
var _provider;
|
var _provider;
|
||||||
var _fs;
|
var _fs;
|
||||||
|
@ -12,17 +16,6 @@ function(Filer, IndexedDBTestProvider, WebSQLTestProvider, MemoryTestProvider) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function findBestProvider() {
|
function findBestProvider() {
|
||||||
if(typeof module !== 'undefined' && module.exports) {
|
|
||||||
return MemoryTestProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
// When running tests, and when no explicit provider is defined,
|
|
||||||
// prefer providers in this order: IndexedDB, WebSQL, Memory.
|
|
||||||
// However, if we're running in PhantomJS, use Memory first.
|
|
||||||
if(typeof navigator !== 'undefined' && navigator.userAgent.indexOf('PhantomJS') > -1) {
|
|
||||||
return MemoryTestProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
var providers = Filer.FileSystem.providers;
|
var providers = Filer.FileSystem.providers;
|
||||||
if(providers.IndexedDB.isSupported()) {
|
if(providers.IndexedDB.isSupported()) {
|
||||||
return IndexedDBTestProvider;
|
return IndexedDBTestProvider;
|
||||||
|
@ -34,13 +27,12 @@ function(Filer, IndexedDBTestProvider, WebSQLTestProvider, MemoryTestProvider) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function setup(callback) {
|
function setup(callback) {
|
||||||
// We support specifying the provider via the query string
|
// In browser we support specifying the provider via the query string
|
||||||
// (e.g., ?filer-provider=IndexedDB). If not specified, we use
|
// (e.g., ?filer-provider=IndexedDB). If not specified, we use
|
||||||
// the Memory provider by default. See test/require-config.js
|
// the Memory provider by default. See test/require-config.js
|
||||||
// for definition of window.filerArgs.
|
// for definition of window.filerArgs.
|
||||||
var providerType = (typeof window !== 'undefined' &&
|
var providerType = global.filerArgs && global.filerArgs.provider ?
|
||||||
window.filerArgs && window.filerArgs.provider) ?
|
global.filerArgs.provider : 'Memory';
|
||||||
window.filerArgs.provider : 'Memory';
|
|
||||||
|
|
||||||
var name = uniqueName();
|
var name = uniqueName();
|
||||||
|
|
||||||
|
@ -60,9 +52,8 @@ function(Filer, IndexedDBTestProvider, WebSQLTestProvider, MemoryTestProvider) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow passing FS flags on query string
|
// Allow passing FS flags on query string
|
||||||
var flags = (typeof window !== 'undefined' &&
|
var flags = global.filerArgs && global.filerArgs.flags) ?
|
||||||
window && window.filerArgs && window.filerArgs.flags) ?
|
global.filerArgs.flags : 'FORMAT';
|
||||||
window.filerArgs.flags : 'FORMAT';
|
|
||||||
|
|
||||||
// Create a file system and wait for it to get setup
|
// Create a file system and wait for it to get setup
|
||||||
_provider.init();
|
_provider.init();
|
||||||
|
@ -125,7 +116,7 @@ function(Filer, IndexedDBTestProvider, WebSQLTestProvider, MemoryTestProvider) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
module.exports = {
|
||||||
uniqueName: uniqueName,
|
uniqueName: uniqueName,
|
||||||
setup: setup,
|
setup: setup,
|
||||||
fs: fs,
|
fs: fs,
|
||||||
|
@ -140,4 +131,4 @@ function(Filer, IndexedDBTestProvider, WebSQLTestProvider, MemoryTestProvider) {
|
||||||
typedArrayEqual: typedArrayEqual
|
typedArrayEqual: typedArrayEqual
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
}(this));
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
define(["Filer"], function(Filer) {
|
(function(global) {
|
||||||
|
|
||||||
|
var Filer = require('../..');
|
||||||
|
|
||||||
var needsCleanup = [];
|
var needsCleanup = [];
|
||||||
if(typeof window !== 'undefined') {
|
if(global.addEventListener) {
|
||||||
window.addEventListener('beforeunload', function() {
|
window.addEventListener('beforeunload', function() {
|
||||||
needsCleanup.forEach(function(f) { f(); });
|
needsCleanup.forEach(function(f) { f(); });
|
||||||
});
|
});
|
||||||
|
@ -40,6 +42,6 @@ define(["Filer"], function(Filer) {
|
||||||
this.cleanup = cleanup;
|
this.cleanup = cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
return WebSQLTestProvider;
|
module.exports = WebSQLTestProvider;
|
||||||
|
|
||||||
});
|
}(this));
|
||||||
|
|
|
@ -1,48 +1,5 @@
|
||||||
// If there's something broken in filer or a test,
|
|
||||||
// requirejs can blow up, and mocha sees it as tests
|
|
||||||
// not getting added (i.e., it just exists with only
|
|
||||||
// 1 test run). Display an error and crash loudly
|
|
||||||
// so it's clear what happened.
|
|
||||||
process.on('uncaughtException', function(err) {
|
|
||||||
describe('requirejs errors: ', function() {
|
|
||||||
it('requirejs has crashed building the test suite...', function(done) {
|
|
||||||
console.error(err.stack);
|
|
||||||
require('assert').ok(false);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
var requirejs = require('requirejs');
|
|
||||||
requirejs.config({
|
|
||||||
paths: {
|
|
||||||
"tests": "../tests",
|
|
||||||
"src": "../src",
|
|
||||||
"spec": "../tests/spec",
|
|
||||||
"bugs": "../tests/bugs",
|
|
||||||
"util": "../tests/lib/test-utils",
|
|
||||||
// see gruntfile.js for how dist/filer-test.js gets built
|
|
||||||
"Filer": "../dist/filer_node-test"
|
|
||||||
},
|
|
||||||
baseUrl: "./lib",
|
|
||||||
optimize: "none",
|
|
||||||
shim: {
|
|
||||||
// TextEncoder and TextDecoder shims. encoding-indexes must get loaded first,
|
|
||||||
// and we use a fake one for reduced size, since we only care about utf8.
|
|
||||||
"encoding": {
|
|
||||||
deps: ["encoding-indexes-shim"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
nodeRequire: require
|
|
||||||
});
|
|
||||||
|
|
||||||
// We use Chai's expect assertions in all the tests via a global
|
// We use Chai's expect assertions in all the tests via a global
|
||||||
GLOBAL.expect = require('chai').expect;
|
GLOBAL.expect = require('chai').expect;
|
||||||
|
|
||||||
// Workaround for Mocha bug, see https://github.com/visionmedia/mocha/issues/362
|
// Tests to be run are defined in test-manifest.js
|
||||||
describe("Mocha needs one test in order to wait on requirejs tests", function() {
|
require('./test-manifest.js');
|
||||||
it('should wait for other tests', function(){
|
|
||||||
require('assert').ok(true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
requirejs(["tests/test-manifest"]);
|
|
||||||
|
|
|
@ -1,71 +1,67 @@
|
||||||
define([
|
/**
|
||||||
|
* Add your test spec files to the list in order to
|
||||||
|
* get them running by default.
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
// Filer
|
||||||
* Add your test spec files to the list in order to
|
require("./spec/filer.spec");
|
||||||
* get them running by default.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Filer
|
// Filer.FileSystem.*
|
||||||
"spec/filer.spec",
|
require("./spec/fs.spec");
|
||||||
|
require("./spec/fs.stat.spec");
|
||||||
|
require("./spec/fs.lstat.spec");
|
||||||
|
require("./spec/fs.exists.spec");
|
||||||
|
require("./spec/fs.mknod.spec");
|
||||||
|
require("./spec/fs.mkdir.spec");
|
||||||
|
require("./spec/fs.readdir.spec");
|
||||||
|
require("./spec/fs.rmdir.spec");
|
||||||
|
require("./spec/fs.open.spec");
|
||||||
|
require("./spec/fs.write.spec");
|
||||||
|
require("./spec/fs.writeFile-readFile.spec");
|
||||||
|
require("./spec/fs.appendFile.spec");
|
||||||
|
require("./spec/fs.read.spec");
|
||||||
|
require("./spec/fs.close.spec");
|
||||||
|
require("./spec/fs.link.spec");
|
||||||
|
require("./spec/fs.unlink.spec");
|
||||||
|
require("./spec/fs.rename.spec");
|
||||||
|
require("./spec/fs.lseek.spec");
|
||||||
|
require("./spec/fs.symlink.spec");
|
||||||
|
require("./spec/fs.readlink.spec");
|
||||||
|
require("./spec/fs.truncate.spec");
|
||||||
|
require("./spec/fs.utimes.spec");
|
||||||
|
require("./spec/fs.xattr.spec");
|
||||||
|
require("./spec/fs.stats.spec");
|
||||||
|
require("./spec/path-resolution.spec");
|
||||||
|
require("./spec/times.spec");
|
||||||
|
require("./spec/time-flags.spec");
|
||||||
|
require("./spec/fs.watch.spec");
|
||||||
|
require("./spec/errors.spec");
|
||||||
|
require("./spec/lib.spec");
|
||||||
|
|
||||||
// Filer.FileSystem.*
|
// Filer.FileSystem.providers.*
|
||||||
"spec/fs.spec",
|
require("./spec/providers/providers.spec");
|
||||||
"spec/fs.stat.spec",
|
require("./spec/providers/providers.indexeddb.spec");
|
||||||
"spec/fs.lstat.spec",
|
require("./spec/providers/providers.websql.spec");
|
||||||
"spec/fs.exists.spec",
|
|
||||||
"spec/fs.mknod.spec",
|
|
||||||
"spec/fs.mkdir.spec",
|
|
||||||
"spec/fs.readdir.spec",
|
|
||||||
"spec/fs.rmdir.spec",
|
|
||||||
"spec/fs.open.spec",
|
|
||||||
"spec/fs.write.spec",
|
|
||||||
"spec/fs.writeFile-readFile.spec",
|
|
||||||
"spec/fs.appendFile.spec",
|
|
||||||
"spec/fs.read.spec",
|
|
||||||
"spec/fs.close.spec",
|
|
||||||
"spec/fs.link.spec",
|
|
||||||
"spec/fs.unlink.spec",
|
|
||||||
"spec/fs.rename.spec",
|
|
||||||
"spec/fs.lseek.spec",
|
|
||||||
"spec/fs.symlink.spec",
|
|
||||||
"spec/fs.readlink.spec",
|
|
||||||
"spec/fs.truncate.spec",
|
|
||||||
"spec/fs.utimes.spec",
|
|
||||||
"spec/fs.xattr.spec",
|
|
||||||
"spec/fs.stats.spec",
|
|
||||||
"spec/path-resolution.spec",
|
|
||||||
"spec/times.spec",
|
|
||||||
"spec/time-flags.spec",
|
|
||||||
"spec/fs.watch.spec",
|
|
||||||
"spec/errors.spec",
|
|
||||||
"spec/lib.spec",
|
|
||||||
|
|
||||||
// Filer.FileSystem.providers.*
|
// Filer.FileSystemShell.*
|
||||||
"spec/providers/providers.spec",
|
require("./spec/shell/cd.spec");
|
||||||
"spec/providers/providers.indexeddb.spec",
|
require("./spec/shell/touch.spec");
|
||||||
"spec/providers/providers.websql.spec",
|
require("./spec/shell/exec.spec");
|
||||||
|
require("./spec/shell/cat.spec");
|
||||||
|
require("./spec/shell/ls.spec");
|
||||||
|
require("./spec/shell/rm.spec");
|
||||||
|
require("./spec/shell/env.spec");
|
||||||
|
require("./spec/shell/mkdirp.spec");
|
||||||
|
require("./spec/shell/wget.spec");
|
||||||
|
require("./spec/shell/zip-unzip.spec");
|
||||||
|
|
||||||
// Filer.FileSystemShell.*
|
// Ported node.js tests (filenames match names in https://github.com/joyent/node/tree/master/test)
|
||||||
"spec/shell/cd.spec",
|
require("./spec/node-js/simple/test-fs-mkdir");
|
||||||
"spec/shell/touch.spec",
|
require("./spec/node-js/simple/test-fs-null-bytes");
|
||||||
"spec/shell/exec.spec",
|
require("./spec/node-js/simple/test-fs-watch");
|
||||||
"spec/shell/cat.spec",
|
require("./spec/node-js/simple/test-fs-watch-recursive");
|
||||||
"spec/shell/ls.spec",
|
|
||||||
"spec/shell/rm.spec",
|
|
||||||
"spec/shell/env.spec",
|
|
||||||
"spec/shell/mkdirp.spec",
|
|
||||||
"spec/shell/wget.spec",
|
|
||||||
"spec/shell/zip-unzip.spec",
|
|
||||||
|
|
||||||
// Ported node.js tests (filenames match names in https://github.com/joyent/node/tree/master/test)
|
// Regressions; Bugs
|
||||||
"spec/node-js/simple/test-fs-mkdir",
|
require("./bugs/issue105");
|
||||||
"spec/node-js/simple/test-fs-null-bytes",
|
require("./bugs/issue106");
|
||||||
"spec/node-js/simple/test-fs-watch",
|
require("./spec/providers/providers.memory.spec");
|
||||||
"spec/node-js/simple/test-fs-watch-recursive",
|
|
||||||
|
|
||||||
// Regressions, Bugs
|
|
||||||
"bugs/issue105",
|
|
||||||
"bugs/issue106" ,
|
|
||||||
"spec/providers/providers.memory.spec"
|
|
||||||
|
|
||||||
]);
|
|
||||||
|
|
Loading…
Reference in New Issue