add_task(async function () { do_get_profile(); let existingFile = Services.dirsvc .QueryInterface(Ci.nsIProperties) .get("ProfD", Ci.nsIFile); existingFile.append("exists.js"); existingFile.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o600); var outStream = Cc[ "@mozilla.org/network/file-output-stream;1" ].createInstance(Ci.nsIFileOutputStream); outStream.init( existingFile, 0x02 | 0x08 | 0x20, // write, create, truncate 0o666, 0 ); var fileData = "Hello World!"; outStream.write(fileData, fileData.length); outStream.close(); ok(existingFile.exists(), "exists.js exists"); let unknownFile = Services.dirsvc .QueryInterface(Ci.nsIProperties) .get("TmpD", Ci.nsIFile); unknownFile.append("wow.txt"); ok(!unknownFile.exists(), unknownFile.path + " doesn't exist"); let a = await File.createFromNsIFile(existingFile, { existenceCheck: false }); Assert.notEqual(a.size, 0, "The size is correctly set"); let b = await File.createFromNsIFile(unknownFile, { existenceCheck: false }); Assert.equal(b.size, 0, "The size is 0 for unknown file"); let c = await File.createFromNsIFile(existingFile, { existenceCheck: true }); Assert.notEqual(c.size, 0, "The size is correctly set"); let d = await File.createFromNsIFile(unknownFile, { existenceCheck: true, }).then( _ => true, _ => false ); Assert.strictEqual(d, false, "Exception thrown"); existingFile.remove(true); ok(!existingFile.exists(), "exists.js doesn't exist anymore"); });