From 559fb593d777c4e24012b918bbab9f430006be3e Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Sun, 24 Oct 2021 14:14:42 +0200 Subject: [PATCH] Allow matching non-.git URLs in bug-reference * lisp/progmodes/bug-reference.el (bug-reference--build-forge-setup-entry): Allow matching non-.git URLs, with and without slashes (bug#51316). --- lisp/progmodes/bug-reference.el | 2 +- test/lisp/progmodes/bug-reference-tests.el | 62 ++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 test/lisp/progmodes/bug-reference-tests.el diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el index 150dfac0d2d..993d670917b 100644 --- a/lisp/progmodes/bug-reference.el +++ b/lisp/progmodes/bug-reference.el @@ -271,7 +271,7 @@ via the internet it might also be http.") (cl-defmethod bug-reference--build-forge-setup-entry (host-domain (_forge-type (eql 'github)) protocol) `(,(concat "[/@]" (regexp-quote host-domain) - "[/:]\\([.A-Za-z0-9_/-]+\\)\\.git") + "[/:]\\([.A-Za-z0-9_/-]+?\\)\\(?:\\.git\\)?/?\\'") "\\(\\([.A-Za-z0-9_/-]+\\)?\\(?:#\\)\\([0-9]+\\)\\)\\>" ,(lambda (groups) (let ((ns-project (nth 1 groups))) diff --git a/test/lisp/progmodes/bug-reference-tests.el b/test/lisp/progmodes/bug-reference-tests.el new file mode 100644 index 00000000000..803a1dd75a8 --- /dev/null +++ b/test/lisp/progmodes/bug-reference-tests.el @@ -0,0 +1,62 @@ +;;; bug-reference-tests.el --- Tests for bug-reference.el -*- lexical-binding: t; -*- + +;; Copyright (C) 2021 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; + +;;; Code: + +(require 'bug-reference) +(require 'ert) + +(defun test--get-github-entry (protocol) + (and (string-match + (car (bug-reference--build-forge-setup-entry + "github.com" 'github protocol)) + protocol) + (match-string 1 protocol))) + +(ert-deftest test-github-entry () + (should + (equal + (test--get-github-entry "git@github.com:larsmagne/csid.git") + "larsmagne/csid")) + (should + (equal + (test--get-github-entry "git@github.com:larsmagne/csid") + "larsmagne/csid")) + (should + (equal + (test--get-github-entry "https://github.com/emacs-mirror/emacs.git") + "emacs-mirror/emacs")) + (should + (equal + (test--get-github-entry "https://github.com/emacs-mirror/emacs.git/") + "emacs-mirror/emacs")) + (should + (equal + (test--get-github-entry "https://github.com/emacs-mirror/emacs") + "emacs-mirror/emacs")) + (should + (equal + (test--get-github-entry "https://github.com/emacs-mirror/emacs/") + "emacs-mirror/emacs"))) + +;;; bug-reference-tests.el ends here -- 2.39.2