aboutsummaryrefslogtreecommitdiff
path: root/doc/guix.texi
blob: 47d0d7169af3e550e23ba60a4c94a30325305183 (about) (plain)
blob size (538KB) exceeds display size limit (100KB).
dule (guix gexp) #:use-module (guix tests) #:use-module (guix scripts size) #:use-module (gnu packages) #:use-module (gnu packages bootstrap) #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:use-module (srfi srfi-64)) (test-begin "size") (test-assertm "store-profile" (mlet* %store-monad ((file1 (gexp->derivation "file1" #~(symlink #$%bootstrap-guile #$output))) (file2 (text-file* "file2" "the file => " file1))) (define (matching-profile item) (lambda (profile) (string=? item (profile-file profile)))) (mbegin %store-monad (built-derivations (list file2)) (mlet %store-monad ((profiles (store-profile (list (derivation->output-path file2)))) (bash (interned-file (search-bootstrap-binary "bash" (%current-system)) "bash" #:recursive? #t)) (guile (package->derivation %bootstrap-guile))) (define (lookup-profile item) (find (matching-profile (if (derivation? item) (derivation->output-path item) item)) profiles)) (letrec-syntax ((match* (syntax-rules (=>) ((_ ((drv => profile) rest ...) body) (match (lookup-profile drv) ((? profile? profile) (match* (rest ...) body)))) ((_ () body) body)))) ;; Make sure we get all three profiles with sensible values. (return (and (= (length profiles) 4) (match* ((file1 => profile1) (file2 => profile2) (guile => profile3) (bash => profile4)) ;dependency of GUILE (and (> (profile-closure-size profile2) 0) (= (profile-closure-size profile2) (+ (profile-self-size profile1) (profile-self-size profile2) (profile-self-size profile3) (profile-self-size profile4)))))))))))) (test-assertm "store-profile with multiple items" (mlet* %store-monad ((file1 (gexp->derivation "file1" #~(symlink #$%bootstrap-guile #$output))) (file2 (text-file* "file2" "the file => " file1))) (mbegin %store-monad (built-derivations (list file2)) (mlet %store-monad ((profiles (store-profile (list (derivation->output-path file2) (derivation->output-path file1)))) (reference (store-profile (list (derivation->output-path file2))))) (return (and (= (length profiles) 4) (lset= equal? profiles reference))))))) (test-end "size") ;;; Local Variables: ;;; eval: (put 'match* 'scheme-indent-function 1) ;;; End: