From: Artur Malabarba Date: Sun, 12 Apr 2015 00:10:35 +0000 (+0100) Subject: * test/automated/package-test.el: Test async functionality X-Git-Tag: emacs-25.0.90~2483 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7cae5c3cb6bcbee49e56c8d607d64071f9196952;p=emacs.git * test/automated/package-test.el: Test async functionality (package-test-update-archives-async): New test --- diff --git a/test/automated/data/package/package-test-server.py b/test/automated/data/package/package-test-server.py new file mode 100644 index 00000000000..35ca820f31f --- /dev/null +++ b/test/automated/data/package/package-test-server.py @@ -0,0 +1,21 @@ +import sys +import BaseHTTPServer +from SimpleHTTPServer import SimpleHTTPRequestHandler + + +HandlerClass = SimpleHTTPRequestHandler +ServerClass = BaseHTTPServer.HTTPServer +Protocol = "HTTP/1.0" + +if sys.argv[1:]: + port = int(sys.argv[1]) +else: + port = 8000 + server_address = ('127.0.0.1', port) + +HandlerClass.protocol_version = Protocol +httpd = ServerClass(server_address, HandlerClass) + +sa = httpd.socket.getsockname() +print "Serving HTTP on", sa[0], "port", sa[1], "..." +httpd.serve_forever() diff --git a/test/automated/package-test.el b/test/automated/package-test.el index 5fae216ef7d..b343ed7285d 100644 --- a/test/automated/package-test.el +++ b/test/automated/package-test.el @@ -103,6 +103,7 @@ (cl-defmacro with-package-test ((&optional &key file basedir install + location update-news upload-base) &rest body) @@ -112,7 +113,7 @@ (process-environment (cons (format "HOME=%s" package-test-user-dir) process-environment)) (package-user-dir package-test-user-dir) - (package-archives `(("gnu" . ,package-test-data-dir))) + (package-archives `(("gnu" . ,(or ,location package-test-data-dir)))) (default-directory package-test-file-dir) abbreviated-home-dir package--initialized @@ -336,6 +337,33 @@ Must called from within a `tar-mode' buffer." (package-menu-refresh) (should (package-installed-p 'simple-single '(1 4))))))) +(ert-deftest package-test-update-archives-async () + "Test updating package archives asynchronously." + (skip-unless (executable-find "python2")) + (with-package-test (:basedir + package-test-data-dir + :location "http://0.0.0.0:8000/") + (let* ((package-menu-async t) + (process (start-process + "package-server" "package-server-buffer" + (executable-find "python2") + (expand-file-name "package-test-server.py")))) + (unwind-protect + (progn + (list-packages) + (should package--downloads-in-progress) + (should mode-line-process) + (should-not (string= (format-mode-line mode-line-process) "")) + (should-not + (with-timeout (10 'timeout) + (while package--downloads-in-progress + (accept-process-output nil 1)) + nil)) + (goto-char (point-min)) + (should + (search-forward-regexp "^ +simple-single" nil t))) + (kill-process process))))) + (ert-deftest package-test-describe-package () "Test displaying help for a package."