132 lines
3.8 KiB
Gherkin
132 lines
3.8 KiB
Gherkin
@fakefs
|
|
Feature: Gemfiles
|
|
Scenario: Process a pure Ruby gemfile
|
|
Given I have the file "Gemfile.penchant" with the content:
|
|
"""
|
|
source :rubygems
|
|
|
|
group :cats, :dogs do
|
|
case environment
|
|
when :local
|
|
gem 'test', :path => '../test'
|
|
when :remote
|
|
gem 'test', :git => 'git://github.com/johnbintz/test.git'
|
|
end
|
|
end
|
|
"""
|
|
When I rebuild the Gemfile for "local" mode
|
|
Then the file "Gemfile" should have the following content:
|
|
"""
|
|
# generated by penchant, environment: local
|
|
source :rubygems
|
|
|
|
group :cats, :dogs do
|
|
gem "test", {:path=>"../test"}
|
|
end
|
|
"""
|
|
When I rebuild the Gemfile for "remote" mode
|
|
Then the file "Gemfile" should have the following content:
|
|
"""
|
|
# generated by penchant, environment: remote
|
|
source :rubygems
|
|
|
|
group :cats, :dogs do
|
|
gem "test", {:git=>"git://github.com/johnbintz/test.git"}
|
|
end
|
|
"""
|
|
|
|
Scenario: Use a gemlist
|
|
Given I have the file "Gemfile.penchant" with the content:
|
|
"""
|
|
gems 'one', 'two', 'three', :path => '../%s'
|
|
"""
|
|
When I rebuild the Gemfile for "local" mode
|
|
Then the file "Gemfile" should have the following content:
|
|
"""
|
|
# generated by penchant, environment: local
|
|
gem "one", {:path=>"../one"}
|
|
gem "two", {:path=>"../two"}
|
|
gem "three", {:path=>"../three"}
|
|
"""
|
|
|
|
Scenario: Use an env block
|
|
Given I have the file "Gemfile.penchant" with the content:
|
|
"""
|
|
env :local do
|
|
gems 'one', 'two', 'three', :path => '../%s'
|
|
end
|
|
"""
|
|
When I rebuild the Gemfile for "local" mode
|
|
Then the file "Gemfile" should have the following content:
|
|
"""
|
|
# generated by penchant, environment: local
|
|
gem "one", {:path=>"../one"}
|
|
gem "two", {:path=>"../two"}
|
|
gem "three", {:path=>"../three"}
|
|
"""
|
|
|
|
When I rebuild the Gemfile for "remote" mode
|
|
Then the file "Gemfile" should have the following content:
|
|
"""
|
|
# generated by penchant, environment: remote
|
|
|
|
"""
|
|
|
|
Scenario: Skip deployment blocks
|
|
Given I have the file "Gemfile.penchant" with the content:
|
|
"""
|
|
no_deployment do
|
|
gem 'one'
|
|
end
|
|
"""
|
|
When I rebuild the Gemfile for "local" mode
|
|
Then the file "Gemfile" should have the following content:
|
|
"""
|
|
# generated by penchant, environment: local
|
|
gem "one"
|
|
"""
|
|
|
|
When I rebuild the Gemfile for "local" mode with deployment
|
|
Then the file "Gemfile" should have the following content:
|
|
"""
|
|
# generated by penchant, environment: local, deployment mode (was local)
|
|
|
|
"""
|
|
|
|
Scenario: Peel multiple hashes off a gemlist
|
|
Given I have the file "Gemfile.penchant" with the content:
|
|
"""
|
|
gems 'one', { :path => '../%s' }, { :require => nil }
|
|
"""
|
|
When I rebuild the Gemfile for "local" mode
|
|
Then the file "Gemfile" should have the following content:
|
|
"""
|
|
# generated by penchant, environment: local
|
|
gem "one", {:path=>"../one", :require=>nil}
|
|
"""
|
|
|
|
Scenario: Don't add an empty hash
|
|
Given I have the file "Gemfile.penchant" with the content:
|
|
"""
|
|
gems 'one'
|
|
"""
|
|
When I rebuild the Gemfile for "local" mode
|
|
Then the file "Gemfile" should have the following content:
|
|
"""
|
|
# generated by penchant, environment: local
|
|
gem "one"
|
|
"""
|
|
|
|
Scenario: Single gem gets processed like a gems list
|
|
Given I have the file "Gemfile.penchant" with the content:
|
|
"""
|
|
gem 'one', :path => '../%s'
|
|
"""
|
|
When I rebuild the Gemfile for "local" mode
|
|
Then the file "Gemfile" should have the following content:
|
|
"""
|
|
# generated by penchant, environment: local
|
|
gem "one", {:path=>"../one"}
|
|
"""
|
|
|