Subject: [bug#34217] [PATCH 11/11] gnu: Add ruby-cucumber and ruby-aruba.

From: swedebugia <[email-masked]>
Date: Wed, 30 Jan 2019 17:22:23 +0100

On 2019-01-30 17:11, swedebugia wrote:
> On 2019-01-30 13:56, Ricardo Wurmus wrote:
>>
>> Hi swedebugia,
>>
>>> On 2019-01-27 12:49, Christopher Baines wrote:
>>>> These packages are mutually dependant, so I've put them in one commit.
>>>>
>>>> * gnu/packages/ruby.scm (ruby-aruba, ruby-cucumber): New variables.
>> […]
>>>> +(define-public ruby-aruba
>>>> +  (package
>>>> +    (name "ruby-aruba")
>>>> +    (version "0.14.7")
>>>> +    (source
>>>> +     (origin
>>>> +       (method url-fetch)
>>>> +       (uri (rubygems-uri "aruba" version))
>>>> +       (sha256
>>>> +        (base32
>>>> +         "0x27352n15dsyf5ak246znfawbrm502q15r4msjw3cis17jlcy1l"))))
>>>> +    (build-system ruby-build-system)
>>>> +    (arguments
>>>> +     '(;; TODO: There are a few test failures
>>>> +       ;; 357 examples, 7 failures
>>>
>>> I investigated this and found:
>>> Failed examples:
>>>
>>> rspec ./spec/aruba/api_spec.rb:389 # Aruba::Api files #touch when
>>> directory when exist and the mtim\
>>> e should be set statically
>>> rspec ./spec/aruba/api_spec.rb:388 # Aruba::Api files #touch when
>>> directory when exist and the mtim\
>>> e should be set statically behaves like an existing directory
>>> rspec ./spec/aruba/api_spec.rb:362 # Aruba::Api files #touch when file
>>> when does not exist and the \
>>> mtime should be set statically
>>> rspec ./spec/aruba/api_spec.rb:361 # Aruba::Api files #touch when file
>>> when does not exist and the \
>>> mtime should be set statically behaves like an existing file
>>> rspec ./spec/aruba/matchers/command_spec.rb:165 # Command Matchers
>>> #to_have_output_on_stderr when h\
>>> ave output hello world on stderr
>>> ave output hello world on stderr
>>> rspec ./spec/aruba/matchers/command_spec.rb:128 # Command Matchers
>>> #to_have_output_on_stdout when h\
>>> ave output hello world on stderr
>>> rspec ./spec/aruba/matchers/command_spec.rb:91 # Command Matchers
>>> #to_have_output when have output \
>>> hello world on stderr
>>
>> What does this mean?
>>
>>> The offending lines are in spec/aruba/api_spec.rb
>>> beginning on line: 321, ending on 393
>>> I tried creating a patch with diff for this file. I don't know if this
>>> is the way others here usually create patches.
>>>
>>> If not please enlighten me! :)
>>
>> We usually use “diff -u” to generate patches in unified diff format
>> (that’s the one with plus and minus prefixes).
>>
>> Your patch only disables the test.  I would rather like to know why it
>> fails and then fix the problem at the root.  Have you figured out why
>> they fail and how the failure can be prevented?
>>
> 
> No but I attached the full error message.
> 
> The relevant section is here:
> 
> Randomized with seed 46150
> ............................../tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> /tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> ./tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> /tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> ./tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> ./tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> ......................................................................................................................................F.....F.F......................................../tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> /tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> ./tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> /tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> ................................../tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> ./tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/processes/basic_process.rb:100: 
> warning: instance variable @timed_out not initialized
> ................../tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/runtime.rb:84: 
> warning: instance variable @fixtures_directory not initialized
> ......../tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/lib/aruba/runtime.rb:84: 
> warning: instance variable @fixtures_directory not initialized
> .......FF.....FF............................................................... 
> 
> 
> Failures:
> 
>    1) Command Matchers #to_have_output_on_stdout when have output hello 
> world on stderr
>       Failure/Error: raise LaunchError, "It tried to start #{cmd}. " + 
> e.message
> 
>       NameError:
>         undefined local variable or method `cmd' for 
> #<Aruba::Processes::SpawnProcess:0x0000555556f0bc10>
>         Did you mean?  @cmd
>       # ./lib/aruba/processes/spawn_process.rb:89:in `rescue in start'
>       # ./lib/aruba/processes/spawn_process.rb:83:in `start'
>       # ./lib/aruba/command.rb:69:in `start'
>       # ./lib/aruba/api/command.rb:213:in `run'
>       # ./spec/aruba/matchers/command_spec.rb:126:in `block (4 levels) 
> in <top (required)>'
>       # ./lib/aruba/rspec.rb:22:in `block (2 levels) in <top (required)>'
>       # ------------------
>       # --- Caused by: ---
>       # ChildProcess::LaunchError:
>       #   No such file or directory - 
> /tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/tmp/aruba/cmd.sh
>       #   ./lib/aruba/processes/spawn_process.rb:85:in `block in start'
> 
>    2) Command Matchers #to_have_output when have output hello world on 
> stderr
>       Failure/Error: raise LaunchError, "It tried to start #{cmd}. " + 
> e.message
> 
>       NameError:
>         undefined local variable or method `cmd' for 
> #<Aruba::Processes::SpawnProcess:0x00005555571159e8>
>         Did you mean?  @cmd
>       # ./lib/aruba/processes/spawn_process.rb:89:in `rescue in start'
>       # ./lib/aruba/processes/spawn_process.rb:83:in `start'
>       # ./lib/aruba/command.rb:69:in `start'
>       # ./lib/aruba/api/command.rb:213:in `run'
>       # ./spec/aruba/matchers/command_spec.rb:89:in `block (4 levels) in 
> <top (required)>'
>       # ./lib/aruba/rspec.rb:22:in `block (2 levels) in <top (required)>'
>       # ------------------
>       # --- Caused by: ---
>       # ChildProcess::LaunchError:
>       #   No such file or directory - 
> /tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/tmp/aruba/cmd.sh
>       #   ./lib/aruba/processes/spawn_process.rb:85:in `block in start'
> 
>    3) Command Matchers #to_have_output_on_stderr when have output hello 
> world on stderr
>       Failure/Error: raise LaunchError, "It tried to start #{cmd}. " + 
> e.message
> 
>       NameError:
>         undefined local variable or method `cmd' for 
> #<Aruba::Processes::SpawnProcess:0x0000555556efd4a8>
>         Did you mean?  @cmd
>       # ./lib/aruba/processes/spawn_process.rb:89:in `rescue in start'
>       # ./lib/aruba/processes/spawn_process.rb:83:in `start'
>       # ./lib/aruba/command.rb:69:in `start'
>       # ./lib/aruba/api/command.rb:213:in `run'
>       # ./spec/aruba/matchers/command_spec.rb:163:in `block (4 levels) 
> in <top (required)>'
>       # ./lib/aruba/rspec.rb:22:in `block (2 levels) in <top (required)>'
>       # ------------------
>       # --- Caused by: ---
>       # ChildProcess::LaunchError:
>       #   No such file or directory - 
> /tmp/guix-build-ruby-aruba-0.14.7.drv-0/gem/tmp/aruba/cmd.sh
>       #   ./lib/aruba/processes/spawn_process.rb:85:in `block in start'
> 
>    4) Aruba::Api files #touch when directory when exist and the mtime 
> should be set statically
>       Failure/Error: let(:options) { { :mtime => Time.parse('2014-01-01 
> 10:00:00') } }
> 
>       NoMethodError:
>         undefined method `parse' for Time:Class
>       # ./spec/aruba/api_spec.rb:386:in `block (7 levels) in <top 
> (required)>'
>       # ./spec/aruba/api_spec.rb:381:in `block (6 levels) in <top 
> (required)>'
>       # ./lib/aruba/rspec.rb:22:in `block (2 levels) in <top (required)>'
> 
>    5) Aruba::Api files #touch when directory when exist and the mtime 
> should be set statically behaves like an existing directory
>       Failure/Error: let(:options) { { :mtime => Time.parse('2014-01-01 
> 10:00:00') } }
> 
>       NoMethodError:
>         undefined method `parse' for Time:Class
>       Shared Example Group: "an existing directory" called from 
> ./spec/aruba/api_spec.rb:388
>       # ./spec/aruba/api_spec.rb:386:in `block (7 levels) in <top 
> (required)>'
>       # ./spec/aruba/api_spec.rb:381:in `block (6 levels) in <top 
> (required)>'
>       # ./lib/aruba/rspec.rb:22:in `block (2 levels) in <top (required)>'
> 
>    6) Aruba::Api files #touch when file when does not exist and the 
> mtime should be set statically
>       Failure/Error: let(:options) { { :mtime => Time.parse('2014-01-01 
> 10:00:00') } }
> 
>       NoMethodError:
>         undefined method `parse' for Time:Class
>       # ./spec/aruba/api_spec.rb:359:in `block (7 levels) in <top 
> (required)>'
>       # ./spec/aruba/api_spec.rb:333:in `block (5 levels) in <top 
> (required)>'
>       # ./lib/aruba/rspec.rb:22:in `block (2 levels) in <top (required)>'
> 
>    7) Aruba::Api files #touch when file when does not exist and the 
> mtime should be set statically behaves like an existing file
>       Failure/Error: let(:options) { { :mtime => Time.parse('2014-01-01 
> 10:00:00') } }
> 
>       NoMethodError:
>         undefined method `parse' for Time:Class
>       Shared Example Group: "an existing file" called from 
> ./spec/aruba/api_spec.rb:361
>       # ./spec/aruba/api_spec.rb:359:in `block (7 levels) in <top 
> (required)>'
>       # ./spec/aruba/api_spec.rb:333:in `block (5 levels) in <top 
> (required)>'
>       # ./lib/aruba/rspec.rb:22:in `block (2 levels) in <top (required)>'
> 
> 
> I don't know ruby at all so I might not be the best qualified to 
> investigate this. :/
> 

I suspect a path-error.

I found this, but dunno if it is related: 
https://github.com/cucumber/aruba/issues/418

I submitted this: https://github.com/cucumber/aruba/issues/589

-- 
Cheers
Swedebugia