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"