branch: externals/websocket
commit 5aaf9d12068f98fb4efa772a3e5f4bb350b79a99
Author: Andrew Hyatt <ahy...@gmail.com>
Commit: Andrew Hyatt <ahy...@gmail.com>

    Make the localhost-based test compatible with ert.
    
    Also, change the testserver.py echo server to be a true echo server, so 
that it
    acts in the same way echo.websocket.org does.
---
 testserver.py                |  2 +-
 websocket-functional-test.el | 83 +++++++++++++++++++++-----------------------
 2 files changed, 40 insertions(+), 45 deletions(-)

diff --git a/testserver.py b/testserver.py
old mode 100644
new mode 100755
index 79cd912882..46cf62d94d
--- a/testserver.py
+++ b/testserver.py
@@ -14,7 +14,7 @@ class EchoWebSocket(websocket.WebSocketHandler):
 
     def on_message(self, message):
         logging.info("ON_MESSAGE: {0}".format(message))
-        self.write_message("You said: {0}".format(message))
+        self.write_message(message)
 
     def on_close(self):
         logging.info("ON_CLOSE")
diff --git a/websocket-functional-test.el b/websocket-functional-test.el
index c70ebd2cb8..8a599d043d 100644
--- a/websocket-functional-test.el
+++ b/websocket-functional-test.el
@@ -29,29 +29,7 @@
 (require 'websocket)
 (require 'cl)
 
-;;;;;;;;;;;;;;;;;;;;;;;
-;; Local server test ;;
-;;;;;;;;;;;;;;;;;;;;;;;
-
-(message "Testing with local server")
-
-(setq websocket-debug t)
-
-(unless (boundp 'wstest-server-url)
-  (setq wstest-server-url "wss://echo.websocket.org"))
-
-(defvar wstest-server-buffer (get-buffer-create "*wstest-server*"))
-(defvar wstest-server-name "wstest-server")
-(when wstest-server-url "wss://127.0.0.1:9999"
-  (setq wstest-server-proc
-    (start-process wstest-server-name wstest-server-buffer
-                   "python3" "testserver.py" "--log_to_stderr" 
"--logging=debug")))
-(sleep-for 1)
-
-(defvar wstest-msgs nil)
-(defvar wstest-closed nil)
-
-(message "Opening the websocket")
+;;; Code:
 
 (defmacro websocket-test-wait-with-timeout (timeout &rest body)
   "Run BODY until true or TIMEOUT (in seconds) is reached.
@@ -65,29 +43,43 @@ written to be used widely."
        (sleep-for 0.5))
      result))
 
+(defun websocket-functional-client-test (wstest-server-url)
+  "Run the main part of an ert test against WSTEST-SERVER-URL."
+  ;; the server may have an untrusted certificate, for the test to proceed, we
+  ;; need to disable trust checking.
+  (let* ((tls-checktrust nil)
+         (wstest-closed nil)
+         (wstest-msg)
+         (wstest-server-proc)
+         (wstest-ws
+          (websocket-open
+           wstest-server-url
+           :on-message (lambda (_websocket frame)
+                         (setq wstest-msg (websocket-frame-text frame)))
+           :on-close (lambda (_websocket) (setq wstest-closed t)))))
+    (should (websocket-test-wait-with-timeout 2 (websocket-openp wstest-ws)))
+    (should (websocket-test-wait-with-timeout 2 (eq 'open 
(websocket-ready-state wstest-ws))))
+    (should (null wstest-msg))
+    (websocket-send-text wstest-ws "Hi!")
+    (should (websocket-test-wait-with-timeout 5 (equal wstest-msg "Hi!")))
+    (websocket-close wstest-ws)))
+
+(ert-deftest websocket-client-with-local-server ()
+  ;; If testserver.py cannot start, this test will fail. In general, if you
+  ;; don't care about avoiding outside connections, the remote server variant 
is
+  ;; usually easier to run, and tests the same things..
+  (let ((proc (start-process
+               "websocket-testserver" "*websocket-testserver*"
+               "python3" "testserver.py" "--log_to_stderr" "--logging=debug")))
+    (when proc
+      (sleep-for 1)
+      (websocket-functional-client-test "ws://127.0.0.1:9999"))))
+
 (ert-deftest websocket-client-with-remote-server ()
   ;; Emacs previous to Emacs 24 cannot handle wss.
-  (when (>= (string-to-number (substring emacs-version 0 2)) 24)
-    ;; echo.websocket.org has an untrusted certificate, for the test to
-    ;; proceed, we need to disable trust checking.
-    (let* ((tls-checktrust nil)
-             (wstest-closed nil)
-             (wstest-msg)
-             (wstest-ws
-              (websocket-open
-               wstest-server-url
-               :on-message (lambda (_websocket frame)
-                             (setq wstest-msg (websocket-frame-text frame)))
-               :on-close (lambda (_websocket) (setq wstest-closed t)))))
-        (should (websocket-test-wait-with-timeout 2 (websocket-openp 
wstest-ws)))
-        (should (websocket-test-wait-with-timeout 2 (eq 'open 
(websocket-ready-state wstest-ws))))
-        (should (null wstest-msg))
-        (websocket-send-text wstest-ws "Hi!")
-        (should (websocket-test-wait-with-timeout 5 (equal wstest-msg "Hi!")))
-        (websocket-close wstest-ws)
-        (when wstest-server-proc
-          (sleep-for 1)
-          (kill-process wstest-server-proc)))))
+  (if (>= (string-to-number (substring emacs-version 0 2)) 24)
+      (websocket-functional-client-test "wss://echo.websocket.org")
+    (websocket-functional-client-test "ws://echo.websocket.org")))
 
 (ert-deftest websocket-server ()
   (let* ((wstest-closed)
@@ -109,3 +101,6 @@ written to be used widely."
     (should (websocket-test-wait-with-timeout 1 (equal wstest-msg "你好")))
     (websocket-server-close server-conn)
     (should (websocket-test-wait-with-timeout 1 wstest-closed))))
+
+(provide 'websocket-functional-test)
+;;; websocket-functional-test.el ends here

Reply via email to