summaryrefslogtreecommitdiffstats
path: root/toolkit/components/commandlines/test
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/commandlines/test')
-rw-r--r--toolkit/components/commandlines/test/unit/data/test_bug410156.desktop7
-rw-r--r--toolkit/components/commandlines/test/unit/data/test_bug410156.url9
-rw-r--r--toolkit/components/commandlines/test/unit/test_bug666224.js10
-rw-r--r--toolkit/components/commandlines/test/unit/test_classinfo.js12
-rw-r--r--toolkit/components/commandlines/test/unit/test_createCommandLine.js62
-rw-r--r--toolkit/components/commandlines/test/unit/test_handleFlagWithParam.js66
-rw-r--r--toolkit/components/commandlines/test/unit/test_resolvefile.js36
-rw-r--r--toolkit/components/commandlines/test/unit/xpcshell.toml17
-rw-r--r--toolkit/components/commandlines/test/unit_unix/test_bug410156.js14
-rw-r--r--toolkit/components/commandlines/test/unit_unix/xpcshell.toml9
-rw-r--r--toolkit/components/commandlines/test/unit_win/test_bug410156.js14
-rw-r--r--toolkit/components/commandlines/test/unit_win/xpcshell.toml8
12 files changed, 264 insertions, 0 deletions
diff --git a/toolkit/components/commandlines/test/unit/data/test_bug410156.desktop b/toolkit/components/commandlines/test/unit/data/test_bug410156.desktop
new file mode 100644
index 0000000000..1847cdd98e
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit/data/test_bug410156.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Version=1.0
+Encoding=UTF-8
+Name=test_bug410156
+Type=Link
+URL=http://www.bug410156.com/
+Icon=gnome-fs-bookmark
diff --git a/toolkit/components/commandlines/test/unit/data/test_bug410156.url b/toolkit/components/commandlines/test/unit/data/test_bug410156.url
new file mode 100644
index 0000000000..6920e1f774
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit/data/test_bug410156.url
@@ -0,0 +1,9 @@
+[InternetShortcut]
+URL=http://www.bug410156.com/
+IDList=
+HotKey=0
+[{000214A0-0000-0000-C000-000000000046}]
+Prop3=19,2
+[InternetShortcut.A]
+[InternetShortcut.W]
+URL=http://www.bug410156.com/
diff --git a/toolkit/components/commandlines/test/unit/test_bug666224.js b/toolkit/components/commandlines/test/unit/test_bug666224.js
new file mode 100644
index 0000000000..acb162dd25
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit/test_bug666224.js
@@ -0,0 +1,10 @@
+function run_test() {
+ var cmdLine = Cu.createCommandLine(
+ [],
+ null,
+ Ci.nsICommandLine.STATE_INITIAL_LAUNCH
+ );
+ try {
+ cmdLine.getArgument(cmdLine.length);
+ } catch (e) {}
+}
diff --git a/toolkit/components/commandlines/test/unit/test_classinfo.js b/toolkit/components/commandlines/test/unit/test_classinfo.js
new file mode 100644
index 0000000000..985b00d58c
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit/test_classinfo.js
@@ -0,0 +1,12 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+function run_test() {
+ var commandLine = Cu.createCommandLine(
+ [],
+ null,
+ Ci.nsICommandLine.STATE_INITIAL_LAUNCH
+ );
+ Assert.ok("length" in commandLine);
+}
diff --git a/toolkit/components/commandlines/test/unit/test_createCommandLine.js b/toolkit/components/commandlines/test/unit/test_createCommandLine.js
new file mode 100644
index 0000000000..08c02981d9
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit/test_createCommandLine.js
@@ -0,0 +1,62 @@
+/* Any copyright is dedicated to the Public Domain.
+http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_task(async function test_createCommandLine() {
+ const EXISTING_FILE = do_get_file("xpcshell.toml");
+
+ // Test `arguments`.
+ let cmdLine = Cu.createCommandLine(
+ [],
+ null,
+ Ci.nsICommandLine.STATE_REMOTE_EXPLICIT
+ );
+ Assert.equal(cmdLine.length, 0);
+ Assert.throws(() => cmdLine.workingDirectory, /NS_ERROR_NOT_INITIALIZED/);
+ Assert.equal(cmdLine.state, Ci.nsICommandLine.STATE_REMOTE_EXPLICIT);
+
+ cmdLine = Cu.createCommandLine(
+ ["test"],
+ null,
+ Ci.nsICommandLine.STATE_REMOTE_EXPLICIT
+ );
+ Assert.equal(cmdLine.length, 1);
+ Assert.equal(cmdLine.getArgument(0), "test");
+ Assert.throws(() => cmdLine.getArgument(1), /NS_ERROR_ILLEGAL_VALUE/);
+ Assert.throws(() => cmdLine.workingDirectory, /NS_ERROR_NOT_INITIALIZED/);
+ Assert.equal(cmdLine.state, Ci.nsICommandLine.STATE_REMOTE_EXPLICIT);
+
+ cmdLine = Cu.createCommandLine(
+ ["test1", "test2"],
+ null,
+ Ci.nsICommandLine.STATE_REMOTE_EXPLICIT
+ );
+ Assert.equal(cmdLine.length, 2);
+ Assert.equal(cmdLine.getArgument(0), "test1");
+ Assert.equal(cmdLine.getArgument(1), "test2");
+ Assert.throws(() => cmdLine.getArgument(2), /NS_ERROR_ILLEGAL_VALUE/);
+ Assert.throws(() => cmdLine.workingDirectory, /NS_ERROR_NOT_INITIALIZED/);
+ Assert.equal(cmdLine.state, Ci.nsICommandLine.STATE_REMOTE_EXPLICIT);
+
+ // Test `workingDirectory`.
+ cmdLine = Cu.createCommandLine(
+ [],
+ EXISTING_FILE.parent,
+ Ci.nsICommandLine.STATE_REMOTE_AUTO
+ );
+ Assert.equal(cmdLine.length, 0);
+ Assert.equal(cmdLine.workingDirectory.path, EXISTING_FILE.parent.path);
+ Assert.equal(cmdLine.state, Ci.nsICommandLine.STATE_REMOTE_AUTO);
+
+ // Test `state`.
+ cmdLine = Cu.createCommandLine([], null, Ci.nsICommandLine.STATE_REMOTE_AUTO);
+ Assert.equal(cmdLine.state, Ci.nsICommandLine.STATE_REMOTE_AUTO);
+
+ cmdLine = Cu.createCommandLine(
+ [],
+ EXISTING_FILE.parent,
+ Ci.nsICommandLine.STATE_REMOTE_EXPLICIT
+ );
+ Assert.equal(cmdLine.state, Ci.nsICommandLine.STATE_REMOTE_EXPLICIT);
+});
diff --git a/toolkit/components/commandlines/test/unit/test_handleFlagWithParam.js b/toolkit/components/commandlines/test/unit/test_handleFlagWithParam.js
new file mode 100644
index 0000000000..539ac1a819
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit/test_handleFlagWithParam.js
@@ -0,0 +1,66 @@
+/* Any copyright is dedicated to the Public Domain.
+http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const { AppConstants } = ChromeUtils.importESModule(
+ "resource://gre/modules/AppConstants.sys.mjs"
+);
+
+add_task(async function test_handleFlagWithParam() {
+ let goodInputs = [
+ ["-arg", "value"],
+ ["--arg", "value"],
+ ["-arg=value"],
+ ["--arg=value"],
+ ];
+ let badInputs = [["-arg", "-value"]];
+ // Accepted only on Windows. Perhaps surprisingly, "/arg=value" is not accepted.
+ let windowsInputs = [["/arg", "value"], ["/arg:value"]];
+
+ if (AppConstants.platform == "win") {
+ goodInputs.push(...windowsInputs);
+ }
+
+ for (let args of goodInputs) {
+ let cmdLine = Cu.createCommandLine(
+ args,
+ null,
+ Ci.nsICommandLine.STATE_REMOTE_EXPLICIT
+ );
+ Assert.equal(
+ cmdLine.handleFlagWithParam("arg", false),
+ "value",
+ `${JSON.stringify(args)} yields 'value' for 'arg'`
+ );
+ }
+
+ for (let args of badInputs) {
+ let cmdLine = Cu.createCommandLine(
+ args,
+ null,
+ Ci.nsICommandLine.STATE_REMOTE_EXPLICIT
+ );
+ Assert.throws(
+ () => cmdLine.handleFlagWithParam("arg", false),
+ /NS_ERROR_ILLEGAL_VALUE/,
+ `${JSON.stringify(args)} throws for 'arg'`
+ );
+ }
+
+ if (AppConstants.platform != "win") {
+ // No special meaning on non-Windows platforms.
+ for (let args of windowsInputs) {
+ let cmdLine = Cu.createCommandLine(
+ args,
+ null,
+ Ci.nsICommandLine.STATE_REMOTE_EXPLICIT
+ );
+ Assert.equal(
+ cmdLine.handleFlagWithParam("arg", false),
+ null,
+ `${JSON.stringify(args)} yields null for 'arg'`
+ );
+ }
+ }
+});
diff --git a/toolkit/components/commandlines/test/unit/test_resolvefile.js b/toolkit/components/commandlines/test/unit/test_resolvefile.js
new file mode 100644
index 0000000000..2c1d01b049
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit/test_resolvefile.js
@@ -0,0 +1,36 @@
+/* Any copyright is dedicated to the Public Domain.
+http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_task(async function test_resolveFile() {
+ const EXISTING_FILE = do_get_file("xpcshell.toml");
+ // We explicitly do not initialize this with a working dir.
+ let cmdLine = Cu.createCommandLine(
+ [],
+ null,
+ Ci.nsICommandLine.STATE_REMOTE_EXPLICIT
+ );
+ let fileByPath = cmdLine.resolveFile(EXISTING_FILE.path);
+ info("Resolved: " + fileByPath.path);
+ Assert.ok(EXISTING_FILE.equals(fileByPath), "Should find the same file");
+
+ Assert.ok(
+ !cmdLine.resolveFile("xpcshell.toml"),
+ "Should get null for relative files."
+ );
+
+ // Now create a commandline with a working dir:
+ cmdLine = Cu.createCommandLine(
+ [],
+ EXISTING_FILE.parent,
+ Ci.nsICommandLine.STATE_REMOTE_EXPLICIT
+ );
+ let resolvedTxtFile = cmdLine.resolveFile("xpcshell.toml");
+
+ info("Resolved: " + resolvedTxtFile.path);
+ Assert.ok(
+ EXISTING_FILE.equals(resolvedTxtFile),
+ "Should resolve relative file."
+ );
+});
diff --git a/toolkit/components/commandlines/test/unit/xpcshell.toml b/toolkit/components/commandlines/test/unit/xpcshell.toml
new file mode 100644
index 0000000000..ecb076c7af
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit/xpcshell.toml
@@ -0,0 +1,17 @@
+[DEFAULT]
+head = ""
+skip-if = ["os == 'android'"]
+support-files = [
+ "data/test_bug410156.desktop",
+ "data/test_bug410156.url",
+]
+
+["test_bug666224.js"]
+
+["test_classinfo.js"]
+
+["test_createCommandLine.js"]
+
+["test_handleFlagWithParam.js"]
+
+["test_resolvefile.js"]
diff --git a/toolkit/components/commandlines/test/unit_unix/test_bug410156.js b/toolkit/components/commandlines/test/unit_unix/test_bug410156.js
new file mode 100644
index 0000000000..71c45b8638
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit_unix/test_bug410156.js
@@ -0,0 +1,14 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+function run_test() {
+ var commandLine = Cu.createCommandLine(
+ [],
+ null,
+ Ci.nsICommandLine.STATE_INITIAL_LAUNCH
+ );
+ var urlFile = do_get_file("../unit/data/test_bug410156.desktop");
+ var uri = commandLine.resolveURI(urlFile.path);
+ Assert.equal(uri.spec, "http://www.bug410156.com/");
+}
diff --git a/toolkit/components/commandlines/test/unit_unix/xpcshell.toml b/toolkit/components/commandlines/test/unit_unix/xpcshell.toml
new file mode 100644
index 0000000000..63fc54a2d7
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit_unix/xpcshell.toml
@@ -0,0 +1,9 @@
+[DEFAULT]
+head = ""
+skip-if = ["os == 'android'"]
+support-files = [
+ "!/toolkit/components/commandlines/test/unit/data/test_bug410156.desktop",
+ "!/toolkit/components/commandlines/test/unit/data/test_bug410156.url",
+]
+
+["test_bug410156.js"]
diff --git a/toolkit/components/commandlines/test/unit_win/test_bug410156.js b/toolkit/components/commandlines/test/unit_win/test_bug410156.js
new file mode 100644
index 0000000000..61a3c2ef40
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit_win/test_bug410156.js
@@ -0,0 +1,14 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+function run_test() {
+ var commandLine = Cu.createCommandLine(
+ [],
+ null,
+ Ci.nsICommandLine.STATE_INITIAL_LAUNCH
+ );
+ var urlFile = do_get_file("../unit/data/test_bug410156.url");
+ var uri = commandLine.resolveURI(urlFile.path);
+ Assert.equal(uri.spec, "http://www.bug410156.com/");
+}
diff --git a/toolkit/components/commandlines/test/unit_win/xpcshell.toml b/toolkit/components/commandlines/test/unit_win/xpcshell.toml
new file mode 100644
index 0000000000..ab4b493e82
--- /dev/null
+++ b/toolkit/components/commandlines/test/unit_win/xpcshell.toml
@@ -0,0 +1,8 @@
+[DEFAULT]
+head = ""
+support-files = [
+ "!/toolkit/components/commandlines/test/unit/data/test_bug410156.desktop",
+ "!/toolkit/components/commandlines/test/unit/data/test_bug410156.url",
+]
+
+["test_bug410156.js"]