tenfourfox/b2g/components/test/unit/test_logshake_gonk_compression.js
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

77 lines
2.1 KiB
JavaScript

/**
* 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();
});
});