Maxime Devos writes: > Taiju HIGASHI schreef op do 09-06-2022 om 19:23 [+0900]: >> Hi Maxime, >> >> I tried to mock open-pipe* and isatty?* using the mock macro and also >> add a test to inspect the program coming across to open-pipe*, but gave >> up because I could not get the return value of the >> with-paginated-output-port macro. > > The return value of 'with-paginated-output-port' is just whatever the > last expression put in that macro evaluates to. Also 'close-pipe' > needs to be mocked, otherwise an error will result. > > Try: > > (test-assert "with-paginated-output-port: finds less in PATH" > (call-with-temporary-directory > (lambda (dir) > (define used-command #false) > (with-environment-variables > `(("PATH" ,dir)) > (make-dummy-executable-file dir "less") > (mock ((ice-9 popen) open-pipe* > (lambda (mode command . args) > (when used-command ; <--- an extra test > (error "open-pipe* should only be called once")) > (set! used-command command) ; <--- this captures the passed command > (%make-void-port ""))) ; return a dummy port > (mock ((ice-9 popen) close-pipe (const 'ok)) > (mock ((guix colors) isatty?* (const #t)) > (with-paginated-output-port port 'ok))))) > (and (pk 'used-command used-command dir) ; <-- fails on my computer because a non-absolute path is passed and I haven't applied our patch > (string=? (in-vicinity dir "less") used-command))))) Thank you very much! It worked as expected! I made a v3 patch.