penchant/features/gemfile.feature

107 lines
3.2 KiB
Gherkin

@fakefs
Feature: Gemfiles
Scenario: When rebuilding for deployment, save the original state
Given I have the file "Gemfile.erb" with the content:
"""
this is content
"""
And I have the file "Gemfile" with the content:
"""
# generated by penchant, environment: local
"""
When I rebuild the Gemfile for "production" mode with deployment
Then the file "Gemfile" should have the following content:
"""
# generated by penchant, environment: production, deployment mode (was local)
this is content
"""
Scenario: When unbundling from deployment with an original state, switch to that state
Given I have the file "Gemfile.erb" with the content:
"""
this is content
"""
And I have the file "Gemfile" with the content:
"""
# generated by penchant, environment: production, deployment mode (was local)
"""
When I rebuild the Gemfile asking to switch back to the previous state
Then the file "Gemfile" should have the following content:
"""
# generated by penchant, environment: local
this is content
"""
Scenario: Use placeholder expansion
Given I have the file "Gemfile.erb" with the content:
"""
<% env :local, :path => '../%s' do %>
gem 'test'
<% end %>
"""
When I rebuild the Gemfile for "local" mode
Then the file "Gemfile" should have the following stripped content:
"""
# generated by penchant, environment: local
gem 'test', :path => %{../test}
"""
Scenario: Use a gem list for an operation
Given I have the file "Gemfile.erb" with the content:
"""
<% gems 'test' do %>
<% env :local, :path => '../%s' do %>
<%= gem %>
<% end %>
<% end %>
"""
When I rebuild the Gemfile for "local" mode
Then the file "Gemfile" should have the following stripped content:
"""
# generated by penchant, environment: local
gem 'test', :path => %{../test}
"""
Scenario: Let gem get additional info
Given I have the file "Gemfile.erb" with the content:
"""
<% gems 'test' do %>
<%= gem :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 'test', {:path=>"../test"}
"""
Scenario: Use a gem list without a block
Given I have the file "Gemfile.erb" with the content:
"""
<% gems 'test', :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 'test', {:path=>"../test"}
"""
Scenario: Use a gem list with an array
Given I have the file "Gemfile.erb" with the content:
"""
<% gems [ 'test' ], :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 'test', {:path=>"../test"}
"""