aboutsummaryrefslogtreecommitdiff
path: root/tests/size.scm
blob: 0aaa8fbc2980492a50268edf83b167d65100252c (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (test-size)
  #:use-module (guix store)
  #:use-module (guix monads)
  #:use-module (guix packages)
  #:use-module (guix derivations)
  #:use-module (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:
n Hellseher 2023-10-22gnu: transanno: Don't set #:tests to #true....* gnu/packages/bioinformatics.scm (transanno)[arguments]: Don't set tests unconditionally to #true. Efraim Flashner 2023-10-18Revert "build: cargo-build-system: Disable tests by default."...This reverts commit 37667443074a6de29f7665868f102111d62f0af9. This change needs more discussion. Efraim Flashner 2023-10-18gnu: transanno: Fix build....* gnu/packages/bioinformatics.scm (transanno)[arguments]: Run the test suite. Don't patch Cargo.toml in liftover-rs. Don't patch crate in vendor-dir. [native-inputs]: Add pkg-config. [inputs]: Add xz. Efraim Flashner 2023-10-18build: cargo-build-system: Disable tests by default....* guix/build-system/cargo.scm (cargo-build): Disable tests by default. * gnu/packages/admin.scm (greetd, wlgreet, du-dust), * gnu/packages/bioinformatics.scm (circtools, python-gseapy), * gnu/packages/crypto.scm (rust-minisign, b3sum), * gnu/packages/gnome.scm (librsvg), * gnu/packages/python-crypto.scm (python-blake3, python-cryptography-rust), * gnu/packages/python-xyz.scm (python-orjson), * gnu/packages/rust-apps.scm (agate, alfis, bat, diffr, drill, dutree, exa, fd, hexyl, hyperfine, i3status-rust, just, maturin, ripgrep, rot8, rust-swc, rust-cargo-edit, git-interactive-rebase-tool, rust-cbindgen, rust-cbindgen-0.24, rust-cbindgen-0.19, sniffglue, tectonic, treefmt, hex, tokei, vivid, watchexec, rbw, rust-analyzer, rust-cargo-c, rtss, skim, skim-0.7, svd2rust, swayhide, tealdeer, git-absorb, zoxide, htmlq), * gnu/packages/sequoia.scm (sequoia-sqv), * gnu/packages/syndication.scm (newsboat), * gnu/packages/terminals.scm (alacritty), * gnu/packages/text-editors.scm (kak-lsp, parinfer-rust), * gnu/packages/tree-sitter.scm (tree-sitter-cli), * gnu/packages/video.scm (rav1e), * gnu/packages/web.scm (monolith, castor) [arguments]: Enable tests. Efraim Flashner 2023-10-17gnu: Add r-metacell....* gnu/packages/bioinformatics.scm (r-metacell): New variable. Afkhami, Navid 2023-09-26multiqc: Don't propagate inputs....* gnu/packages/bioinformatics.scm (multiqc)[propagated-inputs]: Move all packages ... [inputs]: ... to here. Efraim Flashner 2023-09-24gnu: python-pygenometracks: Remove syntax error in setup.py....* gnu/packages/bioinformatics.scm (python-pygenometracks)[arguments]: Add phase remove-invalid-syntax. Mădălin Ionel Patrașcu 2023-09-24gnu: htslib: Link against htscodecs....* gnu/packages/bioinformatics.scm (htslib)[source]: Add snippet to remove bundled htscodecs. [arguments]: Add configure-flag to link against htscodecs. [propagated-inputs]: Add htscodecs. (htslib-1.14, htslib-1.12): Use bundled htscodecs. Efraim Flashner 2023-09-24gnu: htscodecs: Update to 1.5.1....* gnu/packages/bioinformatics.scm (htscodecs): Update to 1.5.1. Efraim Flashner 2023-09-22gnu: wfa2-lib: Mark package as tunable....* gnu/packages/bioinformatics.scm (wfa2-lib)[properties]: New field. Efraim Flashner 2023-09-22gnu: python-bwapy: Fix typo....* gnu/packages/bioinformatics.scm (python-bwapy)[synopsis]: Fix typo. Marius Bakke 2023-09-22gnu: python-arboreto: Add missing inputs....* gnu/packages/bioinformatics.scm (python-arboreto)[propagated-inputs]: Add PYTHON-LZ4 and PYTHON-PYARROW. Marius Bakke 2023-09-20gnu: wfmash: Update to 0.10.5....* gnu/packages/bioinformatics.scm (wfmash): Update to 0.10.5. [source]: Update to changes in source code. [arguments]: Add configure-flag to enable more features. [native-inputs]: Add pkg-config. Efraim Flashner 2023-09-18gnu: python-plastid: Patch it for python 3.10....* gnu/packages/bioinformatics.scm (python-plastid)[arguments]: Add new phase 'patch-for-python-3.10. Signed-off-by: Ricardo Wurmus <rekado@elephly.net> Mădălin Ionel Patrașcu 2023-09-14gnu: perl-cworld-dekker: Drop labels from inputs....* gnu/packages/bioinformatics.scm (perl-cworld-dekker)[arguments]: Use G-expression and avoid references to labeled inputs. [inputs]: Drop labels. Ricardo Wurmus 2023-09-13gnu: python-hicmatrix: Remove custom 'check phase....* gnu/packages/bioinformatics.scm (python-hicmatrix)[arguments]: Remove custom 'check phase. Ricardo Wurmus 2023-09-13gnu: python-hicmatrix: Remove syntax error in setup.py....* gnu/packages/bioinformatics.scm (python-hicmatrix)[arguments]: Add phase remove-invalid-syntax. Signed-off-by: Ricardo Wurmus <rekado@elephly.net> Mădălin Ionel Patrașcu 2023-09-12gnu: Add python-peaks2utr....* gnu/packages/bioinformatics.scm (python-peaks2utr): New variable. Ricardo Wurmus 2023-09-12gnu: macs: Update to 2.2.9.1....* gnu/packages/bioinformatics.scm (macs): Update to 2.2.9.1. [build-system]: Use pyproject-build-system. [arguments]: Remove custom 'check phase. [native-inputs]: Move python-cython from here... [inputs]: ...and python-numpy from here... [propagated-inputs]: ...to here. Ricardo Wurmus 2023-09-12gnu: python-cgatcore: Update to 0.6.15....* gnu/packages/bioinformatics.scm (python-cgatcore): Update to 0.6.15. Signed-off-by: Christopher Baines <mail@cbaines.net> Hilton Chain