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
70
71
72
73
74
75
76
|
/**
* Test the log capturing capabilities of LogShake.jsm, checking
* for Gonk-specific parts
*/
/* jshint moz: true, esnext: true */
/* global Cc, Ci, Cu, LogCapture, LogShake, ok, add_test, run_next_test, dump,
setup_logshake_mocks, OS, sdcard, FileUtils */
/* exported run_test */
/* disable use strict warning */
/* jshint -W097 */
"use strict";
Cu.import("resource://gre/modules/Promise.jsm");
Cu.import("resource://gre/modules/FileUtils.jsm");
function run_test() {
Cu.import("resource://gre/modules/LogShake.jsm");
run_next_test();
}
add_test(setup_logshake_mocks);
add_test(function test_logShake_captureLogs_writes_zip() {
// Enable LogShake
LogShake.init();
let expectedFiles = [];
LogShake.enableQAMode();
LogShake.captureLogs().then(logResults => {
LogShake.uninit();
ok(logResults.logPaths.length === 1, "Should have zip path");
ok(logResults.logFilenames.length >= 1, "Should have log filenames");
ok(logResults.compressed, "Log files should be compressed");
let zipPath = OS.Path.join(sdcard, logResults.logPaths[0]);
ok(zipPath, "Should have a valid archive path: " + zipPath);
let zipFile = new FileUtils.File(zipPath);
ok(zipFile, "Should have a valid archive file: " + zipFile);
let zipReader = Cc["@mozilla.org/libjar/zip-reader;1"]
.createInstance(Ci.nsIZipReader);
zipReader.open(zipFile);
let logFilenamesSeen = {};
let zipEntries = zipReader.findEntries(null); // Find all entries
while (zipEntries.hasMore()) {
let entryName = zipEntries.getNext();
let entry = zipReader.getEntry(entryName);
logFilenamesSeen[entryName] = true;
ok(!entry.isDirectory, "Archive entry " + entryName + " should be a file");
}
zipReader.close();
// TODO: Verify archive contents
logResults.logFilenames.forEach(filename => {
ok(logFilenamesSeen[filename], "File " + filename + " should be present in archive");
});
run_next_test();
},
error => {
LogShake.uninit();
ok(false, "Should not have received error: " + error);
run_next_test();
});
});
|