1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
/**
* Test bug 460636 - Saving message in local folder as .EML removes starting dot in all lines, and ignores line if single dot only line.
*/
var { PromiseTestUtils } = ChromeUtils.import(
"resource://testing-common/mailnews/PromiseTestUtils.jsm"
);
var MSG_LINEBREAK = "\r\n";
var dot = do_get_file("data/dot");
var saveFile = Services.dirsvc.get("TmpD", Ci.nsIFile);
saveFile.append(dot.leafName + ".eml");
saveFile.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o600);
function run_test() {
registerCleanupFunction(teardown);
do_test_pending();
do_timeout(10000, function () {
do_throw(
"SaveMessageToDisk did not complete within 10 seconds" +
"(incorrect messageURI?). ABORTING."
);
});
copyFileMessageInLocalFolder(dot, 0, "", null, save_message);
}
async function save_message(aMessageHeaderKeys, aStatus) {
let headerKeys = aMessageHeaderKeys;
Assert.notEqual(headerKeys, null);
let message = localAccountUtils.inboxFolder.GetMessageHeader(headerKeys[0]);
let msgURI = localAccountUtils.inboxFolder.getUriForMsg(message);
let messageService = Cc[
"@mozilla.org/messenger/messageservice;1?type=mailbox-message"
].getService(Ci.nsIMsgMessageService);
let promiseUrlListener = new PromiseTestUtils.PromiseUrlListener();
messageService.SaveMessageToDisk(
msgURI,
saveFile,
false,
promiseUrlListener,
{},
true,
null
);
await promiseUrlListener.promise;
check_each_line(
await IOUtils.readUTF8(dot.path),
await IOUtils.readUTF8(saveFile.path)
);
do_test_finished();
}
function check_each_line(aExpectedLines, aActualLines) {
let expectedStrings = aExpectedLines.split(MSG_LINEBREAK);
let actualStrings = aActualLines.split(MSG_LINEBREAK);
expectedStrings.shift();
Assert.equal(expectedStrings.length, actualStrings.length);
for (let line = 0; line < expectedStrings.length; line++) {
Assert.equal(expectedStrings[line], actualStrings[line]);
}
}
function teardown() {
if (saveFile.exists()) {
saveFile.remove(false);
}
}
|