Skip to content
This repository has been archived by the owner on Aug 4, 2022. It is now read-only.

Commit

Permalink
Bug 858723 - Fixing _fdmsg test in async OS.File. r=froydnj
Browse files Browse the repository at this point in the history
  • Loading branch information
David Rajchenbach-Teller committed Apr 17, 2013
1 parent 9d81e9e commit 401edf2
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 6 deletions.
5 changes: 1 addition & 4 deletions toolkit/components/osfile/osfile_async_front.jsm
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand All @@ -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
);
Expand Down
4 changes: 2 additions & 2 deletions toolkit/components/osfile/osfile_async_worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
};
Expand All @@ -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;
}
Expand Down
48 changes: 48 additions & 0 deletions toolkit/components/osfile/tests/xpcshell/test_osfile_closed.js
Original file line number Diff line number Diff line change
@@ -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);
1 change: 1 addition & 0 deletions toolkit/components/osfile/tests/xpcshell/xpcshell.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
head =
tail =

[test_osfile_closed.js]
[test_path.js]
[test_osfile_async.js]
[test_profiledir.js]
Expand Down

0 comments on commit 401edf2

Please sign in to comment.