Use same directory for OS.File.moveAtomic() temp file

Using the main temp directory was causing writes to fail when storage
was on another filesystem.
This commit is contained in:
Dan Stillman 2017-02-22 19:53:48 -05:00
parent 32bebeb1cd
commit 383eac4657
2 changed files with 15 additions and 7 deletions

View file

@ -381,13 +381,7 @@ Zotero.File = new function(){
path,
data,
{
// Note: this will fail on Windows if the temp
// directory is on a different drive from
// destination path
tmpPath: OS.Path.join(
Zotero.getTempDirectory().path,
OS.Path.basename(path) + ".tmp"
),
tmpPath: path + ".tmp",
encoding: charset ? charset.toLowerCase() : 'utf-8'
}
));

View file

@ -82,6 +82,20 @@ describe("Zotero.File", function () {
});
});
describe("#putContentsAsync()", function () {
it("should save via .tmp file", function* () {
var tmpDir = yield getTempDirectory();
var destFile = OS.Path.join(tmpDir, 'test.txt')
var tmpFile = destFile + ".tmp";
yield Zotero.File.putContentsAsync(tmpFile, 'A');
assert.isTrue(yield OS.File.exists(tmpFile));
yield Zotero.File.putContentsAsync(destFile, 'B');
assert.isFalse(yield OS.File.exists(tmpFile));
// Make sure .tmp file created when creating temp file was deleted too
assert.isFalse(yield OS.File.exists(tmpFile + '.tmp'));
});
});
describe("#copyDirectory()", function () {
it("should copy all files within a directory", function* () {
var tmpDir = Zotero.getTempDirectory().path;