unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Lin Sun <sunlin7.mail@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 70722@debbugs.gnu.org
Subject: bug#70722: [PATCH] ; Migrate to python3 for (package-test-update-archives-async)
Date: Mon, 6 May 2024 00:28:07 +0000	[thread overview]
Message-ID: <CABCREdq8mQa68W_WQmjDXAj82Og5nx6Yprq2-yn2fLPTE4pUwQ@mail.gmail.com> (raw)
In-Reply-To: <86sez0jb7i.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 1225 bytes --]

On Thu, May 2, 2024 at 6:55 PM Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Lin Sun <sunlin7.mail@gmail.com>
> > Date: Thu, 2 May 2024 18:11:04 +0000
> >
> > The test case "package-test-update-archives-async" still tries to
> > search "python2" for testing, while python2 was at the end of its life
> > years ago.
> > So move the test case from python2 to python3.
>
> I'd prefer to make the test support both Python 2.x and Python 3.x.
> The fact that python.org end-of-life'd Python 2 doesn't mean we have
> to jump to attention and follow suit.  Old systems might still have
> Python 2 installed, and there's no need to drop them.
>
> I do agree that we should try looking for Python 3 first, and only
> afterwards for Python 2.
>
> Also, I think the test should start by looking for just "python",
> before the versioned variants.
>
> E.g., on my system (executable-find "python3") returns nil, although I
> have Python 3.x installed -- but it's installed under the name
> "python".
Thanks for the comment, and it's true that python2 will still exist
for many years.
And I had changed the test case to adapt python/python3/python2 automatically.
Please help review the new patch. Thanks.

[-- Attachment #2: 0001-Support-python3-for-package-test-update-archives-asy.patch --]
[-- Type: text/x-patch, Size: 3611 bytes --]

From 814d21df047460be1eae004ad2031a97059f4665 Mon Sep 17 00:00:00 2001
From: Lin Sun <sunlin7@hotmail.com>
Date: Thu, 2 May 2024 06:52:09 +0000
Subject: [PATCH] ; Support python3 for (package-test-update-archives-async)
 (bug#70722)

* lisp/emacs-lisp/package-tests.el (package-test-update-archives-async):
  Searching python/python3/pyhton2 and decides coresponding python
  script file.
* test/lisp/emacs-lisp/package-resources/package-test-server.py3:
  Python3 script for package test server.
---
 .../package-resources/package-test-server.py3 | 17 ++++++++++++
 test/lisp/emacs-lisp/package-tests.el         | 26 +++++++++++++++----
 2 files changed, 38 insertions(+), 5 deletions(-)
 create mode 100644 test/lisp/emacs-lisp/package-resources/package-test-server.py3

diff --git a/test/lisp/emacs-lisp/package-resources/package-test-server.py3 b/test/lisp/emacs-lisp/package-resources/package-test-server.py3
new file mode 100644
index 00000000000..8f2d2db5f96
--- /dev/null
+++ b/test/lisp/emacs-lisp/package-resources/package-test-server.py3
@@ -0,0 +1,17 @@
+## package-test-server.py3 -*- mode: python; coding: utf-8 -*-
+import sys
+from http.server import HTTPServer, SimpleHTTPRequestHandler
+
+
+HandlerClass = SimpleHTTPRequestHandler
+HandlerClass.protocol_version = "HTTP/1.0"
+server_address = ('127.0.0.1', int(sys.argv[1]) if sys.argv[1:] else 0)
+httpd = HTTPServer(server_address, HandlerClass)
+
+ip, port = httpd.socket.getsockname()[0:2]
+print ("Server started, http://%s:%s/" % (ip, port))
+# Flush in case we're in full buffering mode (instead of line
+# buffering), this might happen if python is a cygwin program and we
+# run it from a native w32 program.
+sys.stdout.flush()
+httpd.serve_forever()
diff --git a/test/lisp/emacs-lisp/package-tests.el b/test/lisp/emacs-lisp/package-tests.el
index d95b94f2145..3309ba32e0d 100644
--- a/test/lisp/emacs-lisp/package-tests.el
+++ b/test/lisp/emacs-lisp/package-tests.el
@@ -634,14 +634,30 @@ but with a different end of line convention (bug#48137)."
 (ert-deftest package-test-update-archives-async ()
   "Test updating package archives asynchronously."
   :tags '(:expensive-test)
-  (skip-unless (executable-find "python2"))
   (let* ((package-menu-async t)
          (default-directory package-test-data-dir)
-         (process (start-process
+         python-interpreter python-test-script
+         process addr)
+    (when-let* ((py-interpreter (executable-find "python"))
+                (py-ver (shell-command-to-string "python --version")))
+      (setq python-interpreter py-interpreter
+            python-test-script (if (string-match-p "Python 2" py-ver)
+                                 "package-test-server.py"
+                               "package-test-server.py3")))
+    (when-let* (((not python-interpreter))
+                (py-interpreter (executable-find "python3")))
+      (setq python-interpreter py-interpreter
+            python-test-script "package-test-server.py3"))
+    (when-let* (((not python-interpreter))
+                (py-interpreter (executable-find "python2")))
+      (setq python-interpreter py-interpreter
+            python-test-script "package-test-server.py"))
+
+    (skip-unless python-interpreter)
+
+    (setq process (start-process
                    "package-server" "package-server-buffer"
-                   (executable-find "python2")
-                   "package-test-server.py"))
-         (addr nil))
+                   python-interpreter python-test-script))
     (unwind-protect
         (progn
           (with-current-buffer "package-server-buffer"
-- 
2.20.5


  reply	other threads:[~2024-05-06  0:28 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-02 18:11 bug#70722: [PATCH] ; Migrate to python3 for (package-test-update-archives-async) Lin Sun
2024-05-02 18:54 ` Eli Zaretskii
2024-05-06  0:28   ` Lin Sun [this message]
2024-05-09  8:33     ` Eli Zaretskii
2024-05-09 16:00       ` kobarity
2024-05-09 16:19         ` Lin Sun
2024-05-11 10:07         ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CABCREdq8mQa68W_WQmjDXAj82Og5nx6Yprq2-yn2fLPTE4pUwQ@mail.gmail.com \
    --to=sunlin7.mail@gmail.com \
    --cc=70722@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).