branch: master commit 734930943cdd9359ff1e5dec4561cb0316752698 Author: Julian Kniephoff <m...@juliankniephoff.com> Commit: Julian Kniephoff <m...@juliankniephoff.com>
Add tests for `/*jslint*/` declarations --- tests/externs.el | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/tests/externs.el b/tests/externs.el index 3540f3c..f383e89 100644 --- a/tests/externs.el +++ b/tests/externs.el @@ -59,3 +59,68 @@ ;;;TODO ;; ensure that any symbols bound with the import syntax are added to the extern list ;; ensure that any symbols bound with the export syntax exist in the file scope + +;; Test `/*jslint*/` declarations + +(ert-deftest js2-finds-jslint-declaration-externs () + (with-temp-buffer + (insert "/*jslint browser: true, node: true*/") + (js2-mode) + (let ((found-externs (js2-get-jslint-declaration-externs))) + (should (and (member "navigator" found-externs) + (member "__filename" found-externs)))))) + +(ert-deftest js2-finds-jslint-declaration-externs-without-property-value () + (with-temp-buffer + (insert "/*jslint devel, es6: true, couch") + (js2-mode) + (let ((found-externs (js2-get-jslint-declaration-externs))) + (should (and (member "prompt" found-externs) + (member "Promise" found-externs) + (member "require" found-externs)))))) + +(ert-deftest js2-no-jslint-declaration-externs-without-keyword () + (with-temp-buffer + (insert "/* browser: true, node: true*/") + (js2-mode) + (should (null (js2-get-jslint-declaration-externs))))) + +(ert-deftest js2-no-jslint-declaration-externs-for-nonexistent-env () + (with-temp-buffer + (insert "/*jslint nonexistent: true*/") + (js2-mode) + (should (null (js2-get-jslint-declaration-externs))))) + +(ert-deftest js2-finding-jslint-declaration-externs-ignores-nonexistent () + (with-temp-buffer + (insert "/*jslint es6: true, nonexistent: true, couch: true*/") + (js2-mode) + (let ((found-externs (js2-get-jslint-declaration-externs))) + (should (and (member "Map" found-externs) + (member "emit" found-externs)))))) + +(ert-deftest js2-finds-jslint-declaration-externs-in-other-comments () + (with-temp-buffer + (insert "/* foo, bar */\n\n\n/*jslint devel: true, node: true*/") + (js2-mode) + (let ((found-externs (js2-get-jslint-declaration-externs))) + (should (and (member "Debug" found-externs) + (member "exports" found-externs)))))) + +(ert-deftest js2-finds-jslint-declaration-externs-with-space () + (with-temp-buffer + (insert "/* jslint browser: true, couch:true,es6 :true */") + (js2-mode) + (let ((found-externs (js2-get-jslint-declaration-externs))) + (should (and (member "document" found-externs) + (member "getRow" found-externs) + (member "Proxy" found-externs)))))) + +(ert-deftest js2-finds-jslint-globals-with-newline () + (with-temp-buffer + (insert "/*jslint\nbrowser: true,\nnode:\ntrue\n, devel:\ntrue\n*/") + (js2-mode) + (let ((found-externs (js2-get-jslint-declaration-externs))) + (should (and (member "history" found-externs) + (member "Buffer" found-externs) + (member "alert" found-externs))))))