зеркало из https://github.com/mozilla/brackets.git
174 строки
6.9 KiB
JavaScript
174 строки
6.9 KiB
JavaScript
/*
|
|
* Copyright (c) 2012 Adobe Systems Incorporated. All rights reserved.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
* DEALINGS IN THE SOFTWARE.
|
|
*
|
|
*/
|
|
|
|
|
|
/*jslint vars: true, plusplus: true, devel: true, browser: true, nomen: true, indent: 4, maxerr: 50 */
|
|
/*global define: false, require: false, describe: false, it: false, expect: false, beforeEach: false, afterEach: false, waitsFor: false, runs: false */
|
|
define(function (require, exports, module) {
|
|
'use strict';
|
|
|
|
// Load dependent modules
|
|
var ProjectManager, // Load from brackets.test
|
|
SpecRunnerUtils = require("spec/SpecRunnerUtils");
|
|
|
|
describe("ProjectManager", function () {
|
|
|
|
var testPath = SpecRunnerUtils.getTestPath("/spec/ProjectManager-test-files"),
|
|
brackets;
|
|
|
|
beforeEach(function () {
|
|
SpecRunnerUtils.createTestWindowAndRun(this, function (testWindow) {
|
|
// Load module instances from brackets.test
|
|
brackets = testWindow.brackets;
|
|
ProjectManager = testWindow.brackets.test.ProjectManager;
|
|
});
|
|
});
|
|
|
|
afterEach(function () {
|
|
SpecRunnerUtils.closeTestWindow();
|
|
});
|
|
|
|
describe("createNewItem", function () {
|
|
it("should create a new file with a given name", function () {
|
|
var didCreate = false, gotError = false;
|
|
|
|
SpecRunnerUtils.loadProjectInTestWindow(testPath);
|
|
|
|
runs(function () {
|
|
// skip rename
|
|
ProjectManager.createNewItem(testPath, "Untitled.js", true)
|
|
.done(function () { didCreate = true; })
|
|
.fail(function () { gotError = true; });
|
|
});
|
|
waitsFor(function () { return didCreate && !gotError; }, "ProjectManager.createNewItem() timeout", 1000);
|
|
|
|
var error, stat, complete = false;
|
|
var filePath = testPath + "/Untitled.js";
|
|
runs(function () {
|
|
brackets.fs.stat(filePath, function (err, _stat) {
|
|
error = err;
|
|
stat = _stat;
|
|
complete = true;
|
|
});
|
|
});
|
|
|
|
waitsFor(function () { return complete; }, 1000);
|
|
|
|
var unlinkError = brackets.fs.NO_ERROR;
|
|
runs(function () {
|
|
expect(error).toBeFalsy();
|
|
expect(stat.isFile()).toBe(true);
|
|
|
|
// delete the new file
|
|
complete = false;
|
|
brackets.fs.unlink(filePath, function (err) {
|
|
unlinkError = err;
|
|
complete = true;
|
|
});
|
|
});
|
|
waitsFor(
|
|
function () {
|
|
return complete && (unlinkError === brackets.fs.NO_ERROR);
|
|
},
|
|
"unlink() failed to cleanup Untitled.js, err=" + unlinkError,
|
|
1000
|
|
);
|
|
});
|
|
|
|
it("should fail when a file already exists", function () {
|
|
var didCreate = false, gotError = false;
|
|
|
|
SpecRunnerUtils.loadProjectInTestWindow(testPath);
|
|
|
|
runs(function () {
|
|
// skip rename
|
|
ProjectManager.createNewItem(testPath, "file.js", true)
|
|
.done(function () { didCreate = true; })
|
|
.fail(function () { gotError = true; });
|
|
});
|
|
waitsFor(function () { return !didCreate && gotError; }, "ProjectManager.createNewItem() timeout", 1000);
|
|
|
|
runs(function () {
|
|
expect(gotError).toBeTruthy();
|
|
expect(didCreate).toBeFalsy();
|
|
});
|
|
});
|
|
|
|
it("should fail when a file name matches a directory that already exists", function () {
|
|
var didCreate = false, gotError = false;
|
|
|
|
SpecRunnerUtils.loadProjectInTestWindow(testPath);
|
|
|
|
runs(function () {
|
|
// skip rename
|
|
ProjectManager.createNewItem(testPath, "directory", true)
|
|
.done(function () { didCreate = true; })
|
|
.fail(function () { gotError = true; });
|
|
});
|
|
waitsFor(function () { return !didCreate && gotError; }, "ProjectManager.createNewItem() timeout", 1000);
|
|
|
|
runs(function () {
|
|
expect(gotError).toBeTruthy();
|
|
expect(didCreate).toBeFalsy();
|
|
});
|
|
});
|
|
|
|
it("should fail when file name contains special characters", function () {
|
|
var chars = "/?*:;{}<>\\";
|
|
var i = 0;
|
|
var len = chars.length;
|
|
var charAt, didCreate, gotError;
|
|
|
|
SpecRunnerUtils.loadProjectInTestWindow(testPath);
|
|
|
|
function createFile() {
|
|
// skip rename
|
|
ProjectManager.createNewItem(testPath, "file" + charAt + ".js", true)
|
|
.done(function () { didCreate = true; })
|
|
.fail(function () { gotError = true; });
|
|
}
|
|
|
|
function waitForFileCreate() {
|
|
return !didCreate && gotError;
|
|
}
|
|
|
|
function assertFile() {
|
|
expect(gotError).toBeTruthy();
|
|
expect(didCreate).toBeFalsy();
|
|
}
|
|
|
|
for (i = 0; i < len; i++) {
|
|
didCreate = false;
|
|
gotError = false;
|
|
charAt = chars.charAt(i);
|
|
|
|
runs(createFile);
|
|
waitsFor(waitForFileCreate, "ProjectManager.createNewItem() timeout", 1000);
|
|
runs(assertFile);
|
|
}
|
|
});
|
|
});
|
|
|
|
});
|
|
});
|