steak 0.4.0.beta.1 → 1.0.0.beta.1
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.
- data/README.rdoc +94 -48
- data/Rakefile +1 -1
- data/lib/rspec-1/rails/generators/acceptance_spec/USAGE +1 -0
- data/lib/rspec-1/rails/generators/acceptance_spec/acceptance_spec_generator.rb +9 -0
- data/lib/{generators → rspec-1/rails/generators}/acceptance_spec/templates/acceptance_spec.rb +2 -3
- data/lib/{generators → rspec-1/rails/generators}/steak/USAGE +4 -4
- data/lib/rspec-1/rails/generators/steak/steak_generator.rb +26 -0
- data/lib/rspec-1/rails/generators/steak/templates/acceptance_helper.rb +18 -0
- data/lib/rspec-1/rails/generators/steak/templates/helpers.rb +5 -0
- data/lib/rspec-1/rails/generators/steak/templates/paths.rb +9 -0
- data/lib/rspec-1/rails/generators/steak/templates/steak.rake +19 -0
- data/lib/rspec-1/steak.rb +23 -0
- data/lib/rspec-2/rails/generators/install_generator.rb +39 -0
- data/lib/rspec-2/rails/generators/spec_generator.rb +33 -0
- data/lib/{generators/steak → rspec-2/rails/generators}/templates/acceptance_helper.rb +8 -10
- data/lib/rspec-2/rails/generators/templates/acceptance_spec.rb +12 -0
- data/lib/rspec-2/rails/generators/templates/helpers.rb +5 -0
- data/lib/rspec-2/rails/generators/templates/paths.rb +9 -0
- data/lib/rspec-2/rails/railtie.rb +14 -0
- data/lib/{generators/steak/templates → rspec-2/rails/tasks}/steak.rake +2 -2
- data/lib/rspec-2/steak.rb +22 -0
- data/lib/steak.rb +8 -10
- data/spec/acceptance/rspec-1/acceptance_helper.rb +95 -0
- data/spec/acceptance/{acceptance_spec_generator_spec.rb → rspec-1/acceptance_spec_generator_spec.rb} +14 -15
- data/spec/acceptance/{basic_spec.rb → rspec-1/basic_spec.rb} +7 -8
- data/spec/acceptance/{rails_spec.rb → rspec-1/rails_spec.rb} +10 -12
- data/spec/acceptance/{steak_generator_spec.rb → rspec-1/steak_generator_spec.rb} +22 -26
- data/spec/acceptance/rspec-2/acceptance_helper.rb +87 -0
- data/spec/acceptance/rspec-2/basic_spec.rb +78 -0
- data/spec/acceptance/rspec-2/rails_spec.rb +89 -0
- data/spec/acceptance/rspec-2/steak_install_generator_spec.rb +66 -0
- data/spec/acceptance/rspec-2/steak_spec_generator_spec.rb +63 -0
- metadata +112 -26
- data/init.rb +0 -8
- data/lib/generators/acceptance_spec/USAGE +0 -0
- data/lib/generators/acceptance_spec/acceptance_spec_generator.rb +0 -13
- data/lib/generators/steak/steak_generator.rb +0 -29
- data/lib/generators/steak/templates/helpers.rb +0 -6
- data/lib/generators/steak/templates/paths.rb +0 -9
- data/spec/acceptance/acceptance_helper.rb +0 -76
@@ -7,24 +7,22 @@ Webrat.configure do |config|
|
|
7
7
|
config.mode = :rack
|
8
8
|
end
|
9
9
|
|
10
|
-
module
|
10
|
+
module Steak::Webrat
|
11
|
+
include Rack::Test::Methods
|
12
|
+
include Webrat::Methods
|
13
|
+
include Webrat::Matchers
|
14
|
+
|
11
15
|
def app
|
12
16
|
Rails.application
|
13
17
|
end
|
14
18
|
end
|
15
19
|
|
16
|
-
|
17
|
-
|
18
|
-
config.include Webrat::Methods
|
19
|
-
config.include Webrat::Matchers
|
20
|
-
config.include AppHelper
|
21
|
-
end
|
20
|
+
RSpec.configuration.include Steak::Webrat, :type => :acceptance
|
21
|
+
|
22
22
|
<%- else -%>
|
23
23
|
require 'capybara/rails'
|
24
24
|
|
25
|
-
|
26
|
-
config.include Capybara
|
27
|
-
end
|
25
|
+
RSpec.configuration.include Capybara, :type => :acceptance
|
28
26
|
<%- end -%>
|
29
27
|
|
30
28
|
# Put your acceptance spec helpers inside /spec/acceptance/support
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'steak'
|
2
|
+
require 'rails'
|
3
|
+
|
4
|
+
module Steak
|
5
|
+
class Railtie < ::Rails::Railtie
|
6
|
+
rake_tasks do
|
7
|
+
load File.dirname(__FILE__) + "/tasks/steak.rake"
|
8
|
+
end
|
9
|
+
generators do
|
10
|
+
require File.dirname(__FILE__) + "/generators/install_generator"
|
11
|
+
require File.dirname(__FILE__) + "/generators/spec_generator"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -2,10 +2,10 @@ require 'rspec/core/rake_task'
|
|
2
2
|
|
3
3
|
namespace :spec do
|
4
4
|
desc "Run the code examples in spec/acceptance"
|
5
|
-
|
5
|
+
RSpec::Core::RakeTask.new(:acceptance => "db:test:prepare") do |t|
|
6
6
|
t.pattern = "spec/acceptance/**/*_spec.rb"
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
task :statsetup do
|
10
10
|
require 'rails/code_statistics'
|
11
11
|
::STATS_DIRECTORIES << %w(Acceptance\ specs spec/acceptance) if File.exist?('spec/acceptance')
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/rails/railtie' if defined?(Rails)
|
2
|
+
|
3
|
+
module Steak
|
4
|
+
module AcceptanceExampleGroup
|
5
|
+
def self.included(base)
|
6
|
+
base.instance_eval do
|
7
|
+
alias scenario example
|
8
|
+
alias background before
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module RSpec::Core::ObjectExtensions
|
15
|
+
def feature(*args, &block)
|
16
|
+
args << {} unless args.last.is_a?(Hash)
|
17
|
+
args.last.update :type => :acceptance, :steak => true
|
18
|
+
describe(*args, &block)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
RSpec.configuration.include Steak::AcceptanceExampleGroup, :type => :acceptance
|
data/lib/steak.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
|
2
|
-
require 'rspec'
|
3
|
-
|
4
|
-
|
5
|
-
class << self
|
6
|
-
alias scenario example
|
7
|
-
alias background before
|
8
|
-
end
|
1
|
+
begin
|
2
|
+
require 'rspec/core'
|
3
|
+
rescue LoadError
|
4
|
+
require 'spec'
|
9
5
|
end
|
10
6
|
|
11
|
-
|
12
|
-
|
7
|
+
if defined?(RSpec)
|
8
|
+
require 'rspec-2/steak'
|
9
|
+
else
|
10
|
+
require 'rspec-1/steak'
|
13
11
|
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rspec'
|
3
|
+
require File.dirname(__FILE__) + "/../../../lib/steak"
|
4
|
+
require 'tempfile'
|
5
|
+
|
6
|
+
module RSpec_1
|
7
|
+
module Factories
|
8
|
+
|
9
|
+
def create_spec(options)
|
10
|
+
options = {:content => options} unless options.is_a?(Hash)
|
11
|
+
path = (options[:path] || current_dir) + "/#{String.random}_spec.rb"
|
12
|
+
File.open(path, "w") do |file|
|
13
|
+
file.write options[:content]
|
14
|
+
end
|
15
|
+
path
|
16
|
+
end
|
17
|
+
|
18
|
+
def create_rails_app(options = {})
|
19
|
+
path = current_dir + "/rails_app_#{String.random}"
|
20
|
+
FileUtils.rm_rf path
|
21
|
+
run "rails #{path}"
|
22
|
+
FileUtils.rm path + '/public/index.html'
|
23
|
+
File.open(path + "/config/environments/test.rb", "a") do |file|
|
24
|
+
file.write <<-CONFIG
|
25
|
+
config.gem 'rspec-rails', :lib => false
|
26
|
+
CONFIG
|
27
|
+
end
|
28
|
+
FileUtils.cp_r steak_dir, path + "/vendor/plugins/steak"
|
29
|
+
|
30
|
+
Dir.chdir path do
|
31
|
+
run "script/generate rspec"
|
32
|
+
end
|
33
|
+
|
34
|
+
unless options[:setup_steak] == false
|
35
|
+
Dir.chdir path do
|
36
|
+
run "script/generate steak"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
path
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
module HelperMethods
|
46
|
+
def run(cmd)
|
47
|
+
`rvm 1.8.7-p249@steak-rspec-1 exec #{cmd} 2>&1`.tap do |o|
|
48
|
+
puts o if ENV['TRACE']
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def run_spec(file_path)
|
53
|
+
run "spec #{file_path}"
|
54
|
+
end
|
55
|
+
|
56
|
+
def current_dir
|
57
|
+
Dir.tmpdir + "/steak_rspec_1"
|
58
|
+
end
|
59
|
+
|
60
|
+
def steak_dir
|
61
|
+
File.expand_path(File.dirname(__FILE__) + "/../../../")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
RSpec.configure do |config|
|
66
|
+
config.include Factories, :example_group => { :file_path => /rspec-1/}
|
67
|
+
config.include HelperMethods, :example_group => { :file_path => /rspec-1/}
|
68
|
+
config.before :all, :example_group => { :file_path => /rspec-1/} do
|
69
|
+
FileUtils.rm_rf current_dir
|
70
|
+
FileUtils.mkdir_p current_dir
|
71
|
+
File.open(current_dir + "/Gemfile", "w") do |file|
|
72
|
+
file.write <<-Gemfile
|
73
|
+
source "http://rubygems.org"
|
74
|
+
gem "rspec-rails", "~> 1.3.0"
|
75
|
+
gem "rails", "~> 2.3.8"
|
76
|
+
gem "webrat"
|
77
|
+
gem "capybara"
|
78
|
+
Gemfile
|
79
|
+
end
|
80
|
+
Dir.chdir current_dir do
|
81
|
+
`rvm gemset create steak-rspec-1`
|
82
|
+
`gem install bundler`
|
83
|
+
`bundle install`
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
class String
|
91
|
+
CHARS = ('a'..'z').to_a + ('A'..'Z').to_a
|
92
|
+
def self.random(size = 8)
|
93
|
+
(0..size).map{ CHARS[rand(CHARS.length)] }.join
|
94
|
+
end
|
95
|
+
end
|
data/spec/acceptance/{acceptance_spec_generator_spec.rb → rspec-1/acceptance_spec_generator_spec.rb}
RENAMED
@@ -5,41 +5,40 @@ feature "Acceptance spec generator for rails", %q{
|
|
5
5
|
As a developer
|
6
6
|
I want to run a generator that creates it for me
|
7
7
|
} do
|
8
|
-
|
8
|
+
|
9
9
|
background do
|
10
10
|
@rails_app = create_rails_app
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
scenario "Adding new acceptance spec" do
|
14
14
|
Dir.chdir @rails_app do
|
15
|
-
|
15
|
+
run "script/generate acceptance_spec document_creation"
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
File.exist?(@rails_app + "/spec/acceptance/document_creation_spec.rb").should be_true
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
scenario "Adding new acceptance spec (plural name)" do
|
22
22
|
Dir.chdir @rails_app do
|
23
|
-
|
23
|
+
run "script/generate acceptance_spec creating_documents"
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
File.exist?(@rails_app + "/spec/acceptance/creating_documents_spec.rb").should be_true
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
scenario "Adding new acceptance spec (pascalized name)" do
|
30
30
|
Dir.chdir @rails_app do
|
31
|
-
|
31
|
+
run "script/generate acceptance_spec DocumentCreation"
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
File.exist?(@rails_app + "/spec/acceptance/document_creation_spec.rb").should be_true
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
scenario "Adding new acceptance spec (name ending with _spec)" do
|
38
38
|
Dir.chdir @rails_app do
|
39
|
-
|
39
|
+
run "script/generate acceptance_spec document_creation_spec"
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
File.exist?(@rails_app + "/spec/acceptance/document_creation_spec.rb").should be_true
|
43
43
|
end
|
44
|
-
|
45
|
-
end
|
44
|
+
end
|
@@ -5,10 +5,10 @@ feature "Acceptance spec execution", %q{
|
|
5
5
|
As a ruby developer
|
6
6
|
I want to execute acceptance specs
|
7
7
|
} do
|
8
|
-
|
8
|
+
|
9
9
|
scenario "Minimal acceptance spec" do
|
10
10
|
spec_file = create_spec <<-SPEC
|
11
|
-
require '#{File.dirname(__FILE__) + "
|
11
|
+
require '#{File.dirname(__FILE__) + "/../../../lib/steak"}'
|
12
12
|
feature "Minimal spec" do
|
13
13
|
scenario "First scenario" do
|
14
14
|
true.should be_true
|
@@ -18,10 +18,10 @@ feature "Acceptance spec execution", %q{
|
|
18
18
|
output = run_spec spec_file
|
19
19
|
output.should =~ /1 example, 0 failures/
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
scenario "Minimal acceptance spec that fails" do
|
23
23
|
spec_file = create_spec <<-SPEC
|
24
|
-
require '#{File.dirname(__FILE__) + "
|
24
|
+
require '#{File.dirname(__FILE__) + "/../../../lib/steak"}'
|
25
25
|
feature "Minimal spec" do
|
26
26
|
scenario "First scenario" do
|
27
27
|
true.should be_false
|
@@ -31,10 +31,10 @@ feature "Acceptance spec execution", %q{
|
|
31
31
|
output = run_spec spec_file
|
32
32
|
output.should =~ /1 example, 1 failure/
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
scenario "Acceptance spec with background" do
|
36
36
|
spec_file = create_spec <<-SPEC
|
37
|
-
require '#{File.dirname(__FILE__) + "
|
37
|
+
require '#{File.dirname(__FILE__) + "/../../../lib/steak"}'
|
38
38
|
feature "Minimal spec" do
|
39
39
|
background do
|
40
40
|
@value = 17
|
@@ -47,5 +47,4 @@ feature "Acceptance spec execution", %q{
|
|
47
47
|
output = run_spec spec_file
|
48
48
|
output.should =~ /1 example, 0 failures/
|
49
49
|
end
|
50
|
-
|
51
|
-
end
|
50
|
+
end
|
@@ -5,37 +5,35 @@ feature "Acceptance spec execution", %q{
|
|
5
5
|
As a rails developer
|
6
6
|
I want to execute acceptance specs
|
7
7
|
} do
|
8
|
-
|
8
|
+
|
9
9
|
scenario "Minimal acceptance spec" do
|
10
10
|
rails_app = create_rails_app
|
11
|
-
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
11
|
+
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
12
12
|
:content => <<-SPEC
|
13
13
|
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
14
14
|
feature "Minimal spec" do
|
15
15
|
scenario "First scenario" do
|
16
|
-
|
17
|
-
Rails.env.should == "test"
|
16
|
+
Rails.env.should be_test
|
18
17
|
end
|
19
18
|
end
|
20
19
|
SPEC
|
21
|
-
output = run_spec spec_file
|
20
|
+
output = run_spec spec_file
|
22
21
|
output.should =~ /1 example, 0 failures/
|
23
22
|
end
|
24
|
-
|
23
|
+
|
25
24
|
scenario "Integration stuff" do
|
26
25
|
rails_app = create_rails_app
|
27
|
-
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
26
|
+
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
28
27
|
:content => <<-SPEC
|
29
28
|
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
30
29
|
feature "Minimal spec" do
|
31
30
|
scenario "First scenario" do
|
32
31
|
get "/"
|
33
|
-
response.should
|
32
|
+
response.should have_text(/No route matches/)
|
34
33
|
end
|
35
34
|
end
|
36
35
|
SPEC
|
37
|
-
output = run_spec spec_file
|
38
|
-
output.should =~ /1 example,
|
36
|
+
output = run_spec spec_file
|
37
|
+
output.should =~ /1 example, 0 failures/
|
39
38
|
end
|
40
|
-
|
41
|
-
end
|
39
|
+
end
|
@@ -7,25 +7,23 @@ feature "Steak generator for rails", %q{
|
|
7
7
|
} do
|
8
8
|
|
9
9
|
scenario "Running generator in an empty project" do
|
10
|
-
|
11
10
|
rails_app = create_rails_app(:setup_steak => false)
|
12
11
|
|
13
12
|
Dir.chdir rails_app do
|
14
|
-
|
13
|
+
run "script/generate steak"
|
15
14
|
end
|
16
15
|
|
17
16
|
File.exist?(rails_app + "/spec/acceptance/acceptance_helper.rb").should be_true
|
18
17
|
File.exist?(rails_app + "/spec/acceptance/support/helpers.rb").should be_true
|
19
18
|
File.exist?(rails_app + "/spec/acceptance/support/paths.rb").should be_true
|
20
19
|
File.exist?(rails_app + "/lib/tasks/steak.rake").should be_true
|
21
|
-
|
22
20
|
end
|
23
21
|
|
24
22
|
scenario "Running generator with capybara by default" do
|
25
|
-
rails_app = create_rails_app(:setup_steak => false
|
23
|
+
rails_app = create_rails_app(:setup_steak => false)
|
26
24
|
|
27
25
|
Dir.chdir rails_app do
|
28
|
-
|
26
|
+
run "script/generate steak"
|
29
27
|
end
|
30
28
|
|
31
29
|
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
@@ -33,46 +31,45 @@ feature "Steak generator for rails", %q{
|
|
33
31
|
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
34
32
|
feature "Capybara spec" do
|
35
33
|
scenario "First scenario" do
|
36
|
-
visit "/
|
37
|
-
page.should have_content('
|
34
|
+
visit "/"
|
35
|
+
page.should have_content('No route matches')
|
38
36
|
end
|
39
37
|
end
|
40
38
|
SPEC
|
41
|
-
output = run_spec spec_file
|
39
|
+
output = run_spec spec_file
|
42
40
|
output.should =~ /1 example, 0 failures/
|
43
41
|
end
|
44
42
|
|
45
43
|
scenario "Running generator with webrat" do
|
46
|
-
rails_app = create_rails_app(:setup_steak => false
|
44
|
+
rails_app = create_rails_app(:setup_steak => false)
|
47
45
|
|
48
46
|
Dir.chdir rails_app do
|
49
|
-
|
47
|
+
run "script/generate steak --webrat"
|
50
48
|
end
|
51
49
|
|
52
50
|
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
53
51
|
:content => <<-SPEC
|
54
52
|
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
55
|
-
feature "
|
53
|
+
feature "Capybara spec" do
|
56
54
|
scenario "First scenario" do
|
57
|
-
visit "/
|
58
|
-
|
55
|
+
visit "/"
|
56
|
+
response.should contain('No route matches')
|
59
57
|
end
|
60
58
|
end
|
61
59
|
SPEC
|
62
|
-
|
63
|
-
output = run_spec spec_file, rails_app
|
60
|
+
output = run_spec spec_file
|
64
61
|
output.should =~ /1 example, 0 failures/
|
65
62
|
end
|
66
|
-
|
63
|
+
|
67
64
|
scenario "Running rake stats" do
|
68
65
|
rails_app = create_rails_app
|
69
66
|
|
70
67
|
Dir.chdir rails_app do
|
71
|
-
|
72
|
-
|
68
|
+
run "script/generate steak"
|
69
|
+
run("rake stats").should =~ /Acceptance specs/
|
73
70
|
end
|
74
71
|
end
|
75
|
-
|
72
|
+
|
76
73
|
scenario "Running specs with rake" do
|
77
74
|
rails_app = create_rails_app(:setup_steak => true)
|
78
75
|
|
@@ -85,16 +82,15 @@ feature "Steak generator for rails", %q{
|
|
85
82
|
end
|
86
83
|
end
|
87
84
|
SPEC
|
88
|
-
|
85
|
+
|
89
86
|
Dir.chdir rails_app do
|
90
|
-
|
91
|
-
|
92
|
-
output =
|
87
|
+
run "rake db:migrate db:test:prepare"
|
88
|
+
|
89
|
+
output = run "rake spec:acceptance"
|
93
90
|
output.should =~ /1 example, 0 failures/
|
94
|
-
|
95
|
-
output =
|
91
|
+
|
92
|
+
output = run "rake"
|
96
93
|
output.should =~ /1 example, 0 failures/
|
97
94
|
end
|
98
95
|
end
|
99
|
-
|
100
96
|
end
|