test-name: fold-available-packages with/without cache
location: /home/main/src/guix/tests/packages.scm:1739
source:
+ (test-assert
+ "fold-available-packages with/without cache"
+ (let ()
+ (define no-cache
+ (fold-available-packages
+ (lambda* (name version result #:rest rest)
+ (cons (cons* name version rest) result))
+ '()))
+ (define from-cache
+ (call-with-temporary-directory
+ (lambda (cache)
+ (generate-package-cache cache)
+ (mock ((guix describe) current-profile (const cache))
+ (mock ((gnu packages)
+ cache-is-authoritative?
+ (const #t))
+ (fold-available-packages
+ (lambda* (name version result #:rest rest)
+ (cons (cons* name version rest) result))
+ '()))))))
+ (define (list->set* lst)
+ (let loop ((lst lst) (duplicates '()) (seen (set)))
+ (match lst
+ (() (values seen duplicates))
+ ((head . tail)
+ (if (set-contains? seen head)
+ (loop tail (cons head duplicates) seen)
+ (loop tail duplicates (set-insert head seen)))))))
+ (let ((set1 duplicates1 (list->set* from-cache))
+ (set2 duplicates2 (list->set* no-cache)))
+ (and (null? duplicates1)
+ (null? duplicates2)
+ (every (cut set-contains? set1 <>) no-cache)
+ (every (cut set-contains? set2 <>) from-cache)))))
actual-value: #f
result: FAIL
Thanks,
Phil