~ruther/guix-local

c17b5ab4db140f142f38cdc99468e63e66c91912 — Ludovic Courtès 12 years ago d3bbe99
tests: Skip tests that would hit the shebang length limitation.

* tests/gexp.scm (shebang): New variable.
  Skip "gexp->script" when SHEBANG is longer than 127 chars.
* guix/gexp.scm (gexp->script): Add comment on the issue.
2 files changed, 12 insertions(+), 0 deletions(-)

M guix/gexp.scm
M tests/gexp.scm
M guix/gexp.scm => guix/gexp.scm +4 -0
@@ 351,6 351,10 @@ its search path."
                      (gexp
                       (call-with-output-file (ungexp output)
                         (lambda (port)
                           ;; Note: that makes a long shebang.  When the store
                           ;; is /gnu/store, that fits within the 128-byte
                           ;; limit imposed by Linux, but that may go beyond
                           ;; when running tests.
                           (format port
                                   "#!~a/bin/guile --no-auto-compile~%!#~%"
                                   (ungexp guile))

M tests/gexp.scm => tests/gexp.scm +8 -0
@@ 211,6 211,14 @@
    (return (string=? (readlink (string-append out "/foo"))
                      guile))))

(define shebang
  (string-append (derivation->output-path guile-for-build)
                 "/bin/guile --no-auto-compile"))

;; If we're going to hit the silly shebang limit (128 chars on Linux-based
;; systems), then skip the following test.
(test-skip (if (> (string-length shebang) 127) 1 0))

(test-assertm "gexp->script"
  (mlet* %store-monad ((n ->   (random (expt 2 50)))
                       (exp -> (gexp