Commit | Line | Data |
---|---|---|
15aa2c38 LC |
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) | |
cd91504d | 24 | #:use-module (srfi srfi-26) |
15aa2c38 LC |
25 | #:use-module (srfi srfi-64) |
26 | #:use-module (rnrs io ports) | |
27 | #:use-module (ice-9 match)) | |
28 | ||
29 | (define %guile-executable | |
30 | (match (command-line) | |
31 | ((program . _) | |
32 | (and (file-exists? program) (elf-file? program) | |
33 | program)) | |
34 | (_ | |
35 | #f))) | |
36 | ||
37 | (define read-elf | |
38 | (compose parse-elf get-bytevector-all)) | |
39 | ||
40 | \f | |
41 | (test-begin "gremlin") | |
42 | ||
43 | (unless %guile-executable (test-skip 1)) | |
44 | (test-assert "elf-dynamic-info-needed, executable" | |
45 | (let* ((elf (call-with-input-file %guile-executable read-elf)) | |
46 | (dyninfo (elf-dynamic-info elf))) | |
47 | (or (not dyninfo) ;static executable | |
48 | (lset<= string=? | |
49 | (list (string-append "libguile-" (effective-version)) | |
50 | "libgc" "libunistring" "libffi") | |
51 | (map (lambda (lib) | |
52 | (string-take lib (string-contains lib ".so"))) | |
53 | (elf-dynamic-info-needed dyninfo)))))) | |
54 | ||
cd91504d LC |
55 | (test-equal "expand-origin" |
56 | '("OOO/../lib" | |
57 | "OOO" | |
58 | "../OOO/bar/OOO/baz" | |
59 | "ORIGIN/foo") | |
60 | (map (cut expand-origin <> "OOO") | |
61 | '("$ORIGIN/../lib" | |
62 | "${ORIGIN}" | |
63 | "../${ORIGIN}/bar/$ORIGIN/baz" | |
64 | "ORIGIN/foo"))) | |
65 | ||
15aa2c38 | 66 | (test-end "gremlin") |