summaryrefslogtreecommitdiff
path: root/tests/import
diff options
context:
space:
mode:
authorNicolas Graves <ngraves@ngraves.fr>2025-09-17 00:56:15 +0200
committerLudovic Courtès <ludo@gnu.org>2025-10-01 11:04:15 +0200
commit02f1ff69c647daa150cbff9d93fee25a6b43e152 (patch)
treeb73e4da1a5e6c8ea41fefd717b9f7d71869eaf22 /tests/import
parent94df3e6f28efc1be1908c50d54769ae07e0cca83 (diff)
import: git: Move tests to tests/import/git.scm.
* tests/import-git.scm: Move to tests/import/git.scm. * Makefile.am: Refresh it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'tests/import')
-rw-r--r--tests/import/git.scm240
1 files changed, 240 insertions, 0 deletions
diff --git a/tests/import/git.scm b/tests/import/git.scm
new file mode 100644
index 00000000000..a532070a8d5
--- /dev/null
+++ b/tests/import/git.scm
@@ -0,0 +1,240 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (test-import-git)
20 #:use-module (git)
21 #:use-module (guix git)
22 #:use-module (guix tests)
23 #:use-module (guix packages)
24 #:use-module (guix import git)
25 #:use-module ((guix import utils) #:select (find-version))
26 #:use-module (guix git-download)
27 #:use-module (guix tests git)
28 #:use-module (srfi srfi-1)
29 #:use-module (srfi srfi-64))
30
31;; Test the (guix import git) tools.
32
33(test-begin "git")
34
35(define* (make-package directory version #:optional (properties '()))
36 (dummy-package "test-package"
37 (version version)
38 (properties properties)
39 (source
40 (origin
41 (method git-fetch)
42 (uri (git-reference
43 (url (string-append "file://" directory))
44 (commit version)))
45 (sha256
46 (base32
47 "0000000000000000000000000000000000000000000000000000"))))))
48
49(define (latest-git-tag-version package)
50 (find-version (map car ((@@ (guix import git) get-package-tags) package))))
51
52(test-equal "latest-git-tag-version: no custom prefix, suffix, and delimiter"
53 "1.0.1"
54 (with-temporary-git-repository directory
55 '((add "a.txt" "A")
56 (commit "First commit")
57 (tag "1.0.1" "Release 1.0.1"))
58 (let ((package (make-package directory "1.0.0")))
59 (latest-git-tag-version package))))
60
61(test-equal "latest-git-tag-version: custom prefix, no suffix and delimiter"
62 "1.0.1"
63 (with-temporary-git-repository directory
64 '((add "a.txt" "A")
65 (commit "First commit")
66 (tag "prefix-1.0.1" "Release 1.0.1"))
67 (let ((package (make-package directory "1.0.0"
68 '((release-tag-prefix . "prefix-")))))
69 (latest-git-tag-version package))))
70
71(test-equal "latest-git-tag-version: custom suffix, no prefix and delimiter"
72 "1.0.1"
73 (with-temporary-git-repository directory
74 '((add "a.txt" "A")
75 (commit "First commit")
76 (tag "1.0.1-suffix-123" "Release 1.0.1"))
77 (let ((package (make-package directory "1.0.0"
78 '((release-tag-suffix . "-suffix-[0-9]*")))))
79 (latest-git-tag-version package))))
80
81(test-equal "latest-git-tag-version: custom delimiter, no prefix and suffix"
82 "2021.09.07"
83 (with-temporary-git-repository directory
84 '((add "a.txt" "A")
85 (commit "First commit")
86 (tag "2021-09-07" "Release 2021-09-07"))
87 (let ((package (make-package directory "2021-09-06"
88 '((release-tag-version-delimiter . "-")))))
89 (latest-git-tag-version package))))
90
91(test-equal "latest-git-tag-version: empty delimiter, no prefix and suffix"
92 "20210907"
93 (with-temporary-git-repository directory
94 '((add "a.txt" "A")
95 (commit "First commit")
96 (tag "20210907" "Release 20210907"))
97 (let ((package (make-package directory "20210906"
98 '((release-tag-version-delimiter . "")))))
99 (latest-git-tag-version package))))
100
101(test-equal "latest-git-tag-version: custom prefix and suffix, no delimiter"
102 "2.0.0"
103 (with-temporary-git-repository directory
104 '((add "a.txt" "A")
105 (commit "First commit")
106 (tag "Release-2.0.0suffix-1" "Release 2.0.0"))
107 (let ((package (make-package directory "1.0.0"
108 '((release-tag-prefix . "Release-")
109 (release-tag-suffix . "suffix-[0-9]")))))
110 (latest-git-tag-version package))))
111
112(test-equal "latest-git-tag-version: custom prefix, suffix, and delimiter"
113 "2.0.0"
114 (with-temporary-git-repository directory
115 '((add "a.txt" "A")
116 (commit "First commit")
117 (tag "Release-2_0_0suffix-1" "Release 2.0.0"))
118 (let ((package (make-package directory "1.0.0"
119 '((release-tag-prefix . "Release-")
120 (release-tag-suffix . "suffix-[0-9]")
121 (release-tag-version-delimiter . "_")))))
122 (latest-git-tag-version package))))
123
124(test-equal "latest-git-tag-version: only pre-releases available"
125 #f
126 (with-temporary-git-repository directory
127 '((add "a.txt" "A")
128 (commit "First commit")
129 (tag "2.0.0-rc1" "Release candidate for 2.0.0"))
130 (let ((package (make-package directory "1.0.0")))
131 (latest-git-tag-version package))))
132
133(test-equal "latest-git-tag-version: accept pre-releases"
134 "2.0.0-rc1"
135 (with-temporary-git-repository directory
136 '((add "a.txt" "A")
137 (commit "First commit")
138 (tag "2.0.0-rc1" "Release candidate for 2.0.0"))
139 (let ((package (make-package directory "1.0.0"
140 '((accept-pre-releases? . #t)))))
141 (latest-git-tag-version package))))
142
143(test-equal "latest-git-tag-version: accept pre-releases, and custom prefix"
144 "2.0.0-rc1"
145 (with-temporary-git-repository directory
146 '((add "a.txt" "A")
147 (commit "First commit")
148 (tag "version-2.0.0-rc1" "Release candidate for 2.0.0"))
149 (let ((package (make-package directory "1.0.0"
150 '((accept-pre-releases? . #t)
151 (release-tag-prefix . "version-")))))
152 (latest-git-tag-version package))))
153
154(test-equal "latest-git-tag-version: accept pre-releases, and custom suffix"
155 "2.0.0-rc1"
156 (with-temporary-git-repository directory
157 '((add "a.txt" "A")
158 (commit "First commit")
159 (tag "2.0.0-rc1-suffix" "Release candidate for 2.0.0"))
160 (let ((package (make-package directory "1.0.0"
161 '((accept-pre-releases? . #t)
162 (release-tag-suffix . "-suffix")))))
163 (latest-git-tag-version package))))
164
165(test-equal "latest-git-tag-version: accept pre-releases, delimiter conflicts with pre-release part"
166 "2.0.0_alpha"
167 (with-temporary-git-repository directory
168 '((add "a.txt" "A")
169 (commit "First commit")
170 (tag "2_0_0_alpha" "Alpha release for 2.0.0"))
171 (let ((package (make-package directory "1.0.0"
172 '((accept-pre-releases? . #t)
173 (release-tag-version-delimiter . "_")))))
174 (latest-git-tag-version package))))
175
176(test-equal "latest-git-tag-version: accept pre-releases, and custom suffix and prefix"
177 "2.0.0-alpha"
178 (with-temporary-git-repository directory
179 '((add "a.txt" "A")
180 (commit "First commit")
181 (tag "prefix123-2.0.0-alpha-suffix" "Alpha release for 2.0.0"))
182 (let ((package (make-package directory "1.0.0"
183 '((accept-pre-releases? . #t)
184 (release-tag-prefix . "prefix[0-9]{3}-")
185 (release-tag-suffix . "-suffix")))))
186 (latest-git-tag-version package))))
187
188(test-equal "latest-git-tag-version: accept pre-releases, and custom suffix, prefix, and delimiter"
189 "2.0.0-alpha"
190 (with-temporary-git-repository directory
191 '((add "a.txt" "A")
192 (commit "First commit")
193 (tag "prefix123-2-0-0-alpha-suffix" "Alpha release for 2.0.0"))
194 (let ((package (make-package directory "1.0.0"
195 '((accept-pre-releases? . #t)
196 (release-tag-prefix . "prefix[0-9]{3}-")
197 (release-tag-suffix . "-suffix")
198 (release-tag-version-delimiter . "-")))))
199 (latest-git-tag-version package))))
200
201(test-equal "latest-git-tag-version: accept pre-releases, no delimiter, and custom suffix, prefix"
202 "2alpha"
203 (with-temporary-git-repository directory
204 '((add "a.txt" "A")
205 (commit "First commit")
206 (tag "prefix123-2alpha-suffix" "Alpha release for version 2"))
207 (let ((package (make-package directory "1.0.0"
208 '((accept-pre-releases? . #t)
209 (release-tag-prefix . "prefix[0-9]{3}-")
210 (release-tag-suffix . "-suffix")
211 (release-tag-version-delimiter . "")))))
212 (latest-git-tag-version package))))
213
214(test-equal "latest-git-tag-version: no tags found"
215 #f
216 (with-temporary-git-repository directory
217 '((add "a.txt" "A")
218 (commit "First commit"))
219 (let ((package (make-package directory "1.0.0")))
220 (latest-git-tag-version package))))
221
222(test-equal "latest-git-tag-version: no valid tags found"
223 #f
224 (with-temporary-git-repository directory
225 '((add "a.txt" "A")
226 (commit "First commit")
227 (tag "Test" "Test tag"))
228 (let ((package (make-package directory "1.0.0")))
229 (latest-git-tag-version package))))
230
231(test-equal "latest-git-tag-version: prefix contains pre-release words"
232 "1.0.1"
233 (with-temporary-git-repository directory
234 '((add "a.txt" "A")
235 (commit "First commit")
236 (tag "libdevx-1.0.1" "Release 1.0.1"))
237 (let ((package (make-package directory "1.0.0")))
238 (latest-git-tag-version package))))
239
240(test-end "git")