Allow matching non-.git gitlab and gitea URLs in bug-reference

* lisp/progmodes/bug-reference.el
(bug-reference--build-forge-setup-entry): Allow matching non-.git
gitlab and gitea URLs, with and without slashes (bug#51316).
This commit is contained in:
Miha Rihtaršič 2021-10-26 10:54:54 +02:00 committed by Lars Ingebrigtsen
parent 65cd2d90b7
commit 3fac3120f8
2 changed files with 72 additions and 6 deletions

View file

@ -287,7 +287,7 @@ via the internet it might also be http.")
(cl-defmethod bug-reference--build-forge-setup-entry
(host-domain (_forge-type (eql 'gitlab)) 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)))
@ -304,7 +304,7 @@ via the internet it might also be http.")
(cl-defmethod bug-reference--build-forge-setup-entry
(host-domain (_forge-type (eql 'gitea)) 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)))

View file

@ -26,12 +26,26 @@
(require 'bug-reference)
(require 'ert)
(defun test--get-github-entry (protocol)
(defun test--get-github-entry (url)
(and (string-match
(car (bug-reference--build-forge-setup-entry
"github.com" 'github protocol))
protocol)
(match-string 1 protocol)))
"github.com" 'github "https"))
url)
(match-string 1 url)))
(defun test--get-gitlab-entry (url)
(and (string-match
(car (bug-reference--build-forge-setup-entry
"gitlab.com" 'gitlab "https"))
url)
(match-string 1 url)))
(defun test--get-gitea-entry (url)
(and (string-match
(car (bug-reference--build-forge-setup-entry
"gitea.com" 'gitea "https"))
url)
(match-string 1 url)))
(ert-deftest test-github-entry ()
(should
@ -59,4 +73,56 @@
(test--get-github-entry "https://github.com/magit/magit/")
"magit/magit")))
(ert-deftest test-gitlab-entry ()
(should
(equal
(test--get-gitlab-entry "git@gitlab.com:larsmagne/csid.git")
"larsmagne/csid"))
(should
(equal
(test--get-gitlab-entry "git@gitlab.com:larsmagne/csid")
"larsmagne/csid"))
(should
(equal
(test--get-gitlab-entry "https://gitlab.com/magit/magit.git")
"magit/magit"))
(should
(equal
(test--get-gitlab-entry "https://gitlab.com/magit/magit.git/")
"magit/magit"))
(should
(equal
(test--get-gitlab-entry "https://gitlab.com/magit/magit")
"magit/magit"))
(should
(equal
(test--get-gitlab-entry "https://gitlab.com/magit/magit/")
"magit/magit")))
(ert-deftest test-gitea-entry ()
(should
(equal
(test--get-gitea-entry "git@gitea.com:larsmagne/csid.git")
"larsmagne/csid"))
(should
(equal
(test--get-gitea-entry "git@gitea.com:larsmagne/csid")
"larsmagne/csid"))
(should
(equal
(test--get-gitea-entry "https://gitea.com/magit/magit.git")
"magit/magit"))
(should
(equal
(test--get-gitea-entry "https://gitea.com/magit/magit.git/")
"magit/magit"))
(should
(equal
(test--get-gitea-entry "https://gitea.com/magit/magit")
"magit/magit"))
(should
(equal
(test--get-gitea-entry "https://gitea.com/magit/magit/")
"magit/magit")))
;;; bug-reference-tests.el ends here