mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-19 21:57:59 +01:00
95 lines
3.0 KiB
JavaScript
95 lines
3.0 KiB
JavaScript
const utils = require("utils");
|
|
const { module } = utils;
|
|
|
|
var jumlib = module("resource://mozmill/modules/jum.js");
|
|
var dactyllib = module("dactyl");
|
|
|
|
const { Services } = module("resource://gre/modules/Services.jsm");
|
|
|
|
var setupModule = function (module) {
|
|
controller = mozmill.getBrowserController();
|
|
dactyl = new dactyllib.Controller(controller);
|
|
};
|
|
|
|
var teardownModule = function (module) {
|
|
dactyl.teardown();
|
|
}
|
|
|
|
var setupTest = function (test) {
|
|
dactyl.runViCommand([["VK_ESCAPE"]]);
|
|
};
|
|
|
|
function urlTarget(url) Services.io.newChannel(url, null, null).name;
|
|
|
|
function urlExists(url) {
|
|
try {
|
|
let chan = Services.io.newChannel(url);
|
|
chan.open();
|
|
try { chan.cancel(Cr.NS_BINDING_ABORTED) } catch (e) {}
|
|
return true;
|
|
}
|
|
catch (e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
const HELP_FILES = ["all", "tutorial", "intro", "starting", "browsing",
|
|
"buffer", "cmdline", "editing", "options", "pattern", "tabs", "hints",
|
|
"map", "eval", "marks", "repeat", "autocommands", "print", "gui",
|
|
"styling", "message", "privacy", "developer", "various", "plugins", "faq",
|
|
"versions", "index"];
|
|
|
|
var testViHelpCommand_OpensIntroHelpPage = function () {
|
|
assertHelpOpensPageWithTag({
|
|
HELP_COMMAND: function () { dactyl.runViCommand([["VK_F1"]]); },
|
|
EXPECTED_HELP_TAG: "intro.xml"
|
|
});
|
|
};
|
|
|
|
var testViHelpAllCommand_OpensAllHelpPage = function () {
|
|
assertHelpOpensPageWithTag({
|
|
HELP_COMMAND: function () { dactyl.runViCommand([["VK_F1", { altKey: true }]]); },
|
|
EXPECTED_HELP_TAG: "all.xml"
|
|
});
|
|
};
|
|
|
|
var testExHelpCommand_NoArgs_OpensIntroHelpPage = function () {
|
|
assertHelpOpensPageWithTag({
|
|
HELP_COMMAND: function () { dactyl.runExCommand("help"); },
|
|
EXPECTED_HELP_TAG: "intro.xml"
|
|
});
|
|
};
|
|
|
|
var testExHelpAllCommand_NoArgs_OpensAllHelpPage = function () {
|
|
assertHelpOpensPageWithTag({
|
|
HELP_COMMAND: function () { dactyl.runExCommand("helpall"); },
|
|
EXPECTED_HELP_TAG: "all.xml"
|
|
});
|
|
};
|
|
|
|
var testExHelpCommand_PageTagArg_OpensHelpPageContainingTag = function () {
|
|
for (let [, file] in Iterator(HELP_FILES)) {
|
|
let tag = file + ".xml";
|
|
assertHelpOpensPageWithTag({
|
|
HELP_COMMAND: function () { dactyl.runExCommand("help " + tag); },
|
|
EXPECTED_HELP_TAG: tag
|
|
});
|
|
|
|
let links = controller.tabs.activeTab.querySelectorAll("a[href^='dactyl:']");
|
|
|
|
let missing = Array.filter(links, function (link) urlExists(link.href))
|
|
.map(function (link) link.textContent + " -> " + link.href);
|
|
|
|
utils.assertEqual("testHelpCommands.assertNoDeadLinks", 0, missing.length,
|
|
"Found dead links in " + tag + ": " + missing.join(", "));
|
|
}
|
|
};
|
|
|
|
function assertHelpOpensPageWithTag({ HELP_COMMAND, EXPECTED_HELP_TAG }) {
|
|
HELP_COMMAND();
|
|
controller.waitForPageLoad(controller.tabs.activeTab);
|
|
controller.assertNode(new elementslib.ID(controller.tabs.activeTab, EXPECTED_HELP_TAG));
|
|
}
|
|
|
|
// vim: sw=4 ts=8 et:
|