Preserve gem path so that we use the same gems

Without this patch, I would end up with:

```
An error occurred in a `before(:suite)` hook.
Failure/Error: raise "could not connect to gitaly at #{socket.inspect} after #{sleep_time} seconds"

RuntimeError:
  could not connect to gitaly at "tmp/tests/gitaly/gitaly.socket" after 10 seconds
```

Digging into it, it's because `scripts/gitaly-test-spawn` could not
spawn the process, because it cannot find the installed gems.

I personally installed all my gems under $HOME, namely with:

* `gem install rake --user-install` or:
* `bundle install --path ~/.gem`

The gems would be installed to `~/.gem/ruby/2.4.0/gems`, where
the version is Ruby ABI version.

Now we're changing $HOME, making RubyGems think that the gems
would be installed to `tmp/tests/ruby/2.4.0/gems` which is
apparently not the case.

In order to workaround this, we could preserve $GEM_PATH
populated by RubyGems, ignoring the default path based on $HOME.
This commit is contained in:
Lin Jen-Shin 2017-12-18 21:19:57 +08:00
parent 888ed30969
commit 873bc3a685

View file

@ -1,7 +1,8 @@
#!/usr/bin/env ruby #!/usr/bin/env ruby
gitaly_dir = 'tmp/tests/gitaly' gitaly_dir = 'tmp/tests/gitaly'
env = { 'HOME' => File.expand_path('tmp/tests') } env = { 'HOME' => File.expand_path('tmp/tests'),
'GEM_PATH' => Gem.path.join(':') }
args = %W[#{gitaly_dir}/gitaly #{gitaly_dir}/config.toml] args = %W[#{gitaly_dir}/gitaly #{gitaly_dir}/config.toml]
# Print the PID of the spawned process # Print the PID of the spawned process