5d5c55ebd32cf7c0ffe1985ad2546a867420310c

Author
Jonatan Wallmander <jonatan@vovoid.com>
Committer
GitHub <noreply@github.com>
Date

Message

fix: test framework supports ensuring specific port is open (#606)

The generic "waitforserver" has been renamed to
"ensureserverrunning".

This command now also takes an argument which denotes
which environment variable to pick the port from.

This is needed as the ports are randomized by the test.

Co-authored-by: Jonatan Wallmander <jonatan.wallmander@kdab.com>

Diff

  1diff --git a/testscript/script_test.go b/testscript/script_test.go
  2index 43fdde90015476a6a974e7e0cf7990b6ed98b076..564372808f2e8f6b7eacc86a33f348a48428e070 100644
  3--- a/testscript/script_test.go
  4+++ b/testscript/script_test.go
  5@@ -79,20 +79,20 @@ func TestScript(t *testing.T) {
  6 		UpdateScripts:       *update,
  7 		RequireExplicitExec: true,
  8 		Cmds: map[string]func(ts *testscript.TestScript, neg bool, args []string){
  9-			"soft":          cmdSoft("admin", admin1.Signer()),
 10-			"usoft":         cmdSoft("user1", user1.Signer()),
 11-			"git":           cmdGit(admin1Key),
 12-			"ugit":          cmdGit(user1Key),
 13-			"curl":          cmdCurl,
 14-			"mkfile":        cmdMkfile,
 15-			"envfile":       cmdEnvfile,
 16-			"readfile":      cmdReadfile,
 17-			"dos2unix":      cmdDos2Unix,
 18-			"new-webhook":   cmdNewWebhook,
 19-			"waitforserver": cmdWaitforserver,
 20-			"stopserver":    cmdStopserver,
 21-			"ui":            cmdUI(admin1.Signer()),
 22-			"uui":           cmdUI(user1.Signer()),
 23+			"soft":                cmdSoft("admin", admin1.Signer()),
 24+			"usoft":               cmdSoft("user1", user1.Signer()),
 25+			"git":                 cmdGit(admin1Key),
 26+			"ugit":                cmdGit(user1Key),
 27+			"curl":                cmdCurl,
 28+			"mkfile":              cmdMkfile,
 29+			"envfile":             cmdEnvfile,
 30+			"readfile":            cmdReadfile,
 31+			"dos2unix":            cmdDos2Unix,
 32+			"new-webhook":         cmdNewWebhook,
 33+			"ensureserverrunning": cmdEnsureServerRunning,
 34+			"stopserver":          cmdStopserver,
 35+			"ui":                  cmdUI(admin1.Signer()),
 36+			"uui":                 cmdUI(user1.Signer()),
 37 		},
 38 		Setup: func(e *testscript.Env) error {
 39 			// Add binPath to PATH
 40@@ -470,9 +470,18 @@ func cmdCurl(ts *testscript.TestScript, neg bool, args []string) {
 41 	check(ts, cmd.Execute(), neg)
 42 }
 43 
 44-func cmdWaitforserver(ts *testscript.TestScript, neg bool, args []string) {
 45-	// wait until the server is up
 46-	addr := net.JoinHostPort("localhost", ts.Getenv("SSH_PORT"))
 47+func cmdEnsureServerRunning(ts *testscript.TestScript, neg bool, args []string) {
 48+	if len(args) < 1 {
 49+		ts.Fatalf("Must supply a TCP port of one of the services to connect to. " +
 50+			"These are set as env vars as they are randomized. " +
 51+			"Example usage: \"cmdensureserverrunning SSH_PORT\"\n" +
 52+			"Valid values for the env var: SSH_PORT|HTTP_PORT|GIT_PORT|STATS_PORT")
 53+	}
 54+
 55+	port := ts.Getenv(args[0])
 56+
 57+	// verify that the server is up
 58+	addr := net.JoinHostPort("localhost", port)
 59 	for {
 60 		conn, _ := net.DialTimeout(
 61 			"tcp",
 62@@ -480,6 +489,7 @@ func cmdWaitforserver(ts *testscript.TestScript, neg bool, args []string) {
 63 			time.Second,
 64 		)
 65 		if conn != nil {
 66+			ts.Logf("Server is running on port: %s", port)
 67 			conn.Close()
 68 			break
 69 		}
 70diff --git a/testscript/testdata/anon-access.txtar b/testscript/testdata/anon-access.txtar
 71index 54958fa11a8f75b8618a4fb760adcc8a27441e7f..c43dc23cd47de1074cbfa38e9c2931f2ccbb00f5 100644
 72--- a/testscript/testdata/anon-access.txtar
 73+++ b/testscript/testdata/anon-access.txtar
 74@@ -2,8 +2,8 @@
 75 
 76 # start soft serve
 77 exec soft serve &
 78-# wait for server to start
 79-waitforserver
 80+# wait for SSH server to start
 81+ensureserverrunning SSH_PORT
 82 
 83 # set settings
 84 soft settings allow-keyless true
 85diff --git a/testscript/testdata/help.txtar b/testscript/testdata/help.txtar
 86index d6756ca02fde1607ffa23add93e1b95adc8de89f..299e29500350aed529f20281c8eec3d3abb4507e 100644
 87--- a/testscript/testdata/help.txtar
 88+++ b/testscript/testdata/help.txtar
 89@@ -3,8 +3,8 @@
 90 
 91 # start soft serve
 92 exec soft serve --sync-hooks &
 93-# wait for server to start
 94-waitforserver
 95+# wait for SSH server to start
 96+ensureserverrunning SSH_PORT
 97 
 98 soft --help
 99 cmpenv stdout help.txt
100diff --git a/testscript/testdata/http.txtar b/testscript/testdata/http.txtar
101index 98f6902a5f08062ac20b671fd705937cab756955..796c6421a7a73eb8e1c3c0a8e11eb93fa31a60e9 100644
102--- a/testscript/testdata/http.txtar
103+++ b/testscript/testdata/http.txtar
104@@ -8,8 +8,8 @@
105 
106 # start soft serve
107 exec soft serve &
108-# wait for server to start
109-waitforserver
110+# wait for SSH server to start
111+ensureserverrunning SSH_PORT
112 
113 # create user
114 soft user create user1 --key "$USER1_AUTHORIZED_KEY"
115diff --git a/testscript/testdata/jwt.txtar b/testscript/testdata/jwt.txtar
116index 7a257044ecf0ead8e1676c51b23276b99f171a0f..667ec7985febf17f69fc434177a6d39299434ed3 100644
117--- a/testscript/testdata/jwt.txtar
118+++ b/testscript/testdata/jwt.txtar
119@@ -2,8 +2,8 @@
120 
121 # start soft serve
122 exec soft serve &
123-# wait for server to start
124-waitforserver
125+# wait for SSH server to start
126+ensureserverrunning SSH_PORT
127 
128 # create user
129 soft user create user1 --key "$USER1_AUTHORIZED_KEY"
130diff --git a/testscript/testdata/mirror.txtar b/testscript/testdata/mirror.txtar
131index d3cc1915de47e519a678468fedcf749277e5dc82..76feb782eb6259e319eed66a9206615bad6a40da 100644
132--- a/testscript/testdata/mirror.txtar
133+++ b/testscript/testdata/mirror.txtar
134@@ -5,8 +5,8 @@
135 
136 # start soft serve
137 exec soft serve &
138-# wait for server to start
139-waitforserver
140+# wait for SSH server to start
141+ensureserverrunning SSH_PORT
142 
143 # import a repo
144 soft repo import --mirror charmbracelet/catwalk https://github.com/charmbracelet/catwalk.git
145diff --git a/testscript/testdata/repo-blob.txtar b/testscript/testdata/repo-blob.txtar
146index e2712acfe6638c9c2eed5f98d08fbbb4c880ec3e..685c15d8023c85c67350712f6fb737d10f607f14 100644
147--- a/testscript/testdata/repo-blob.txtar
148+++ b/testscript/testdata/repo-blob.txtar
149@@ -5,8 +5,8 @@
150 
151 # start soft serve
152 exec soft serve &
153-# wait for server to start
154-waitforserver
155+# wait for SSH server to start
156+ensureserverrunning SSH_PORT
157 
158 # create a repo
159 soft repo create repo1
160diff --git a/testscript/testdata/repo-collab.txtar b/testscript/testdata/repo-collab.txtar
161index d2960693a7a5df941a0aac1a875dc22065972179..ead5fdce455f81172fe2604fec0595dd3efa4149 100644
162--- a/testscript/testdata/repo-collab.txtar
163+++ b/testscript/testdata/repo-collab.txtar
164@@ -2,8 +2,8 @@
165 
166 # start soft serve
167 exec soft serve &
168-# wait for server to start
169-waitforserver
170+# wait for SSH server to start
171+ensureserverrunning SSH_PORT
172 
173 # setup
174 soft repo import test https://github.com/charmbracelet/catwalk.git
175diff --git a/testscript/testdata/repo-commit.txtar b/testscript/testdata/repo-commit.txtar
176index 70ca3da125876d954a739e262542166a37f11754..a3b61e5140e55384bb0f64390fe57a27ca5fffce 100644
177--- a/testscript/testdata/repo-commit.txtar
178+++ b/testscript/testdata/repo-commit.txtar
179@@ -5,8 +5,8 @@
180 
181 # start soft serve
182 exec soft serve &
183-# wait for server to start
184-waitforserver
185+# wait for SSH server to start
186+ensureserverrunning SSH_PORT
187 
188 # create a repo
189 soft repo import basic1 https://github.com/git-fixtures/basic
190diff --git a/testscript/testdata/repo-create.txtar b/testscript/testdata/repo-create.txtar
191index 7b7f12d77f17eae7c66b02704e79a16d19638b17..2b8cf4522676ab8e795d6bdc18dd78c8117b0467 100644
192--- a/testscript/testdata/repo-create.txtar
193+++ b/testscript/testdata/repo-create.txtar
194@@ -5,8 +5,8 @@
195 
196 # start soft serve
197 exec soft serve &
198-# wait for server to start
199-waitforserver
200+# wait for SSH server to start
201+ensureserverrunning SSH_PORT
202 
203 # create a repo
204 soft repo create repo1 -d 'description' -H -p -n 'repo11'
205diff --git a/testscript/testdata/repo-delete.txtar b/testscript/testdata/repo-delete.txtar
206index ca513e782523d1325e986f87cde1af38308b1628..b9197e17dead9547dac8c76c39491be9e576689f 100644
207--- a/testscript/testdata/repo-delete.txtar
208+++ b/testscript/testdata/repo-delete.txtar
209@@ -2,8 +2,8 @@
210 
211 # start soft serve
212 exec soft serve &
213-# wait for server to start
214-waitforserver
215+# wait for SSH server to start
216+ensureserverrunning SSH_PORT
217 
218 soft repo create repo1
219 soft repo create repo-to-delete
220diff --git a/testscript/testdata/repo-import.txtar b/testscript/testdata/repo-import.txtar
221index 84d4334b4505990626c3f2d19cae19062b6963ae..e9bfa31e4cf5a7bd0fedc927f79f1b41060a4230 100644
222--- a/testscript/testdata/repo-import.txtar
223+++ b/testscript/testdata/repo-import.txtar
224@@ -5,8 +5,8 @@
225 
226 # start soft serve
227 exec soft serve &
228-# wait for server to start
229-waitforserver
230+# wait for SSH server to start
231+ensureserverrunning SSH_PORT
232 
233 # import private
234 soft repo import --private repo1 https://github.com/charmbracelet/catwalk.git
235diff --git a/testscript/testdata/repo-perms.txtar b/testscript/testdata/repo-perms.txtar
236index 1cc371e93c404a92d6c21d31ed5f8cbd275b1d2a..a3e4515c066791dfa2998d0b7e6186c70edba352 100644
237--- a/testscript/testdata/repo-perms.txtar
238+++ b/testscript/testdata/repo-perms.txtar
239@@ -5,8 +5,8 @@
240 
241 # start soft serve
242 exec soft serve &
243-# wait for server to start
244-waitforserver
245+# wait for SSH server to start
246+ensureserverrunning SSH_PORT
247 
248 # create a repo & user1 with admin
249 soft repo create repo1 -p
250diff --git a/testscript/testdata/repo-push.txtar b/testscript/testdata/repo-push.txtar
251index cadb735b95349f71161515f034d420a4cb8f2100..d9f947537f105e879ab54275777c62250ffaa673 100644
252--- a/testscript/testdata/repo-push.txtar
253+++ b/testscript/testdata/repo-push.txtar
254@@ -2,8 +2,8 @@
255 
256 # start soft serve
257 exec soft serve &
258-# wait for server to start
259-waitforserver
260+# wait for SSH server to start
261+ensureserverrunning SSH_PORT
262 
263 # create a repo
264 soft repo create repo-empty -d 'description' -H -p -n 'repo-empty'
265diff --git a/testscript/testdata/repo-tree.txtar b/testscript/testdata/repo-tree.txtar
266index b3e6320de5f84429277f4f41829db9ee4544253f..75a9978a2b62f9c15fb1a01043232e701be38866 100644
267--- a/testscript/testdata/repo-tree.txtar
268+++ b/testscript/testdata/repo-tree.txtar
269@@ -5,8 +5,8 @@
270 
271 # start soft serve
272 exec soft serve &
273-# wait for server to start
274-waitforserver
275+# wait for SSH server to start
276+ensureserverrunning SSH_PORT
277 
278 # create a repo
279 soft repo create repo1
280diff --git a/testscript/testdata/repo-webhooks.txtar b/testscript/testdata/repo-webhooks.txtar
281index fe393a5b65776f7164ee1c226809f24d0a40b9d5..6b370d31eb6c3c698d4529fe50121dc9800e15c0 100644
282--- a/testscript/testdata/repo-webhooks.txtar
283+++ b/testscript/testdata/repo-webhooks.txtar
284@@ -2,8 +2,8 @@
285 
286 # start soft serve
287 exec soft serve &
288-# wait for server to start
289-waitforserver
290+# wait for SSH server to start
291+ensureserverrunning SSH_PORT
292 
293 # create a repo
294 soft repo create repo-123
295diff --git a/testscript/testdata/set-username.txtar b/testscript/testdata/set-username.txtar
296index 30f1a8e0019cfefb8e532a4b3b1e20aa2ab5aafa..745134c7353be44735504d131568a422d04901ab 100644
297--- a/testscript/testdata/set-username.txtar
298+++ b/testscript/testdata/set-username.txtar
299@@ -5,8 +5,8 @@
300 
301 # start soft serve
302 exec soft serve &
303-# wait for server to start
304-waitforserver
305+# wait for SSH server to start
306+ensureserverrunning SSH_PORT
307 
308 # get original username
309 soft info
310diff --git a/testscript/testdata/settings.txtar b/testscript/testdata/settings.txtar
311index 1ceaec57d24ddabe68cc8c0f0c569f18993264e1..fc6bdf463cde118f1d500e7c14bb548c789abf3b 100644
312--- a/testscript/testdata/settings.txtar
313+++ b/testscript/testdata/settings.txtar
314@@ -2,8 +2,8 @@
315 
316 # start soft serve
317 exec soft serve &
318-# wait for server to start
319-waitforserver
320+# wait for SSH server to start
321+ensureserverrunning SSH_PORT
322 
323 # check default allow-keyless
324 soft settings allow-keyless true
325diff --git a/testscript/testdata/ssh-lfs.txtar b/testscript/testdata/ssh-lfs.txtar
326index fbba49d3ec750a61df2e2a2a35fe7db4e0b24fe2..a647dff91a996cc6dc0eeaf4041464550b5a6cd3 100644
327--- a/testscript/testdata/ssh-lfs.txtar
328+++ b/testscript/testdata/ssh-lfs.txtar
329@@ -8,8 +8,8 @@ skip 'breaks with git-lfs 3.5.1'
330 env SOFT_SERVE_LFS_SSH_ENABLED=true
331 # start soft serve
332 exec soft serve &
333-# wait for server to start
334-waitforserver
335+# wait for SSH server to start
336+ensureserverrunning SSH_PORT
337 
338 # create a user
339 soft user create foo --key "$USER1_AUTHORIZED_KEY"
340diff --git a/testscript/testdata/ssh.txtar b/testscript/testdata/ssh.txtar
341index 3e652aeb248b62e99beed85f424e4251bd9e5f6d..e968fa63a69f46f94a1e6042d2f890b8ac9e65f4 100644
342--- a/testscript/testdata/ssh.txtar
343+++ b/testscript/testdata/ssh.txtar
344@@ -4,8 +4,8 @@
345 
346 # start soft serve
347 exec soft serve &
348-# wait for server to start
349-waitforserver
350+# wait for SSH server to start
351+ensureserverrunning SSH_PORT
352 
353 # create a user
354 soft user create foo --key "$USER1_AUTHORIZED_KEY"
355diff --git a/testscript/testdata/token.txtar b/testscript/testdata/token.txtar
356index 821cea84d61cea3dbd4527a74f30c0df341a0d91..7a88701c1d73fe58e45f9788e3ce0f330c2029c8 100644
357--- a/testscript/testdata/token.txtar
358+++ b/testscript/testdata/token.txtar
359@@ -2,8 +2,8 @@
360 
361 # start soft serve
362 exec soft serve &
363-# wait for server to start
364-waitforserver
365+# wait for SSH server to start
366+ensureserverrunning SSH_PORT
367 
368 # create user
369 soft user create user1 --key "$USER1_AUTHORIZED_KEY"
370diff --git a/testscript/testdata/ui-home.txtar b/testscript/testdata/ui-home.txtar
371index 0a5c04ab793a4384d8fb1660942594c1547a4648..126b38e7b47b77f70c464a94500fd2dcdb320469 100644
372--- a/testscript/testdata/ui-home.txtar
373+++ b/testscript/testdata/ui-home.txtar
374@@ -2,8 +2,8 @@
375 
376 # start soft serve
377 exec soft serve &
378-# wait for server to start
379-waitforserver
380+# wait for SSH server to start
381+ensureserverrunning SSH_PORT
382 
383 # test repositories tab
384 ui '"    q"'
385diff --git a/testscript/testdata/user_management.txtar b/testscript/testdata/user_management.txtar
386index f65397090a444479b764d5f6958d7ffb5c17f138..233e8fd5d4e88031a7259dc179785365b27cdb1d 100644
387--- a/testscript/testdata/user_management.txtar
388+++ b/testscript/testdata/user_management.txtar
389@@ -5,8 +5,8 @@
390 
391 # start soft serve
392 exec soft serve &
393-# wait for server to start
394-waitforserver
395+# wait for SSH server to start
396+ensureserverrunning SSH_PORT
397 
398 # add key to admin
399 soft user add-pubkey admin "$ADMIN2_AUTHORIZED_KEY"