]> git.eshelyaron.com Git - emacs.git/commitdiff
Use lexical-binding in puny.el and add more tests
authorStefan Kangas <stefankangas@gmail.com>
Tue, 28 Apr 2020 16:13:58 +0000 (18:13 +0200)
committerStefan Kangas <stefankangas@gmail.com>
Tue, 28 Apr 2020 16:14:28 +0000 (18:14 +0200)
* lisp/net/puny.el: Use lexical-binding.
* test/lisp/net/puny-tests.el (puny-test-encode-domain)
(puny-test-decode-domain, puny-highly-restrictive-domain-p): New
tests.

lisp/net/puny.el
test/lisp/net/puny-tests.el

index 6987d253248d42af58893d72698efb52af0de08d..cc406076c580d324a4acb3b854cae5f6cc7bd9c2 100644 (file)
@@ -1,4 +1,4 @@
-;;; puny.el --- translate non-ASCII domain names to ASCII
+;;; puny.el --- translate non-ASCII domain names to ASCII  -*- lexical-binding:t -*-
 
 ;; Copyright (C) 2015-2020 Free Software Foundation, Inc.
 
index 288bc2ff6fe9ff0820566136a78adaa7e306fb59..7dac39795b6cb1be0af8d196201524e80644582e 100644 (file)
   "Test puny decoding."
   (should (string= (puny-decode-string "xn--9dbdkw") "חנוך")))
 
+(ert-deftest puny-test-encode-domain ()
+  (should (string= (puny-encode-domain "åäö.se") "xn--4cab6c.se")))
+
+(ert-deftest puny-test-decode-domain ()
+  (should (string= (puny-decode-domain "xn--4cab6c.se") "åäö.se")))
+
+(ert-deftest puny-highly-restrictive-domain-p ()
+  (should (puny-highly-restrictive-domain-p "foo.bar.org"))
+  (should (puny-highly-restrictive-domain-p "foo.abcåäö.org"))
+  (should (puny-highly-restrictive-domain-p "foo.ர.org"))
+  ;; Disallow unicode character 2044, visually similar to "/".
+  (should-not (puny-highly-restrictive-domain-p "www.yourbank.com⁄login⁄checkUser.jsp?inxs.ch"))
+  ;; Disallow mixing scripts.
+  (should-not (puny-highly-restrictive-domain-p "åர.org"))
+  ;; Only allowed in moderately restrictive.
+  (should-not (puny-highly-restrictive-domain-p "Teχ.org"))
+  (should-not (puny-highly-restrictive-domain-p "HλLF-LIFE.org"))
+  (should-not (puny-highly-restrictive-domain-p "Ωmega.org"))
+  ;; Only allowed in unrestricted.
+  (should-not (puny-highly-restrictive-domain-p "I♥NY.org")))
+
 ;;; puny-tests.el ends here