kopia lustrzana https://github.com/c9/core
143 wiersze
4.2 KiB
JavaScript
143 wiersze
4.2 KiB
JavaScript
#!/usr/bin/env node
|
|
/*global describe it before after beforeEach afterEach */
|
|
"use strict";
|
|
"use server";
|
|
|
|
require("c9/inline-mocha")(module);
|
|
|
|
var assert = require("assert-diff");
|
|
var async = require("async");
|
|
var sinon = require("sinon");
|
|
var vfs = require("vfs-local");
|
|
var vfsProxy = require("./vfs_proxy");
|
|
|
|
describe(__filename, function(){
|
|
|
|
var proxy, home, workspace;
|
|
|
|
before(function() {
|
|
home = vfs({
|
|
root: __dirname,
|
|
testing: true,
|
|
checkSymlinks: true
|
|
});
|
|
home.root = __dirname;
|
|
|
|
workspace = vfs({
|
|
root: __dirname + "/views",
|
|
testing: true,
|
|
checkSymlinks: true
|
|
});
|
|
});
|
|
|
|
beforeEach(function() {
|
|
proxy = vfsProxy(Object.keys(home), home, workspace);
|
|
});
|
|
|
|
it("should use home for files starting with ~ ", function(done) {
|
|
home.readfile = sinon.stub().callsArgWith(2, null, "home");
|
|
workspace.readfile = sinon.stub().callsArgWith(2, null, "workspace");
|
|
|
|
proxy.readfile("~/foo.txt", {}, function(err, data) {
|
|
assert(!err, err);
|
|
assert.equal(data, "home");
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("should use workspace for files not starting with ~ ", function(done) {
|
|
home.readfile = sinon.stub().callsArgWith(2, null, "home");
|
|
workspace.readfile = sinon.stub().callsArgWith(2, null, "workspace");
|
|
|
|
proxy.readfile("foo.txt", {}, function(err, data) {
|
|
assert(!err, err);
|
|
assert.equal(data, "workspace");
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("should expand ~ to paths relative to 'home'", function(done) {
|
|
home.readfile = function(path, options, callback) {
|
|
assert.equal(path, "/foo.txt");
|
|
callback(null, "home");
|
|
};
|
|
|
|
proxy.readfile("~/foo.txt", {}, function(err, data) {
|
|
assert(!err, err);
|
|
assert.equal(data, "home");
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("should expand ~ in options", function(done) {
|
|
home.readfile = function(path, options, callback) {
|
|
assert.equal(path, "/foo.txt");
|
|
assert.equal(options.target, "/bar");
|
|
assert.equal(options.to, "/juhu");
|
|
assert.equal(options.from, "/kinners");
|
|
|
|
assert.equal(options.stuff, "~/stuff");
|
|
|
|
callback(null, "home");
|
|
};
|
|
|
|
proxy.readfile("~/foo.txt", {
|
|
target: "~/bar",
|
|
to: "~/juhu",
|
|
from: "~/kinners",
|
|
stuff: "~/stuff"
|
|
}, function(err, data) {
|
|
assert(!err, err);
|
|
assert.equal(data, "home");
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("should expand some commands to absolute paths", function(done) {
|
|
home.execFile = function(path, options, callback) {
|
|
assert.equal(path, __dirname + "/foo.txt");
|
|
callback(null, "home");
|
|
};
|
|
|
|
proxy.execFile("~/foo.txt", {}, function(err, data) {
|
|
assert(!err, err);
|
|
assert.equal(data, "home");
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("should not wrap some commands", function(done) {
|
|
async.eachSeries([
|
|
"connect",
|
|
"on",
|
|
"off",
|
|
"emit",
|
|
"extend",
|
|
"unextend",
|
|
"use",
|
|
"killtree"
|
|
], function(cmd, next) {
|
|
workspace[cmd] = function(path, options, callback) {
|
|
assert.equal(path, "~/foo.txt");
|
|
callback(null, "workspace");
|
|
};
|
|
|
|
proxy[cmd]("~/foo.txt", {}, function(err, data) {
|
|
assert(!err, err);
|
|
assert.equal(data, "workspace");
|
|
next();
|
|
});
|
|
|
|
}, done);
|
|
});
|
|
|
|
it("bad execFile arguments should not break the server", function(done) {
|
|
workspace.execFile = sinon.stub().callsArgWith(2, null, "done");
|
|
proxy.execFile(['ls', '-a'], {encoding: "utf8"}, function(err, data) {
|
|
assert(!err, err);
|
|
assert.equal(data, "done");
|
|
done();
|
|
});
|
|
});
|
|
});
|