aboutsummaryrefslogtreecommitdiff
path: root/tests/utils.scm
Commit message (Collapse)AuthorAge
* guix: utils: Add fold-tree and fold-tree-leaves.Eric Bavier2014-07-20
| | | | | * guix/utils.scm (fold-tree, fold-tree-leaves): New functions. * tests/utils.scm: Add tests for them.
* offload: '{send,receive}-files' wait for completion of the transfer.Ludovic Courtès2014-04-14
| | | | | | | | | | | | | | | | | | Fixes situations where the remote 'guix build' is invoked before the .drv has been completely copied, as reported at <https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00174.html>. In some cases 'send-files' would return before the other end is done importing the files, and so the subsequent 'guix build' invocation would just miss the .drv file it refers to. * guix/utils.scm (call-with-decompressed-port): Don't close PORT. (call-with-compressed-output-port): Likewise. * tests/utils.scm ("compressed-output-port + decompressed-port"): Adjust accordingly. * guix/scripts/offload.scm (send-files): Add explicit (close-pipe pipe) call. (retrieve-files): Likewise.
* tests: Avoid buffering in 'fcntl-flock' tests.Ludovic Courtès2014-04-07
| | | | | | | Partially fixes <http://bugs.gnu.org/17212>. * tests/utils.scm ("fcntl-flock wait", "fcntl-flock non-blocking"): Open files in binary mode, with no buffering.
* utils: Add 'call-with-decompressed-port' and 'call-with-compressed-output-port'.Ludovic Courtès2014-03-24
| | | | | | | * guix/utils.scm (call-with-decompressed-port, call-with-compressed-output-port): New procedures. * tests/utils.scm ("compressed-output-port + decompressed-port"): Rewrite to use them.
* utils: Add 'filtered-output-port' and 'compressed-output-port'.Ludovic Courtès2014-03-24
| | | | | | | * guix/utils.scm (filtered-output-port, compressed-output-port): New procedures. * tests/utils.scm ("compressed-output-port + decompressed-port"): New test.
* utils: Add 'decompressed-port' and 'compressed-port'.Ludovic Courtès2014-03-22
| | | | | | | | | * guix/utils.scm (decompressed-port, compressed-port): New procedures. * guix/scripts/substitute-binary.scm (decompressed-port): Remove. (guix-substitute-binary): Pass a symbol or #f as the first argument to 'decompress-port'. * tests/utils.scm ("compressed-port, decompressed-port, non-file"): New test.
* utils: 'filtered-port' doesn't leave dangling processes behind.Ludovic Courtès2014-03-22
| | | | | | | * guix/utils.scm (filtered-port): Make sure the 'execl' child process always exits, and does (primitive-_exit 1) upon execution failure. Use 'primitive-_exit' in the 'dump-port' child process. * tests/utils.scm ("filtered-port, does not exist"): New test.
* utils: Add a non-blocking option for 'fcntl-flock'.Ludovic Courtès2014-03-08
| | | | | | * guix/utils.scm (F_SETLK): New variable. (fcntl-flock): Add 'wait?' keyword parameter; honor it. * tests/utils.scm ("fcntl-flock non-blocking"): New test.
* tests: Rewrite 'fcntl-lock' test.Ludovic Courtès2014-03-06
| | | | | | | | | * tests/utils.scm (temp-file): New variable. ("fcntl-flock"): Rewrite to actually test whether the child process waits for the lock to be released. The previous test was wrong because (1) it expected F_SETLK semantics, not F_SETLKW, and (2) it got EBADF because of a mismatch between the open mode and the lock style.
* utils: Add 'fcntl-flock'.Ludovic Courtès2014-01-24
| | | | | | * guix/utils.scm (%struct-flock, F_SETLKW, F_xxLCK): New variables. (fcntl-flock): New procedure. * tests/utils.scm ("fcntl-flock"): New test.
* utils: Add 'string-replace-substring'.Ludovic Courtès2013-11-13
| | | | | | * guix/utils.scm (string-replace-substring): New procedure. Based on code by Mark H. Weaver. * tests/utils.scm ("string-replace-substring"): New test.
* utils: Add `guile-version>?', and use it.Ludovic Courtès2013-08-23
| | | | | | | | | | | | | | This fixes Guile version comparisons when (version) has a vendor-specific suffix. Reported by Andreas Enge <andreas@enge.fr>. * guix/utils.scm (guile-version>?): New procedure. * tests/utils.scm ("guile-version>? 1.8", "guile-version>? 10.5"): New tests. * guix/scripts/substitute-binary.scm (fetch, progress-report-port): Use `guile-version>?' instead of `version>?'. * guix/http-client.scm (when-guile<=2.0.5, http-fetch): Likewise.
* substitute-binary: Try hard to avoid port buffering.Ludovic Courtès2013-08-22
| | | | | | | | | * guix/scripts/substitute-binary.scm (fetch): In the `file' case, open with the `b' flag, so that the coding cookie reading thing doesn't lead to buffering some of the data (on 2.0.5). * tests/utils.scm ("filtered-port, file"): Open with `r0b'. Fixes a test failure with Guile 2.0.5 whereby the first byte of FILE would be missing from DECOMPRESSED.
* substitute-binary: Pass `filtered-port' an unbuffered port.Ludovic Courtès2013-05-15
| | | | | | | | | | | | | | | | | | This fixes a bug whereby `read-response' would read more than just the response, with the extra data going into the port's buffer; the "bzip2 -dc" process spawned by `filtered-port' would not see the those buffered data, which are definitely lost, and would bail out with "bzip2: (stdin) is not a bzip2 file." * guix/utils.scm (filtered-port): Document that INPUT must be unbuffered. * guix/web.scm (http-fetch): Add `buffered?' parameter. Call `open-socket-for-uri' explicitly, and call `setvbuf' when BUFFERED? is false. Pass the port to `http-get'. Close it upon 301/302. * guix/scripts/substitute-binary.scm (fetch): Add `buffered?' parameter. Pass it to `http-fetch'; honor it for `file' URIs. (guix-substitute-binary): Call `fetch' with #:buffered? #f for port RAW. * tests/utils.scm ("filtered-port, file"): Open FILE as unbuffered.
* Move record utilities to (guix records).Ludovic Courtès2013-05-12
| | | | | | | | | | | | | | | | * guix/utils.scm (define-record-type*): Move to... * guix/records.scm: ... here. New file. * guix/build-system.scm, guix/packages.scm: Use it. * guix/gnu-maintenance.scm: Likewise. (official-gnu-packages)[alist->record]: Remove. * guix/scripts/substitute-binary.scm: Likewise. (alist->record, object->fields): Remove. * tests/utils.scm ("define-record-type*", "define-record-type* with letrec* behavior", "define-record-type* & inherit", "define-record-type* & inherit & letrec* behavior", "define-record-type* & thunked", "define-record-type* & thunked & default", "define-record-type* & thunked & inherited"): Move to... * tests/records.scm: ... here. New file.
* Merge branch 'core-updates'Ludovic Courtès2013-04-30
|\
| * utils: Add `string-tokenize*'.Ludovic Courtès2013-04-28
| | | | | | | | | | * guix/utils.scm (string-tokenize*): New procedure. * tests/utils.scm ("string-tokenize*"): New test.
* | substitute-binary: Support decompression from non-file ports.Ludovic Courtès2013-04-29
|/ | | | | | | | | | | * guix/scripts/substitute-binary.scm (filtered-port): Move to utils.scm. (decompressed-port): Upon "none", return '() as the second value. (guix-substitute-binary): Expect `decompressed-port' to return a list of PIDs as its second value. * guix/utils.scm (filtered-port): New procedure. Add case for when INPUT is not `file-port?'. * tests/utils.scm ("filtered-port, file", "filtered-port, non-file"): New tests.
* utils: Add `fold2'.Ludovic Courtès2013-04-14
| | | | | | | * gnu/packages.scm (fold2): Remove. * guix/utils.scm (fold2): New procedure. Generalization of the above to one and two lists. * tests/utils.scm ("fold2, 1 list", "fold2, 2 lists"): New tests.
* Augment `.dir-locals.el'.Ludovic Courtès2013-02-01
| | | | | | | | * .dir-locals.el: Add more Scheme settings. * guix-build.in, tests/base32.scm, tests/build-utils.scm, tests/builders.scm, tests/derivations.scm, tests/packages.scm, tests/snix.scm, tests/store.scm, tests/union.scm, tests/utils.scm: Remove redundant Emacs local variable settings.
* define-record-type*: Add the `thunked' field definition keyword.Ludovic Courtès2013-01-23
| | | | | | | | | | | | | | | * guix/utils.scm (define-record-type*)[make-syntactic-constructor]: Add a `thunked' parameter. (thunked-field?, field-bindings): New procedures. Use the latter when generating `letrec*' bindings. [thunked-field?, thunked-field-accessor-name, field-spec->srfi-9, thunked-field-accessor-name]: New procedures. Use them when generating the `define-record-type' form, and to generated thunk field accessors, along call to `make-syntactic-constructor' with the new argument. * tests/utils.scm ("define-record-type* & thunked", "define-record-type* & thunked & default", "define-record-type* & thunked & inherited"): New tests.
* Update license headers.Ludovic Courtès2013-01-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change all license headers, except guix/build/* and ld-wrapper.scm, with this code: (use-modules (guix build utils) (srfi srfi-1)) (fluid-set! %default-port-encoding "UTF-8") (substitute* (remove (lambda (f) (or (string-contains f ".tar.") (string-contains f ".git/") (string-contains f ".so") (string-suffix? ".o" f) (string-suffix? ".a" f) (string-suffix? ".go" f) (string-suffix? ".pdf" f) (string-suffix? ".png" f) (string-suffix? ".info" f) (equal? (basename f) "guix-daemon") (equal? (basename f) "nix-setuid-helper") (string-contains f "nix-upstream/") (string-contains f "distro/packages/bootstrap/"))) (find-files "." "\\.[a-z]+$")) (("^([[:graph:]]+) This file is part of Guix." _ comment-start) (string-append comment-start " This file is part of GNU Guix.")) (("^([[:graph:]]+) Guix --- Nix package management.*" _ comment-start) (string-append comment-start " GNU Guix --- Functional package management for GNU\n")) (("^([[:graph:]]+) Guix is " _ comment-start) (string-append comment-start " GNU Guix is ")) (("^([[:graph:]]+) along with Guix." _ comment-start) (string-append comment-start " along with GNU Guix.")) (("^([[:graph:]]+) Copyright \\(C\\)" _ comment-start) (string-append comment-start " Copyright ©"))) Change headers using C-style comments manually.
* tests: Remove hard-coded /nix/store.Ludovic Courtès2012-12-05
| | | | | * tests/utils.scm ("store-path-package-name"): Use (%store-prefix) instead of a hard-coded "/nix/store".
* Move base32 code to (guix base32).Ludovic Courtès2012-11-11
| | | | | | | | | | | | | | | | | | | | | | * guix/utils.scm (bytevector-quintet-ref, bytevector-quintet-ref-right, bytevector-quintet-length, bytevector-quintet-fold, bytevector-quintet-fold-right, make-bytevector->base32-string, %nix-base32-chars, %rfc4648-base32-chars, bytevector->base32-string, bytevector->nix-base32-string, bytevector-quintet-set!, bytevector-quintet-set-right!, base32-string-unfold, base32-string-unfold-right, make-base32-string->bytevector, base32-string->bytevector, nix-base32-string->bytevector): Move to... * guix/base32.scm: ... here. New file. * tests/utils.scm (%nix-hash, "bytevector->base32-string", "base32-string->bytevector", "nix-base32-string->bytevector", "sha256 & bytevector->base32-string"): Move to... * tests/base32.scm: ... here. New file * guix-download.in, guix/derivations.scm, guix/packages.scm, guix/snix.scm, tests/builders.scm, tests/derivations.scm: Adjust accordingly. * guix.scm (%public-modules): Add `base32'.
* utils: Add `package-name->name+version'.Ludovic Courtès2012-11-04
| | | | | | * guix/utils.scm (package-name->name+version): New procedure. * guix-package.in (guix-package)[find-package]: Use it. * tests/utils.scm ("package-name->name+version"): New test.
* store: Add `store-path-package-name'.Ludovic Courtès2012-11-01
| | | | | * guix/store.scm (store-path-package-name): New procedure. * tests/utils.scm ("store-path-package-name"): New test.
* define-record-type*: Add the `inherit' syntactic constructor keyword.Ludovic Courtès2012-08-30
| | | | | | | | | * guix/utils.scm (define-record-type*)[make-syntactic-constructor]: New `type' parameter. Add the `inherit' keyword and corresponding support code. * tests/utils.scm ("define-record-type* & inherit", "define-record-type* & inherit & letrec* behavior"): New tests.
* build: Pass $(NIX_INSTANTIATE) to the build and test environments.Ludovic Courtès2012-08-14
| | | | | | | | | | * Makefile.am (.scm.go): Define $NIX_INSTANTIATE. (TESTS_ENVIRONMENT): Likewise, and define $NIX_HASH. * guix/utils.scm (nixpkgs-derivation): Use $NIX_INSTANTIATE when defined. * tests/utils.scm (%nix-hash): New variable. ("sha256 & bytevector->nix-base32-string"): Use it.
* define-record-type*: Add `letrec*' behavior.Ludovic Courtès2012-07-03
| | | | | | | | | * guix/utils.scm (define-record-type*)[make-syntactic-constructor]: Bind all the ((FIELD VALUE) ...) in a `letrec*'. Adjust `field-value' accordingly. * tests/utils.scm ("define-record-type* with letrec* behavior"): New test.
* Add `define-record-type*'.Ludovic Courtès2012-06-27
| | | | | | * guix/utils.scm (define-record-type*): New macro. * tests/utils.scm ("define-record-type*"): New test.
* Add a `%current-system' fluid.Ludovic Courtès2012-06-11
| | | | | | | | | | * guix/utils.scm (gnu-triplet->nix-system): New procedure. (%current-system): New variable. * tests/utils.scm ("gnu-triplet->nix-system"): New test. * tests/derivations.scm (%current-system): Remove. Update users to use (%current-system) instead.
* Add `base16-string->bytevector'.Ludovic Courtès2012-06-09
| | | | | | * guix/utils.scm (base16-string->bytevector): New procedure. * tests/utils.scm ("bytevector->base16-string->bytevector"): New test.
* Add `base32-string->bytevector' and `nix-base32-string->bytevector'.Ludovic Courtès2012-06-09
| | | | | | | | | | | * guix/utils.scm (bytevector-quintet-set!, bytevector-quintet-set-right!, base32-string-unfold, base32-string-unfold-right, make-base32-string->bytevector, base32-string->bytevector, nix-base32-string->bytevector): New procedures. * tests/utils.scm ("base32-string->bytevector", "nix-base32-string->bytevector"): New tests.
* Fix `bytevector->nix-base32-string'.Ludovic Courtès2012-06-03
| | | | | | | | | | | | | * guix/utils.scm (bytevector-quintet-ref-right, bytevector-quintet-fold): New procedures. (bytevector-quintet-fold-right): Add `quintet-fold' parameter; use it instead of `bytevector-quintet-fold'. (bytevector->base32-string): Pass BYTEVECTOR-QUINTET-FOLD as the first parameter. (bytevector->nix-base32-string): Pass BYTEVECTOR-QUINTET-FOLD-RIGHT as the first parameter. * tests/utils.scm ("sha256 & bytevector->nix-base32-string"): New test.
* Add (guix utils), with `bytevector->base32-string'.Ludovic Courtès2012-06-01
* guix/utils.scm, tests/utils.scm: New files.