aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-06-04 17:26:54 +0200
committerLudovic Courtès <ludo@gnu.org>2014-06-04 18:15:50 +0200
commitc17b5ab4db140f142f38cdc99468e63e66c91912 (patch)
tree1388155a22ec171872229350f5423dd2f208ebf4
parentd3bbe992ec33860aedccb26734a7a83d263e7ec3 (diff)
downloadguix-c17b5ab4db140f142f38cdc99468e63e66c91912.tar
guix-c17b5ab4db140f142f38cdc99468e63e66c91912.tar.gz
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.
-rw-r--r--guix/gexp.scm4
-rw-r--r--tests/gexp.scm8
2 files changed, 12 insertions, 0 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm
index a2ba50d957..3b154d400f 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -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))
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 21606b510b..60adf497ed 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -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