summaryrefslogtreecommitdiffstats
path: root/toolkit/components/commandlines/test/unit/test_handleFlagWithParam.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/commandlines/test/unit/test_handleFlagWithParam.js')
-rw-r--r--toolkit/components/commandlines/test/unit/test_handleFlagWithParam.js66
1 files changed, 66 insertions, 0 deletions
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'`
+ );
+ }
+ }
+});