diff options
| author | David Elsing <david.elsing@posteo.net> | 2025-03-04 20:33:08 +0000 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2025-03-05 00:28:49 +0100 |
| commit | 30e51cb6b42e86f9f94d6380f69a1020ee99ff39 (patch) | |
| tree | 6bcf2847774381f7c3a102c1a0ae143ee97d9879 /tests | |
| parent | 749eb1a2dd9fdf63a71f223b3f6756d9cb5940e6 (diff) | |
gexp: ‘with-parameters’ properly handles ‘%graft?’.
Fixes <https://issues.guix.gnu.org/75879>.
* .dir-locals.el (scheme-mode): Remove mparameterize indentation rules.
Add state-parameterize and store-parameterize indentation rules.
* etc/manifests/system-tests.scm (test-for-current-guix): Replace
mparameterize with store-parameterize.
* etc/manifests/time-travel.scm (guix-instance-compiler): Likewise.
* gnu/tests.scm (compile-system-test): Likewise.
* guix/gexp.scm (compile-parameterized): Use state-call-with-parameters.
* guix/monads.scm (mparameterize): Remove macro.
(state-call-with-parameters): New procedure.
(state-parameterize): New macro.
* guix/store.scm (store-parameterize): New macro.
* tests/gexp.scm ("with-parameters for %graft?"): New test.
* tests/monads.scm ("mparameterize"): Remove test.
("state-parameterize"): New test.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Change-Id: I0c74066ca3f37072815b073fb3039925488a9645
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/gexp.scm | 20 | ||||
| -rw-r--r-- | tests/monads.scm | 20 |
2 files changed, 29 insertions, 11 deletions
diff --git a/tests/gexp.scm b/tests/gexp.scm index e870f6cb1b9..2376c70d1ba 100644 --- a/tests/gexp.scm +++ b/tests/gexp.scm | |||
| @@ -451,6 +451,26 @@ | |||
| 451 | (return (string=? (derivation-file-name drv) | 451 | (return (string=? (derivation-file-name drv) |
| 452 | (derivation-file-name result))))) | 452 | (derivation-file-name result))))) |
| 453 | 453 | ||
| 454 | (test-assertm "with-parameters for %graft?" | ||
| 455 | (mlet* %store-monad ((replacement -> (package | ||
| 456 | (inherit %bootstrap-guile) | ||
| 457 | (name (string-upcase | ||
| 458 | (package-name | ||
| 459 | %bootstrap-guile))))) | ||
| 460 | (guile -> (package | ||
| 461 | (inherit %bootstrap-guile) | ||
| 462 | (replacement replacement))) | ||
| 463 | (drv0 (package->derivation %bootstrap-guile)) | ||
| 464 | (drv1 (package->derivation replacement)) | ||
| 465 | (obj0 -> (with-parameters ((%graft? #f)) | ||
| 466 | guile)) | ||
| 467 | (obj1 -> (with-parameters ((%graft? #t)) | ||
| 468 | guile)) | ||
| 469 | (result0 (lower-object obj0)) | ||
| 470 | (result1 (lower-object obj1))) | ||
| 471 | (return (and (eq? drv0 result0) | ||
| 472 | (eq? drv1 result1))))) | ||
| 473 | |||
| 454 | (test-assert "with-parameters + file-append" | 474 | (test-assert "with-parameters + file-append" |
| 455 | (let* ((system (match (%current-system) | 475 | (let* ((system (match (%current-system) |
| 456 | ("aarch64-linux" "x86_64-linux") | 476 | ("aarch64-linux" "x86_64-linux") |
diff --git a/tests/monads.scm b/tests/monads.scm index 7f255f02bf5..c05d13776a5 100644 --- a/tests/monads.scm +++ b/tests/monads.scm | |||
| @@ -136,18 +136,16 @@ | |||
| 136 | %monads | 136 | %monads |
| 137 | %monad-run)) | 137 | %monad-run)) |
| 138 | 138 | ||
| 139 | (test-assert "mparameterize" | 139 | (test-assert "state-parameterize" |
| 140 | (let ((parameter (make-parameter 'outside))) | 140 | (let ((parameter (make-parameter 'outside))) |
| 141 | (every (lambda (monad run) | 141 | (equal? |
| 142 | (equal? | 142 | (run-with-state |
| 143 | (run (mlet monad ((outer (return (parameter))) | 143 | (mlet %state-monad ((outer (return (parameter))) |
| 144 | (inner | 144 | (inner |
| 145 | (mparameterize monad ((parameter 'inside)) | 145 | (state-parameterize ((parameter 'inside)) |
| 146 | (return (parameter))))) | 146 | (return (parameter))))) |
| 147 | (return (list outer inner (parameter))))) | 147 | (return (list outer inner (parameter))))) |
| 148 | '(outside inside outside))) | 148 | '(outside inside outside)))) |
| 149 | %monads | ||
| 150 | %monad-run))) | ||
| 151 | 149 | ||
| 152 | (test-assert "mlet* + text-file + package-file" | 150 | (test-assert "mlet* + text-file + package-file" |
| 153 | (run-with-store %store | 151 | (run-with-store %store |
