5ba344516e
The test runner now downloads and caches the PDF tools for the current platform within the test data directory and only redownloads them when out of date, and it updates the download URL so that the full-text code pulls from the cache directory via a file:// URL. The installPDFTools() support function now installs the files directly instead of going through the prefs, and a new uninstallPDFTools() function removes the tools. Since the presence of the PDF tools can affect other tests, tests that need the tools should install them in a before() and uninstall them in an after(), leaving most tests to run without PDF indexing. This also adds a callback to the waitForWindow() support function. If a modal dialog is opened, it blocks the next promise handler from running, so a callback has to be used to interact with and close the dialog immediately.
55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
describe("Zotero.Fulltext", function () {
|
|
describe("#downloadPDFTool()", function () {
|
|
it("should install the PDF tools", function* () {
|
|
var version = "3.04";
|
|
var dataDir = Zotero.getZoteroDirectory().path;
|
|
var execFileName = Zotero.Fulltext.pdfInfoFileName;
|
|
var execPath = OS.Path.join(dataDir, execFileName);
|
|
var versionFileName = execFileName + '.version';
|
|
var versionPath = OS.Path.join(dataDir, versionFileName);
|
|
var scriptExt = Zotero.isWin ? 'vbs' : 'sh';
|
|
var scriptPath = OS.Path.join(dataDir, 'pdfinfo.' + scriptExt);
|
|
var scriptContents = yield Zotero.File.getContentsFromURLAsync(
|
|
'resource://zotero/redirect.' + scriptExt
|
|
);
|
|
var cacheExecPath = OS.Path.join(
|
|
getTestDataDirectory().path, "pdf", version, execFileName
|
|
);
|
|
|
|
// Delete existing files
|
|
try {
|
|
yield OS.File.remove(execPath);
|
|
}
|
|
catch (e) {}
|
|
try {
|
|
yield OS.File.remove(versionPath);
|
|
}
|
|
catch (e) {}
|
|
try {
|
|
yield OS.File.remove(scriptPath);
|
|
}
|
|
catch (e) {}
|
|
|
|
yield Zotero.Fulltext.downloadPDFTool('info', version);
|
|
|
|
assert.ok(Zotero.Fulltext.pdfInfoIsRegistered());
|
|
assert.equal(
|
|
(yield Zotero.File.getBinaryContentsAsync(cacheExecPath)),
|
|
(yield Zotero.File.getBinaryContentsAsync(execPath))
|
|
);
|
|
assert.equal((yield OS.File.stat(execPath)).unixMode, 0o755);
|
|
assert.equal(
|
|
(yield Zotero.File.getContentsAsync(versionPath)),
|
|
version
|
|
);
|
|
assert.equal(
|
|
(yield Zotero.File.getContentsAsync(scriptPath)),
|
|
scriptContents
|
|
);
|
|
assert.equal((yield OS.File.stat(scriptPath)).unixMode, 0o755);
|
|
|
|
yield Zotero.Fulltext.uninstallPDFTools();
|
|
assert.isFalse(Zotero.Fulltext.pdfInfoIsRegistered());
|
|
})
|
|
})
|
|
})
|