Use mkdtemp to simplify repl server test
authorMichael Gran <spk121@yahoo.com>
Thu, 21 Jan 2021 18:41:10 +0000 (10:41 -0800)
committerMichael Gran <spk121@yahoo.com>
Thu, 21 Jan 2021 18:41:10 +0000 (10:41 -0800)
* test-suite/tests/00-repl-server.test (make-tempdir): removed
  (call-with-repl-server): use mkdtemp instead of make-tempdir

test-suite/tests/00-repl-server.test

index 8c5713f4a5cce945239e886fc0ef45621a2a296e..433181ee67a47043a216062253863c3806db8bd4 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; 00-repl-server.test --- REPL server.  -*- mode: scheme; coding: utf-8; -*-
 ;;;;
-;;;;   Copyright (C) 2016, 2017 Free Software Foundation, Inc.
+;;;;   Copyright (C) 2016, 2017, 2021 Free Software Foundation, Inc.
 ;;;;
 ;;;; This library is free software; you can redistribute it and/or
 ;;;; modify it under the terms of the GNU Lesser General Public
   #:use-module (web request)
   #:use-module (test-suite lib))
 
-;; FIXME: replace with mkdtemp! (or equivalent) when available
-(define (make-tempdir)
-  (let loop ((try 0)
-             (n (random:uniform)))
-    (let* ((path (string-append "/tmp/repl-server-test-" (number->string n)))
-           (dir (false-if-exception (mkdir path #o700))))
-      (cond
-       (dir path)
-       ((> try 10)
-        (error "Unable to create directory in /tmp for 00-repl-server.test"))
-       (else (loop (1+ try) (random:uniform)))))))
-
 (define (call-with-repl-server proc)
   "Set up a REPL server in a separate process and call PROC with a
 socket connected to that server."
-  (let* ((tmpdir (make-tempdir))
+  ;; The REPL server requires thread. The test requires fork.
+  (unless (and (provided? 'threads) (provided? 'fork) (defined? 'mkdtemp))
+    (throw 'unsupported))
+
+  (let* ((tmpdir (mkdtemp "/tmp/repl-server-test-XXXXXX"))
          (sockaddr (make-socket-address AF_UNIX (string-append tmpdir "/repl-server")))
          (client-socket (socket AF_UNIX SOCK_STREAM 0)))
     (false-if-exception (delete-file (sockaddr:path sockaddr)))
 
-    ;; The REPL server requires thread. The test requires fork.
-    (unless (and (provided? 'threads) (provided? 'fork))
-      (throw 'unsupported))
-
     (match (primitive-fork)
       (0
        (dynamic-wind