From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001
From: Daniel Baumann <daniel.baumann@progress-linux.org>
Date: Sun, 7 Apr 2024 21:33:14 +0200
Subject: Adding upstream version 115.7.0esr.

Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
---
 .../tests/no-throw-cr-literal.js                   | 62 ++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100644 tools/lint/eslint/eslint-plugin-mozilla/tests/no-throw-cr-literal.js

(limited to 'tools/lint/eslint/eslint-plugin-mozilla/tests/no-throw-cr-literal.js')

diff --git a/tools/lint/eslint/eslint-plugin-mozilla/tests/no-throw-cr-literal.js b/tools/lint/eslint/eslint-plugin-mozilla/tests/no-throw-cr-literal.js
new file mode 100644
index 0000000000..aecc5cd971
--- /dev/null
+++ b/tools/lint/eslint/eslint-plugin-mozilla/tests/no-throw-cr-literal.js
@@ -0,0 +1,62 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// ------------------------------------------------------------------------------
+// Requirements
+// ------------------------------------------------------------------------------
+
+var rule = require("../lib/rules/no-throw-cr-literal");
+var RuleTester = require("eslint").RuleTester;
+
+const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: "latest" } });
+
+// ------------------------------------------------------------------------------
+// Tests
+// ------------------------------------------------------------------------------
+
+function invalidCode(code, output, messageId) {
+  return {
+    code,
+    output,
+    errors: [{ messageId, type: "ThrowStatement" }],
+  };
+}
+
+ruleTester.run("no-throw-cr-literal", rule, {
+  valid: [
+    'throw Components.Exception("", Cr.NS_ERROR_NOT_IMPLEMENTED);',
+    'throw Components.Exception("", Components.results.NS_ERROR_UNEXPECTED);',
+    'function t() { throw Components.Exception("", Cr.NS_ERROR_NO_CONTENT); }',
+    // We don't handle combined values, regular no-throw-literal catches them
+    'throw Components.results.NS_ERROR_UNEXPECTED + "whoops";',
+  ],
+  invalid: [
+    invalidCode(
+      "throw Cr.NS_ERROR_NO_INTERFACE;",
+      'throw Components.Exception("", Cr.NS_ERROR_NO_INTERFACE);',
+      "bareCR"
+    ),
+    invalidCode(
+      "throw Components.results.NS_ERROR_ABORT;",
+      'throw Components.Exception("", Components.results.NS_ERROR_ABORT);',
+      "bareComponentsResults"
+    ),
+    invalidCode(
+      "function t() { throw Cr.NS_ERROR_NULL_POINTER; }",
+      'function t() { throw Components.Exception("", Cr.NS_ERROR_NULL_POINTER); }',
+      "bareCR"
+    ),
+    invalidCode(
+      "throw new Error(Cr.NS_ERROR_ABORT);",
+      'throw Components.Exception("", Cr.NS_ERROR_ABORT);',
+      "newErrorCR"
+    ),
+    invalidCode(
+      "throw new Error(Components.results.NS_ERROR_ABORT);",
+      'throw Components.Exception("", Components.results.NS_ERROR_ABORT);',
+      "newErrorComponentsResults"
+    ),
+  ],
+});
-- 
cgit v1.2.3