Bug 858723 - Fixing _fdmsg test in async OS.File. r=froydnj

This commit is contained in:
David Rajchenbach-Teller 2013-04-17 10:03:28 -04:00
parent afa1f84699
commit dbdb79661a
4 changed files with 52 additions and 6 deletions

View File

@ -237,7 +237,7 @@ File.prototype = {
* @rejects {OS.File.Error}
*/
close: function close() {
if (this._fdmsg) {
if (this._fdmsg != null) {
let msg = this._fdmsg;
this._fdmsg = null;
return this._closeResult =
@ -254,9 +254,6 @@ File.prototype = {
* @rejects {OS.File.Error}
*/
stat: function stat() {
if (!this._fdmsg) {
return Promise.reject(OSError.closed("accessing file"));
}
return Scheduler.post("File_prototype_stat", [this._fdmsg], this).then(
File.Info.fromMsg
);

View File

@ -165,7 +165,7 @@ if (this.Components) {
let withFile = function withFile(id, f) {
let file = OpenedFiles.get(id);
if (file == null) {
throw new Error("Could not find File");
throw OS.File.Error.closed("accessing file");
}
return f.call(file);
};
@ -175,7 +175,7 @@ if (this.Components) {
let file = OpenedDirectoryIterators.get(fd);
if (file == null) {
if (!ignoreAbsent) {
throw new Error("Could not find Directory");
throw OS.File.Error.closed("accessing directory");
}
return;
}

View File

@ -0,0 +1,48 @@
"use strict";
Components.utils.import("resource://gre/modules/osfile.jsm");
Components.utils.import("resource://gre/modules/Task.jsm");
function run_test() {
do_test_pending();
run_next_test();
}
add_task(function test_closed() {
OS.Shared.DEBUG = true;
let currentDir = yield OS.File.getCurrentDirectory();
do_print("Open a file, ensure that we can call stat()");
let path = OS.Path.join(currentDir, "test_osfile_closed.js");
let file = yield OS.File.open(path);
yield file.stat();
do_check_true(true);
yield file.close();
do_print("Ensure that we cannot stat() on closed file");
let exn;
try {
yield file.stat();
} catch (ex) {
exn = ex;
}
do_print("Ensure that this raises the correct error");
do_check_true(!!exn);
do_check_true(exn instanceof OS.File.Error);
do_check_true(exn.becauseClosed);
do_print("Ensure that we cannot read() on closed file");
exn = null;
try {
yield file.read();
} catch (ex) {
exn = ex;
}
do_print("Ensure that this raises the correct error");
do_check_true(!!exn);
do_check_true(exn instanceof OS.File.Error);
do_check_true(exn.becauseClosed);
});
add_task(do_test_finished);

View File

@ -2,6 +2,7 @@
head =
tail =
[test_osfile_closed.js]
[test_path.js]
[test_osfile_async.js]
[test_profiledir.js]