vendorificator 0.5.git.v0.4.0.63.g8e9d54d → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +9 -9
- data/.travis.yml +2 -2
- data/CHANGELOG.md +10 -0
- data/Gemfile +5 -12
- data/README.md +27 -1
- data/Rakefile +2 -8
- data/features/chef_cookbook.feature +4 -4
- data/features/download.feature +1 -1
- data/features/edgecases.feature +15 -0
- data/features/environment.feature +3 -2
- data/features/fake_mode.feature +15 -0
- data/features/git.feature +4 -4
- data/features/overlay.feature +99 -0
- data/features/step_definitions/basic.rb +22 -0
- data/features/step_definitions/git.rb +16 -0
- data/features/step_definitions/vendorificator.rb +9 -4
- data/features/support/aruba_ext.rb +4 -0
- data/features/support/env.rb +3 -0
- data/features/tarball.feature +2 -2
- data/features/tarball_edit.feature +3 -3
- data/features/tool.feature +6 -4
- data/features/tool_shortcuts.feature +3 -3
- data/features/tool_specs.feature +62 -0
- data/features/vendor.feature +4 -3
- data/lib/vendorificator.rb +7 -1
- data/lib/vendorificator/cli.rb +12 -11
- data/lib/vendorificator/config.rb +32 -1
- data/lib/vendorificator/environment.rb +23 -27
- data/lib/vendorificator/hooks/chef_cookbook.rb +2 -2
- data/lib/vendorificator/overlay.rb +17 -0
- data/lib/vendorificator/segment.rb +376 -0
- data/lib/vendorificator/segment/overlay.rb +114 -0
- data/lib/vendorificator/segment/vendor.rb +115 -0
- data/lib/vendorificator/vendor.rb +25 -279
- data/lib/vendorificator/vendor/tool.rb +40 -23
- data/lib/vendorificator/version.rb +1 -1
- data/spec/vendorificator/config_spec.rb +66 -0
- data/spec/vendorificator/environment_spec.rb +7 -7
- data/spec/vendorificator/fixtures/vendorfiles/overlay.rb +4 -0
- data/spec/vendorificator/segment/vendor_spec.rb +19 -0
- data/spec/vendorificator/segment_spec.rb +106 -0
- data/spec/vendorificator/vendor_spec.rb +0 -89
- data/vendorificator.gemspec +5 -5
- metadata +45 -29
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTEyYjlkYjZhZjk4ZjdmOTgzMDRmN2Y1NzZmMTg4YzQ2NTI4NDBiOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
7
|
-
|
6
|
+
ZjBhOWEzNzQ3NjZlODNkYjI1YjA4NmQ4ZTgyZWYyMjU4MjBjMjQxYQ==
|
7
|
+
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OGRhOGEwNzExYmNkMWJmYzc4NTMzZjM2Nzc1OWY3ZWYyOTQ4NzUxYzJjMmM4
|
10
|
+
ODMwOWExOTQ3MGJkZjM1MWFiYjBiNzk5YWZmNTI5ZGQ1ZjY2Mzg1ZTJiNTA3
|
11
|
+
OTgzZDM3N2UxMTk5NTI5NGE1ZjIwYmRiOTk1N2IwZDE1Y2YwYWE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OTFhOGMwZjU4YzA4MzU2MmFkZjEwNTIwYWRkNDU4M2IyOWZlODNkOThkMmU0
|
14
|
+
MDk4M2EyNmM1NDAxMTlmYjE2NzIwYjNiNzk1YzQxZjM1ZTNhMGNkNWQ1NTMy
|
15
|
+
YzcwZWFmODc3ZmQwMWQyOWJlYjkxOTdjZmQwYTY2OGQ2OWViOTA=
|
data/.travis.yml
CHANGED
@@ -4,9 +4,9 @@ rvm:
|
|
4
4
|
- 1.9.2
|
5
5
|
- 1.9.3
|
6
6
|
- 2.0.0
|
7
|
+
- 2.1.0
|
7
8
|
- jruby-19mode
|
8
|
-
-
|
9
|
-
- rbx-19mode
|
9
|
+
- rbx
|
10
10
|
notifications:
|
11
11
|
hipchat:
|
12
12
|
secure: "bds8WNPnAmnj2ommhDk2JNclAY1Ei/bGeWONRhhKNv1zwrqMvZ7B6M5UapEZ\n6K8z70vFMrdIDEJjzuf+ATYS0BVWKnXCYaofiIfJ7V2hiBm7/xNZ15m2bIrM\nQFIMR/Lrkd+wFA0O8z6SaPjvdEgZC6im4zAAuRq7LpH3NTy6qaA="
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# Changes
|
2
2
|
|
3
|
+
## 0.5.0
|
4
|
+
|
5
|
+
- Added overlays
|
6
|
+
- Added fake mode
|
7
|
+
- Tools now check specs from repo rather than copy from original
|
8
|
+
work tree; added tool extras for files that shouldn't be committed
|
9
|
+
to vendor branch.
|
10
|
+
- Better error messages
|
11
|
+
- Improved CLI syntax, verbosity levels
|
12
|
+
|
3
13
|
## 0.4.0
|
4
14
|
|
5
15
|
- Dropped support for Ruby 1.8.7
|
data/Gemfile
CHANGED
@@ -3,21 +3,14 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in vendorificator.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
11
|
-
|
12
|
-
git "git://github.com/cucumber/cucumber.git",
|
13
|
-
:ref => 'd7452d0a0b7998462e28d10f9d2733947984063d' do
|
14
|
-
gem 'cucumber'
|
15
|
-
end
|
6
|
+
platforms :rbx do
|
7
|
+
gem 'racc'
|
8
|
+
gem 'rubysl', '~> 2.0'
|
9
|
+
gem 'psych'
|
16
10
|
end
|
17
11
|
|
18
12
|
group :development_workstation do
|
19
13
|
gem "pry"
|
20
14
|
gem "awesome_print"
|
21
|
-
gem
|
22
|
-
gem 'debugger'
|
15
|
+
gem 'debugger', :platforms => :mri
|
23
16
|
end
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Vendorificator
|
2
2
|
|
3
|
-
> **THIS PROGRAM IS STILL IN BETA**, use
|
3
|
+
> **THIS PROGRAM IS STILL IN BETA**, use at your own risk!
|
4
4
|
|
5
5
|
## About
|
6
6
|
|
@@ -254,6 +254,9 @@ Vendorificator. Takes the same arguments as `vendor`, plus:
|
|
254
254
|
* `:command` -- command to run to download files
|
255
255
|
* `:specs` -- files specifying what to download; these will be kept
|
256
256
|
on the vendor branch together with downloaded dependencies
|
257
|
+
* `:extras` -- files that are needed for the tool to work, but which
|
258
|
+
won't be committed to the vendor branch together with specs and
|
259
|
+
dependencies
|
257
260
|
|
258
261
|
Two convenience shortcuts are provided, `rubygems_bundler`, and
|
259
262
|
`chef_berkshelf`. They take no arguments. Their definitions are
|
@@ -273,6 +276,29 @@ tool 'cookbooks', # <- chef_berkshelf
|
|
273
276
|
:command => 'berks install --path vendor/cookbooks'
|
274
277
|
```
|
275
278
|
|
279
|
+
#### overlay
|
280
|
+
|
281
|
+
Overlays multiple modules in the same directory, instead of each of them being
|
282
|
+
conjured in its own.
|
283
|
+
|
284
|
+
```ruby
|
285
|
+
overlay '/xyzzy' do
|
286
|
+
vendor 'foo', :version => '0.23' do |v|
|
287
|
+
File.open('README.foo', 'w') { |f| f.puts "Hello, foos!" }
|
288
|
+
end
|
289
|
+
vendor 'bar', :version => '0.42' do |v|
|
290
|
+
File.open('README.bar', 'w') { |f| f.puts "Hello, bars!" }
|
291
|
+
end
|
292
|
+
end
|
293
|
+
```
|
294
|
+
|
295
|
+
### Fake Mode
|
296
|
+
|
297
|
+
To develop a solution based on Vendorificator without having
|
298
|
+
everything committed to a dozen of branches, tagged, and noted, set
|
299
|
+
`vendorificator.stub` Git setting to `true`. Then, Vendorificator will
|
300
|
+
work live in the main repo, and ignore the output directory in Git.
|
301
|
+
|
276
302
|
## Contributing
|
277
303
|
|
278
304
|
1. Fork it
|
data/Rakefile
CHANGED
@@ -11,13 +11,6 @@ begin
|
|
11
11
|
rescue LoadError
|
12
12
|
end
|
13
13
|
|
14
|
-
namespace :relish do
|
15
|
-
desc "Publish documentation to Relish"
|
16
|
-
task :push do
|
17
|
-
sh "relish push 3ofcoins/vendorificator"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
14
|
task :info do
|
22
15
|
sh 'which git'
|
23
16
|
sh 'git --version'
|
@@ -29,9 +22,10 @@ begin
|
|
29
22
|
|
30
23
|
desc 'Run Cucumber features'
|
31
24
|
Cucumber::Rake::Task.new(:features) do |t|
|
32
|
-
t.fork = false
|
25
|
+
# t.fork = false
|
33
26
|
t.cucumber_opts = %w{--format progress}
|
34
27
|
t.cucumber_opts += %w{--tags ~@berkshelf} unless defined?(Berkshelf)
|
28
|
+
t.cucumber_opts += ENV['CUCUMBER_OPTS'].split if ENV['CUCUMBER_OPTS']
|
35
29
|
end
|
36
30
|
rescue LoadError
|
37
31
|
desc 'Cucumber rake task not available'
|
@@ -7,8 +7,8 @@ Scenario: A single cookbook, without dependencies
|
|
7
7
|
"""
|
8
8
|
When I run vendor command "install"
|
9
9
|
Then following has been conjured:
|
10
|
-
| Name | cookbooks/apt
|
11
|
-
| With file | metadata.rb
|
10
|
+
| Name | cookbooks/apt |
|
11
|
+
| With file | metadata.rb |
|
12
12
|
|
13
13
|
Scenario: Dependency hook
|
14
14
|
Given a repository with following Vendorfile:
|
@@ -28,8 +28,8 @@ Scenario: Ignored dependency
|
|
28
28
|
"""
|
29
29
|
When I run vendor command "install"
|
30
30
|
Then following has been conjured:
|
31
|
-
| Name | cookbooks/memcached
|
32
|
-
| With file | metadata.rb
|
31
|
+
| Name | cookbooks/memcached |
|
32
|
+
| With file | metadata.rb |
|
33
33
|
And following has not been conjured:
|
34
34
|
| Name | cookbooks/runit |
|
35
35
|
| With file | metadata.rb |
|
data/features/download.feature
CHANGED
@@ -7,7 +7,7 @@ Scenario: just URL as name
|
|
7
7
|
"""
|
8
8
|
When I run vendor command "install"
|
9
9
|
Then following has been conjured:
|
10
|
-
| Name | testrepo-0.1.tar.gz
|
10
|
+
| Name | testrepo-0.1.tar.gz |
|
11
11
|
And there's a git commit note including "ea207a" in "download_checksum"
|
12
12
|
And there's a git commit note including "20480" in "download_filesize"
|
13
13
|
And there's a git commit note including "test-assets.3ofcoins" in "download_url"
|
data/features/edgecases.feature
CHANGED
@@ -32,3 +32,18 @@ Scenario: module with a .gitignore file
|
|
32
32
|
whatever
|
33
33
|
"""
|
34
34
|
And git repository is clean
|
35
|
+
|
36
|
+
Scenario: Git overlay in root directory
|
37
|
+
Given a repository with following Vendorfile:
|
38
|
+
"""ruby
|
39
|
+
overlay '/' do
|
40
|
+
git "file://#{ENV['FIXTURES_DIR']}/git/testrepo"
|
41
|
+
end
|
42
|
+
"""
|
43
|
+
When I run vendor command "install"
|
44
|
+
Then following has been conjured:
|
45
|
+
| Name | testrepo |
|
46
|
+
| Branch | vendor/overlay/layer/testrepo |
|
47
|
+
| Version | 10e9ac58c77bc229d8c59a5b4eb7422916453148 |
|
48
|
+
| With file | test/alias.c |
|
49
|
+
| Path | . |
|
@@ -60,8 +60,9 @@ Scenario: Running tasks without Vendorfile where they don't need it
|
|
60
60
|
Scenario: Running tasks without Vendorfile where they need it
|
61
61
|
Given a directory named "foo"
|
62
62
|
When I cd to "foo"
|
63
|
-
And I run vendor command "pull"
|
64
|
-
Then
|
63
|
+
And I try to run vendor command "pull"
|
64
|
+
Then it fails
|
65
|
+
And the last vendor output should match /Vendorfile not found/
|
65
66
|
|
66
67
|
Scenario: Getting module list
|
67
68
|
Given a repository with following Vendorfile:
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Feature: Fake mode for development.
|
2
|
+
|
3
|
+
Scenario: Conjuring a simple module in fake mode works.
|
4
|
+
Given a repository with following Vendorfile:
|
5
|
+
"""ruby
|
6
|
+
vendor 'generated', :version => '0.23' do |v|
|
7
|
+
File.open('README', 'w') { |f| f.puts "Hello, World!" }
|
8
|
+
end
|
9
|
+
"""
|
10
|
+
When I set the fake mode variable
|
11
|
+
And I run vendor command "install -v 1"
|
12
|
+
Then a file named "README" should exist
|
13
|
+
And tag "vendor/generated/0.23" does not exist
|
14
|
+
And branch "vendor/generated" does not exist
|
15
|
+
|
data/features/git.feature
CHANGED
@@ -49,10 +49,10 @@ Scenario: Vendorificating a certain tag from a git repo
|
|
49
49
|
"""
|
50
50
|
When I run vendor command "install"
|
51
51
|
Then following has been conjured:
|
52
|
-
| Name | testrepo
|
53
|
-
| Version | email-v0
|
54
|
-
| Without file | README.md
|
55
|
-
| With file | test/alias.c
|
52
|
+
| Name | testrepo |
|
53
|
+
| Version | email-v0 |
|
54
|
+
| Without file | README.md |
|
55
|
+
| With file | test/alias.c |
|
56
56
|
And there's a git log message including "at revision f81247bde4ef7a1c7d280140cc0bcf0b8221a51f"
|
57
57
|
And there's a git commit note including "f81247" in "git_revision"
|
58
58
|
|
@@ -0,0 +1,99 @@
|
|
1
|
+
Feature: Overlay usage
|
2
|
+
|
3
|
+
Scenario: overlay with a single vendor
|
4
|
+
Given a repository with following Vendorfile:
|
5
|
+
"""ruby
|
6
|
+
overlay '/foo' do
|
7
|
+
vendor 'generated', :version => '0.23' do |v|
|
8
|
+
File.open('README', 'w') { |f| f.puts "Hello, World!" }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
"""
|
12
|
+
When I run vendor command "install -v 1"
|
13
|
+
Then the following has been conjured:
|
14
|
+
| Name | generated |
|
15
|
+
| Branch | vendor/overlay/foo/layer/generated |
|
16
|
+
| Version | 0.23 |
|
17
|
+
| Path | foo |
|
18
|
+
| With file | README |
|
19
|
+
And the file "foo/README" should contain "Hello, World!"
|
20
|
+
And branch "vendor/overlay/foo/layer/generated" exists
|
21
|
+
And branch "vendor/overlay/foo/merged" exists
|
22
|
+
And branch "vendor/generated" does not exist
|
23
|
+
And tag "vendor/overlay/foo/layer/generated/0.23" exists
|
24
|
+
And tag "vendor/generated/0.23" does not exist
|
25
|
+
|
26
|
+
Scenario: Overlay in repository root
|
27
|
+
Given a repository with following Vendorfile:
|
28
|
+
"""ruby
|
29
|
+
overlay '/' do
|
30
|
+
vendor 'generated', :version => '0.23' do |v|
|
31
|
+
File.open('README.foo', 'w') { |f| f.puts "Hello, World!" }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
"""
|
35
|
+
When I run vendor command "install -v 1"
|
36
|
+
Then the following has been conjured:
|
37
|
+
| Name | generated |
|
38
|
+
| Branch | vendor/overlay/layer/generated |
|
39
|
+
| Version | 0.23 |
|
40
|
+
| With file | README.foo |
|
41
|
+
| Path | . |
|
42
|
+
And the file "README.foo" should contain "Hello, World!"
|
43
|
+
And branch "vendor/overlay/layer/generated" exists
|
44
|
+
And branch "vendor/generated" does not exist
|
45
|
+
And branch "vendor/overlay/merged" exists
|
46
|
+
|
47
|
+
Scenario: overlay with multiple sources
|
48
|
+
Given a repository with following Vendorfile:
|
49
|
+
"""ruby
|
50
|
+
overlay '/xyzzy' do
|
51
|
+
vendor 'foo', :version => '0.23' do |v|
|
52
|
+
File.open('README.foo', 'w') { |f| f.puts "Hello, World! -- foo" }
|
53
|
+
end
|
54
|
+
vendor 'bar', :version => '0.42' do |v|
|
55
|
+
File.open('README.bar', 'w') { |f| f.puts "Hello, World! -- bar" }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
"""
|
59
|
+
When I run vendor command "install -v 1"
|
60
|
+
Then the following has been conjured:
|
61
|
+
| Name | foo |
|
62
|
+
| Branch | vendor/overlay/xyzzy/layer/foo |
|
63
|
+
| Version | 0.23 |
|
64
|
+
| With file | README.foo |
|
65
|
+
| Path | xyzzy |
|
66
|
+
And the following has been conjured:
|
67
|
+
| Name | bar |
|
68
|
+
| Branch | vendor/overlay/xyzzy/layer/bar |
|
69
|
+
| Version | 0.42 |
|
70
|
+
| With file | README.bar |
|
71
|
+
| Path | xyzzy |
|
72
|
+
And the file "xyzzy/README.foo" should contain "Hello, World! -- foo"
|
73
|
+
And the file "xyzzy/README.bar" should contain "Hello, World! -- bar"
|
74
|
+
And branch "vendor/overlay/xyzzy/layer/foo" exists
|
75
|
+
And branch "vendor/overlay/xyzzy/layer/bar" exists
|
76
|
+
And branch "vendor/overlay/xyzzy/merged" exists
|
77
|
+
And branch "vendor/foo" does not exist
|
78
|
+
And branch "vendor/bar" does not exist
|
79
|
+
|
80
|
+
Scenario: Overlay ID
|
81
|
+
Given a repository with following Vendorfile:
|
82
|
+
"""ruby
|
83
|
+
overlay 'base', path: '/special_base_path' do
|
84
|
+
vendor 'generated', :version => '0.23' do |v|
|
85
|
+
File.open('README.foo', 'w') { |f| f.puts "Hello, World!" }
|
86
|
+
end
|
87
|
+
end
|
88
|
+
"""
|
89
|
+
When I run vendor command "install -v 1"
|
90
|
+
Then the following has been conjured:
|
91
|
+
| Name | generated |
|
92
|
+
| Branch | vendor/overlay/base/layer/generated |
|
93
|
+
| Version | 0.23 |
|
94
|
+
| With file | README.foo |
|
95
|
+
| Path | special_base_path |
|
96
|
+
And the file "special_base_path/README.foo" should contain "Hello, World!"
|
97
|
+
And branch "vendor/overlay/base/layer/generated" exists
|
98
|
+
And branch "vendor/overlay/base/merged" exists
|
99
|
+
And branch "vendor/generated" does not exist
|
@@ -30,6 +30,12 @@ Given /^a remote repository$/ do
|
|
30
30
|
run_simple 'git remote add origin ../remote-repository'
|
31
31
|
end
|
32
32
|
|
33
|
+
When /^I set the fake mode variable$/ do
|
34
|
+
Dir.chdir(current_dir) do
|
35
|
+
MiniGit::Capturing.git :config, 'vendorificator.stub', 'true'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
33
39
|
When /(?:I have following Gemfile|I change Gemfile to|following Gemfile):$/ do |gemfile_contents|
|
34
40
|
write_file('Gemfile', gemfile_contents)
|
35
41
|
run_simple(without_bundler('bundle'))
|
@@ -52,3 +58,19 @@ When /^I run vendor command "(.*)"$/ do |args|
|
|
52
58
|
end
|
53
59
|
end
|
54
60
|
end
|
61
|
+
|
62
|
+
Before do
|
63
|
+
@last_vendor_exception = nil
|
64
|
+
end
|
65
|
+
|
66
|
+
When /^I try to run vendor command "(.*)"$/ do |args|
|
67
|
+
begin
|
68
|
+
step "I run vendor command \"#{args}\""
|
69
|
+
rescue => exc
|
70
|
+
@last_vendor_exception = exc
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
Then 'it fails' do
|
75
|
+
assert { !!@last_vendor_exception }
|
76
|
+
end
|
@@ -62,3 +62,19 @@ end
|
|
62
62
|
Then /^notes ref "(.*?)" exists in the remote repo$/ do |ref_name|
|
63
63
|
assert { remote_git.note_refs.include?(ref_name) }
|
64
64
|
end
|
65
|
+
|
66
|
+
def branch_contains?(branch, path)
|
67
|
+
@branch_files ||= {}
|
68
|
+
@branch_files[branch] ||= git.capturing.
|
69
|
+
ls_tree( {:r => true, :z => true, :name_only => true}, branch).
|
70
|
+
split("\0")
|
71
|
+
@branch_files[branch].include?(path)
|
72
|
+
end
|
73
|
+
|
74
|
+
Then(/^the branch "(.*?)" should contain file "(.*?)"$/) do |branch, path|
|
75
|
+
assert { branch_contains?(branch, path) }
|
76
|
+
end
|
77
|
+
|
78
|
+
Then(/^the branch "(.*?)" should not contain file "(.*?)"$/) do |branch, path|
|
79
|
+
deny { branch_contains?(branch, path) }
|
80
|
+
end
|
@@ -1,5 +1,9 @@
|
|
1
1
|
def vendor_path_for(mod, path)
|
2
|
-
|
2
|
+
if mod['Path']
|
3
|
+
File.join mod['Path'], path
|
4
|
+
else
|
5
|
+
File.join 'vendor', mod['Name'], path
|
6
|
+
end
|
3
7
|
end
|
4
8
|
|
5
9
|
Then /^(?:the )?following has( not)? been conjured:$/ do |not_p, table|
|
@@ -8,12 +12,13 @@ Then /^(?:the )?following has( not)? been conjured:$/ do |not_p, table|
|
|
8
12
|
step "I'm on \"master\" branch"
|
9
13
|
|
10
14
|
table.transpose.hashes.each do |mod|
|
11
|
-
|
15
|
+
branch = mod['Branch'] || "vendor/#{mod['Name']}"
|
16
|
+
step "branch \"#{branch}\" #{exists_p}"
|
12
17
|
|
13
18
|
if mod['Version']
|
14
|
-
step "tag \"
|
19
|
+
step "tag \"#{branch}/#{mod['Version']}\" #{exists_p}"
|
15
20
|
else
|
16
|
-
step "tag matching
|
21
|
+
step "tag matching /^#{Regexp.quote(branch).gsub('/', '\\/')}\\// #{exists_p}"
|
17
22
|
end
|
18
23
|
|
19
24
|
if mod['With file']
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'shellwords'
|
2
2
|
require 'stringio'
|
3
|
+
require 'tee' if ENV['CUCUMBER_DEBUG']
|
3
4
|
|
4
5
|
module Vendorificator
|
5
6
|
module TestSupport
|
@@ -29,6 +30,7 @@ module Vendorificator
|
|
29
30
|
def with_redirected_stdout(&block)
|
30
31
|
redirect_stdout
|
31
32
|
yield
|
33
|
+
ensure
|
32
34
|
bring_back_stdout
|
33
35
|
end
|
34
36
|
|
@@ -55,6 +57,8 @@ module Vendorificator
|
|
55
57
|
@orig_stderr = $stderr
|
56
58
|
$stdout = @mock_stdout = StringIO.new
|
57
59
|
$stderr = @mock_stderr = StringIO.new
|
60
|
+
$stdout = Tee.new(STDOUT, @mock_stdout, :stdout => false) if ENV['CUCUMBER_DEBUG']
|
61
|
+
$stderr = Tee.new(STDERR, @mock_stderr, :stdout => false) if ENV['CUCUMBER_DEBUG']
|
58
62
|
end
|
59
63
|
|
60
64
|
def bring_back_stdout
|