diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2015-03-31 22:10:08 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2015-03-31 22:23:57 +0200 |
| commit | 15aa2c38429a5785ed08519c88ff89a0b7027f0f (patch) | |
| tree | 7f27314896deaed8d54ff1c518f60825d165c735 /tests/gremlin.scm | |
| parent | 4e7b6b4838318ca127ae588a7a28c8608b0c8721 (diff) | |
Add (guix build gremlin).
* guix/build/gremlin.scm, tests/gremlin.scm: New files.
* Makefile.am (MODULES): Add guix/build/gremlin.scm.
(SCM_TESTS): Add tests/gremlin.scm.
Diffstat (limited to 'tests/gremlin.scm')
| -rw-r--r-- | tests/gremlin.scm | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/gremlin.scm b/tests/gremlin.scm new file mode 100644 index 00000000000..225a72ff9f2 --- /dev/null +++ b/tests/gremlin.scm | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | ||
| 2 | ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> | ||
| 3 | ;;; | ||
| 4 | ;;; This file is part of GNU Guix. | ||
| 5 | ;;; | ||
| 6 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||
| 7 | ;;; under the terms of the GNU General Public License as published by | ||
| 8 | ;;; the Free Software Foundation; either version 3 of the License, or (at | ||
| 9 | ;;; your option) any later version. | ||
| 10 | ;;; | ||
| 11 | ;;; GNU Guix is distributed in the hope that it will be useful, but | ||
| 12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | ;;; GNU General Public License for more details. | ||
| 15 | ;;; | ||
| 16 | ;;; You should have received a copy of the GNU General Public License | ||
| 17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | ||
| 18 | |||
| 19 | (define-module (test-gremlin) | ||
| 20 | #:use-module (guix elf) | ||
| 21 | #:use-module (guix build utils) | ||
| 22 | #:use-module (guix build gremlin) | ||
| 23 | #:use-module (srfi srfi-1) | ||
| 24 | #:use-module (srfi srfi-64) | ||
| 25 | #:use-module (rnrs io ports) | ||
| 26 | #:use-module (ice-9 match)) | ||
| 27 | |||
| 28 | (define %guile-executable | ||
| 29 | (match (command-line) | ||
| 30 | ((program . _) | ||
| 31 | (and (file-exists? program) (elf-file? program) | ||
| 32 | program)) | ||
| 33 | (_ | ||
| 34 | #f))) | ||
| 35 | |||
| 36 | (define read-elf | ||
| 37 | (compose parse-elf get-bytevector-all)) | ||
| 38 | |||
| 39 | |||
| 40 | (test-begin "gremlin") | ||
| 41 | |||
| 42 | (unless %guile-executable (test-skip 1)) | ||
| 43 | (test-assert "elf-dynamic-info-needed, executable" | ||
| 44 | (let* ((elf (call-with-input-file %guile-executable read-elf)) | ||
| 45 | (dyninfo (elf-dynamic-info elf))) | ||
| 46 | (or (not dyninfo) ;static executable | ||
| 47 | (lset<= string=? | ||
| 48 | (list (string-append "libguile-" (effective-version)) | ||
| 49 | "libgc" "libunistring" "libffi") | ||
| 50 | (map (lambda (lib) | ||
| 51 | (string-take lib (string-contains lib ".so"))) | ||
| 52 | (elf-dynamic-info-needed dyninfo)))))) | ||
| 53 | |||
| 54 | (test-end "gremlin") | ||
| 55 | |||
| 56 | |||
| 57 | (exit (= (test-runner-fail-count (test-runner-current)) 0)) | ||
