> +(test-equal "substitute, first URL has narinfo but nar is 404, both URLs authorized" > + "Substitutable data." > + (with-narinfo* > + (string-append %narinfo "Signature: " > + (signature-field %narinfo)) > + %main-substitute-directory > + > + (with-http-server `((200 ,(string-append %narinfo "Signature: " > + (signature-field %narinfo))) > + (404 "Sorry, nar is missing!")) > + (dynamic-wind > + (const #t) > + (lambda () > + (parameterize ((substitute-urls > + (list (%local-url) > + (string-append "file://" > + %main-substitute-directory)))) > + (request-substitution (string-append (%store-prefix) > + "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") > + "substitute-retrieved")) > + (call-with-input-file "substitute-retrieved" get-string-all)) > + (lambda () > + (false-if-exception (delete-file "substitute-retrieved"))))))) Shouldn't it only ignore 'file not found' (ENOENT?) exceptions? If the exception handling is refined a bit, it becomes a bit more complicated, and could be simplified to (when [exists] [delete]), as there are no atomicity concerns. This test, and some others, can be improved by also checking the URI. While currently 'with-http-server' does not support that, there are (5 months, with the v1 having seen some reviewing and a v2 available) patches for that at . That patch also _requires_ always mentioning the URI, if the cover letter is correct. It also allows simplifying the use of '%local-url' a bit. Greetings, Maxime.