On Mon, Sep 7, 2015 at 12:02 PM, Ludovic Courtès <[email protected]> wrote:
> David Thompson <[email protected]> skribis:
>
>> From a740a5ca98c02bd0e9c792677dfc8ff8464c8365 Mon Sep 17 00:00:00 2001
>> From: David Thompson <[email protected]>
>> Date: Fri, 4 Sep 2015 16:47:52 -0400
>> Subject: [PATCH] gnu: Add ruby-rack.
>>
>> * gnu/packages/ruby.scm (ruby-rack): New variable.
>
> [...]
>
>> +         (add-before 'check 'fix-tests
>> +           (lambda _
>> +             ;; A few of the tests use the length of a file on disk for
>> +             ;; Content-Length and Content-Range headers.  However, this 
>> file
>> +             ;; has a shebang in it which an earlier phase patches, growing
>> +             ;; the file size from 193 to 239 bytes.
>> +             (substitute* '("test/spec_file.rb")
>> +               (("193") "239")
>
> I think this phase should use the actual length of the shebang, in case
> the store is not at /gnu/store, with something like:
>
>   (- (string-length (which "ruby")) (string-length "/usr/bin/ruby"))
>
> Could you look into it?

Good point.  It was easy to implement, too:

    (let ((size-diff (- (string-length (which "ruby"))
                        (string-length "/usr/bin/env ruby"))))
      (substitute* '("test/spec_file.rb")
        (("193")
         (number->string (+ 193 size-diff)))
        (("bytes(.)22-33" all delimiter)
         (string-append "bytes"
                        delimiter
                        (number->string (+ 22 size-diff))
                        "-"
                        (number->string (+ 33 size-diff))))))

Pushed, thanks!

- Dave

Reply via email to