steak 1.1.0 → 2.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/{MIT-LICENSE → LICENSE} +1 -1
- data/README.md +110 -0
- data/lib/generators/steak/install_generator.rb +12 -0
- data/lib/generators/steak/spec_generator.rb +11 -0
- data/lib/generators/steak/templates/acceptance_spec.rb +13 -0
- data/lib/generators/steak/templates/spec/acceptance/acceptance_helper.rb +4 -0
- data/lib/generators/steak/templates/spec/acceptance/support/helpers.rb +6 -0
- data/lib/{rspec-2/rails/generators/templates → generators/steak/templates/spec/acceptance/support}/paths.rb +1 -1
- data/lib/steak.rb +4 -10
- data/lib/steak/acceptance_example_group.rb +12 -0
- data/lib/steak/railtie.rb +7 -0
- data/lib/steak/version.rb +3 -0
- data/lib/tasks/steak_tasks.rake +14 -0
- data/spec/acceptance/creating_specs_spec.rb +75 -0
- data/spec/acceptance/getting_started_spec.rb +33 -0
- data/spec/acceptance/rake_support_spec.rb +40 -0
- data/spec/fixtures/rails_project/.gitignore +5 -0
- data/spec/fixtures/rails_project/Gemfile +55 -0
- data/spec/fixtures/rails_project/README +261 -0
- data/spec/fixtures/rails_project/Rakefile +7 -0
- data/spec/fixtures/rails_project/app/assets/images/rails.png +0 -0
- data/spec/fixtures/rails_project/app/assets/javascripts/application.js +9 -0
- data/spec/fixtures/rails_project/app/assets/stylesheets/application.css +7 -0
- data/spec/fixtures/rails_project/app/controllers/application_controller.rb +3 -0
- data/spec/fixtures/rails_project/app/helpers/application_helper.rb +2 -0
- data/spec/fixtures/rails_project/app/mailers/.gitkeep +0 -0
- data/spec/fixtures/rails_project/app/models/.gitkeep +0 -0
- data/spec/fixtures/rails_project/app/views/layouts/application.html.erb +14 -0
- data/spec/fixtures/rails_project/config.ru +4 -0
- data/spec/fixtures/rails_project/config/application.rb +49 -0
- data/spec/fixtures/rails_project/config/boot.rb +6 -0
- data/spec/fixtures/rails_project/config/database.yml +48 -0
- data/spec/fixtures/rails_project/config/environment.rb +5 -0
- data/spec/fixtures/rails_project/config/environments/development.rb +24 -0
- data/spec/fixtures/rails_project/config/environments/production.rb +52 -0
- data/spec/fixtures/rails_project/config/environments/test.rb +39 -0
- data/spec/fixtures/rails_project/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/fixtures/rails_project/config/initializers/inflections.rb +10 -0
- data/spec/fixtures/rails_project/config/initializers/mime_types.rb +5 -0
- data/spec/fixtures/rails_project/config/initializers/secret_token.rb +7 -0
- data/spec/fixtures/rails_project/config/initializers/session_store.rb +8 -0
- data/spec/fixtures/rails_project/config/initializers/wrap_parameters.rb +12 -0
- data/spec/fixtures/rails_project/config/locales/en.yml +5 -0
- data/spec/fixtures/rails_project/config/routes.rb +58 -0
- data/spec/fixtures/rails_project/db/seeds.rb +7 -0
- data/spec/fixtures/rails_project/doc/README_FOR_APP +2 -0
- data/spec/fixtures/rails_project/lib/tasks/.gitkeep +0 -0
- data/spec/fixtures/rails_project/log/.gitkeep +0 -0
- data/spec/fixtures/rails_project/public/404.html +26 -0
- data/spec/fixtures/rails_project/public/422.html +26 -0
- data/spec/fixtures/rails_project/public/500.html +26 -0
- data/spec/fixtures/rails_project/public/favicon.ico +0 -0
- data/spec/fixtures/rails_project/public/index.html +241 -0
- data/spec/fixtures/rails_project/public/robots.txt +5 -0
- data/spec/fixtures/rails_project/script/rails +6 -0
- data/spec/fixtures/rails_project/test/fixtures/.gitkeep +0 -0
- data/spec/fixtures/rails_project/test/functional/.gitkeep +0 -0
- data/spec/fixtures/rails_project/test/integration/.gitkeep +0 -0
- data/spec/fixtures/rails_project/test/performance/browsing_test.rb +12 -0
- data/spec/fixtures/rails_project/test/test_helper.rb +13 -0
- data/spec/fixtures/rails_project/test/unit/.gitkeep +0 -0
- data/spec/fixtures/rails_project/vendor/assets/stylesheets/.gitkeep +0 -0
- data/spec/fixtures/rails_project/vendor/plugins/.gitkeep +0 -0
- data/spec/fixtures/rails_project_with_steak/.gitignore +5 -0
- data/spec/fixtures/rails_project_with_steak/.rspec +1 -0
- data/spec/fixtures/rails_project_with_steak/Gemfile +58 -0
- data/spec/fixtures/rails_project_with_steak/README +261 -0
- data/spec/fixtures/rails_project_with_steak/Rakefile +7 -0
- data/spec/fixtures/rails_project_with_steak/app/assets/images/rails.png +0 -0
- data/spec/fixtures/rails_project_with_steak/app/assets/javascripts/application.js +9 -0
- data/spec/fixtures/rails_project_with_steak/app/assets/stylesheets/application.css +7 -0
- data/spec/fixtures/rails_project_with_steak/app/controllers/application_controller.rb +3 -0
- data/spec/fixtures/rails_project_with_steak/app/helpers/application_helper.rb +2 -0
- data/spec/fixtures/rails_project_with_steak/app/mailers/.gitkeep +0 -0
- data/spec/fixtures/rails_project_with_steak/app/models/.gitkeep +0 -0
- data/spec/fixtures/rails_project_with_steak/app/views/layouts/application.html.erb +14 -0
- data/spec/fixtures/rails_project_with_steak/config.ru +4 -0
- data/spec/fixtures/rails_project_with_steak/config/application.rb +49 -0
- data/spec/fixtures/rails_project_with_steak/config/boot.rb +6 -0
- data/spec/fixtures/rails_project_with_steak/config/database.yml +48 -0
- data/spec/fixtures/rails_project_with_steak/config/environment.rb +5 -0
- data/spec/fixtures/rails_project_with_steak/config/environments/development.rb +24 -0
- data/spec/fixtures/rails_project_with_steak/config/environments/production.rb +52 -0
- data/spec/fixtures/rails_project_with_steak/config/environments/test.rb +39 -0
- data/spec/fixtures/rails_project_with_steak/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/fixtures/rails_project_with_steak/config/initializers/inflections.rb +10 -0
- data/spec/fixtures/rails_project_with_steak/config/initializers/mime_types.rb +5 -0
- data/spec/fixtures/rails_project_with_steak/config/initializers/secret_token.rb +7 -0
- data/spec/fixtures/rails_project_with_steak/config/initializers/session_store.rb +8 -0
- data/spec/fixtures/rails_project_with_steak/config/initializers/wrap_parameters.rb +12 -0
- data/spec/fixtures/rails_project_with_steak/config/locales/en.yml +5 -0
- data/spec/fixtures/rails_project_with_steak/config/routes.rb +58 -0
- data/spec/fixtures/rails_project_with_steak/db/schema.rb +15 -0
- data/spec/fixtures/rails_project_with_steak/db/seeds.rb +7 -0
- data/spec/fixtures/rails_project_with_steak/doc/README_FOR_APP +2 -0
- data/spec/fixtures/rails_project_with_steak/lib/tasks/.gitkeep +0 -0
- data/spec/fixtures/rails_project_with_steak/log/.gitkeep +0 -0
- data/spec/fixtures/rails_project_with_steak/public/404.html +26 -0
- data/spec/fixtures/rails_project_with_steak/public/422.html +26 -0
- data/spec/fixtures/rails_project_with_steak/public/500.html +26 -0
- data/spec/fixtures/rails_project_with_steak/public/favicon.ico +0 -0
- data/spec/fixtures/rails_project_with_steak/public/index.html +241 -0
- data/spec/fixtures/rails_project_with_steak/public/robots.txt +5 -0
- data/spec/fixtures/rails_project_with_steak/script/rails +6 -0
- data/spec/fixtures/rails_project_with_steak/spec/acceptance/acceptance_helper.rb +4 -0
- data/spec/fixtures/rails_project_with_steak/spec/acceptance/support/.gitignore +0 -0
- data/spec/fixtures/rails_project_with_steak/spec/acceptance/support/helpers.rb +6 -0
- data/{generators/steak/templates → spec/fixtures/rails_project_with_steak/spec/acceptance/support}/paths.rb +1 -1
- data/spec/fixtures/rails_project_with_steak/spec/spec_helper.rb +27 -0
- data/spec/fixtures/rails_project_with_steak/test/fixtures/.gitkeep +0 -0
- data/spec/fixtures/rails_project_with_steak/test/functional/.gitkeep +0 -0
- data/spec/fixtures/rails_project_with_steak/test/integration/.gitkeep +0 -0
- data/spec/fixtures/rails_project_with_steak/test/performance/browsing_test.rb +12 -0
- data/spec/fixtures/rails_project_with_steak/test/test_helper.rb +13 -0
- data/spec/fixtures/rails_project_with_steak/test/unit/.gitkeep +0 -0
- data/spec/fixtures/rails_project_with_steak/vendor/assets/stylesheets/.gitkeep +0 -0
- data/spec/fixtures/rails_project_with_steak/vendor/plugins/.gitkeep +0 -0
- data/spec/support/helpers.rb +73 -0
- data/spec/support/refresh_fixtures_task.rb +30 -0
- metadata +255 -117
- data/README.rdoc +0 -193
- data/Rakefile +0 -23
- data/generators/acceptance_spec/USAGE +0 -1
- data/generators/acceptance_spec/acceptance_spec_generator.rb +0 -9
- data/generators/acceptance_spec/templates/acceptance_spec.rb +0 -12
- data/generators/steak/USAGE +0 -8
- data/generators/steak/steak_generator.rb +0 -26
- data/generators/steak/templates/acceptance_helper.rb +0 -18
- data/generators/steak/templates/helpers.rb +0 -5
- data/generators/steak/templates/steak.rake +0 -44
- data/lib/rspec-1/steak.rb +0 -17
- data/lib/rspec-2/rails/generators/install_generator.rb +0 -31
- data/lib/rspec-2/rails/generators/spec_generator.rb +0 -36
- data/lib/rspec-2/rails/generators/templates/acceptance_helper.rb +0 -5
- data/lib/rspec-2/rails/generators/templates/acceptance_spec.rb +0 -12
- data/lib/rspec-2/rails/generators/templates/helpers.rb +0 -5
- data/lib/rspec-2/rails/railtie.rb +0 -14
- data/lib/rspec-2/rails/tasks/steak.rake +0 -14
- data/lib/rspec-2/steak.rb +0 -31
- data/spec/acceptance/rspec-1/acceptance_helper.rb +0 -98
- data/spec/acceptance/rspec-1/acceptance_spec_generator_spec.rb +0 -44
- data/spec/acceptance/rspec-1/basic_spec.rb +0 -76
- data/spec/acceptance/rspec-1/rails_spec.rb +0 -39
- data/spec/acceptance/rspec-1/steak_generator_spec.rb +0 -96
- data/spec/acceptance/rspec-2/acceptance_helper.rb +0 -81
- data/spec/acceptance/rspec-2/basic_spec.rb +0 -121
- data/spec/acceptance/rspec-2/rails_spec.rb +0 -88
- data/spec/acceptance/rspec-2/steak_install_generator_spec.rb +0 -62
- data/spec/acceptance/rspec-2/steak_spec_generator_spec.rb +0 -77
@@ -1,14 +0,0 @@
|
|
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
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'rspec/core/rake_task'
|
2
|
-
|
3
|
-
namespace :spec do
|
4
|
-
desc "Run the code examples in spec/acceptance"
|
5
|
-
RSpec::Core::RakeTask.new(:acceptance => "db:test:prepare") do |t|
|
6
|
-
t.pattern = "spec/acceptance/**/*_spec.rb"
|
7
|
-
end
|
8
|
-
|
9
|
-
task :statsetup do
|
10
|
-
require 'rails/code_statistics'
|
11
|
-
::STATS_DIRECTORIES << %w(Acceptance\ specs spec/acceptance) if File.exist?('spec/acceptance')
|
12
|
-
::CodeStatistics::TEST_TYPES << "Acceptance specs" if File.exist?('spec/acceptance')
|
13
|
-
end
|
14
|
-
end
|
data/lib/rspec-2/steak.rb
DELETED
@@ -1,31 +0,0 @@
|
|
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
|
-
|
10
|
-
if defined?(RSpec::Rails)
|
11
|
-
include RSpec::Rails::RequestExampleGroup
|
12
|
-
include Rack::Test::Methods
|
13
|
-
metadata[:type] = :acceptance
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
module DSL
|
20
|
-
def feature(*args, &block)
|
21
|
-
args << {} unless args.last.is_a?(Hash)
|
22
|
-
args.last.update :type => :acceptance, :steak => true, :caller => caller
|
23
|
-
describe(*args, &block)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
extend Steak::DSL
|
29
|
-
|
30
|
-
RSpec.configuration.include Steak::AcceptanceExampleGroup, :type => :acceptance
|
31
|
-
|
@@ -1,98 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rspec'
|
3
|
-
require File.dirname(__FILE__) + "/../../../lib/steak"
|
4
|
-
require 'tempfile'
|
5
|
-
require 'shellwords'
|
6
|
-
|
7
|
-
module RSpec_1
|
8
|
-
module Factories
|
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
|
-
puts cmd if trace?
|
48
|
-
`rvm @steak-rspec-1 exec #{cmd} 2>&1`.tap do |o|
|
49
|
-
puts o if trace? and o
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def trace?
|
54
|
-
ENV['TRACE']
|
55
|
-
end
|
56
|
-
|
57
|
-
def run_spec(file_path)
|
58
|
-
run "spec #{file_path}"
|
59
|
-
end
|
60
|
-
|
61
|
-
def current_dir
|
62
|
-
Dir.tmpdir + "/steak_rspec_1"
|
63
|
-
end
|
64
|
-
|
65
|
-
def steak_dir
|
66
|
-
File.expand_path(File.dirname(__FILE__) + "/../../../")
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def self.gemset_create(gemset, *gems)
|
71
|
-
`rvm gemset create #{gemset}`
|
72
|
-
gems.each do |name|
|
73
|
-
name = Shellwords.escape(name)
|
74
|
-
`rvm @#{gemset} gem search #{name} -i || rvm @#{gemset} gem install #{name}`
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
RSpec.configure do |config|
|
79
|
-
config.include Factories, :example_group => { :file_path => /rspec-1/}
|
80
|
-
config.include HelperMethods, :example_group => { :file_path => /rspec-1/}
|
81
|
-
config.before :suite do
|
82
|
-
gemset_create "steak-rspec-1", "rspec-rails -v '~> 1'",
|
83
|
-
"rails -v '~> 2'",
|
84
|
-
"webrat",
|
85
|
-
"capybara",
|
86
|
-
"sqlite3-ruby",
|
87
|
-
"rake",
|
88
|
-
"test-unit -v '1.2.3'"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
class String
|
94
|
-
CHARS = ('a'..'z').to_a + ('A'..'Z').to_a
|
95
|
-
def self.random(size = 8)
|
96
|
-
(0..size).map{ CHARS[rand(CHARS.length)] }.join
|
97
|
-
end
|
98
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
2
|
-
|
3
|
-
feature "Acceptance spec generator for rails", %q{
|
4
|
-
In order to quickly add a new acceptance spec
|
5
|
-
As a developer
|
6
|
-
I want to run a generator that creates it for me
|
7
|
-
} do
|
8
|
-
|
9
|
-
background do
|
10
|
-
@rails_app = create_rails_app
|
11
|
-
end
|
12
|
-
|
13
|
-
scenario "Adding new acceptance spec" do
|
14
|
-
Dir.chdir @rails_app do
|
15
|
-
run "script/generate acceptance_spec document_creation"
|
16
|
-
end
|
17
|
-
|
18
|
-
File.exist?(@rails_app + "/spec/acceptance/document_creation_spec.rb").should be_true
|
19
|
-
end
|
20
|
-
|
21
|
-
scenario "Adding new acceptance spec (plural name)" do
|
22
|
-
Dir.chdir @rails_app do
|
23
|
-
run "script/generate acceptance_spec creating_documents"
|
24
|
-
end
|
25
|
-
|
26
|
-
File.exist?(@rails_app + "/spec/acceptance/creating_documents_spec.rb").should be_true
|
27
|
-
end
|
28
|
-
|
29
|
-
scenario "Adding new acceptance spec (pascalized name)" do
|
30
|
-
Dir.chdir @rails_app do
|
31
|
-
run "script/generate acceptance_spec DocumentCreation"
|
32
|
-
end
|
33
|
-
|
34
|
-
File.exist?(@rails_app + "/spec/acceptance/document_creation_spec.rb").should be_true
|
35
|
-
end
|
36
|
-
|
37
|
-
scenario "Adding new acceptance spec (name ending with _spec)" do
|
38
|
-
Dir.chdir @rails_app do
|
39
|
-
run "script/generate acceptance_spec document_creation_spec"
|
40
|
-
end
|
41
|
-
|
42
|
-
File.exist?(@rails_app + "/spec/acceptance/document_creation_spec.rb").should be_true
|
43
|
-
end
|
44
|
-
end
|
@@ -1,76 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
2
|
-
|
3
|
-
feature "Acceptance spec execution", %q{
|
4
|
-
In order to write better software
|
5
|
-
As a ruby developer
|
6
|
-
I want to execute acceptance specs
|
7
|
-
} do
|
8
|
-
|
9
|
-
scenario "Minimal acceptance spec" do
|
10
|
-
spec_file = create_spec <<-SPEC
|
11
|
-
require '#{File.dirname(__FILE__) + "/../../../lib/steak"}'
|
12
|
-
feature "Minimal spec" do
|
13
|
-
scenario "First scenario" do
|
14
|
-
true.should be_true
|
15
|
-
end
|
16
|
-
end
|
17
|
-
SPEC
|
18
|
-
output = run_spec spec_file
|
19
|
-
output.should =~ /1 example, 0 failures/
|
20
|
-
end
|
21
|
-
|
22
|
-
scenario "Minimal acceptance spec that fails" do
|
23
|
-
spec_file = create_spec <<-SPEC
|
24
|
-
require '#{File.dirname(__FILE__) + "/../../../lib/steak"}'
|
25
|
-
feature "Minimal spec" do
|
26
|
-
scenario "First scenario" do
|
27
|
-
true.should be_false
|
28
|
-
end
|
29
|
-
end
|
30
|
-
SPEC
|
31
|
-
output = run_spec spec_file
|
32
|
-
output.should =~ /1 example, 1 failure/
|
33
|
-
end
|
34
|
-
|
35
|
-
scenario "Acceptance spec with background" do
|
36
|
-
spec_file = create_spec <<-SPEC
|
37
|
-
require '#{File.dirname(__FILE__) + "/../../../lib/steak"}'
|
38
|
-
feature "Minimal spec" do
|
39
|
-
background do
|
40
|
-
@value = 17
|
41
|
-
end
|
42
|
-
scenario "First scenario" do
|
43
|
-
@value.should == 17
|
44
|
-
end
|
45
|
-
end
|
46
|
-
SPEC
|
47
|
-
output = run_spec spec_file
|
48
|
-
output.should =~ /1 example, 0 failures/
|
49
|
-
end
|
50
|
-
|
51
|
-
scenario "Steak should not pollute Object methods namespace" do
|
52
|
-
spec_file = create_spec <<-SPEC
|
53
|
-
require '#{File.dirname(__FILE__) + "/../../../lib/steak"}'
|
54
|
-
|
55
|
-
class Wadus
|
56
|
-
def call_feature
|
57
|
-
feature
|
58
|
-
end
|
59
|
-
|
60
|
-
def method_missing(meth, *args, &blk)
|
61
|
-
return "Hello!"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
feature "Wadus class" do
|
66
|
-
scenario "should not be polluted by Steak" do
|
67
|
-
w = Wadus.new
|
68
|
-
w.should_not respond_to(:feature)
|
69
|
-
w.call_feature.should == "Hello!"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
SPEC
|
73
|
-
output = run_spec spec_file
|
74
|
-
output.should =~ /1 example, 0 failures/
|
75
|
-
end
|
76
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
2
|
-
|
3
|
-
feature "Acceptance spec execution", %q{
|
4
|
-
In order to write better web apps
|
5
|
-
As a rails developer
|
6
|
-
I want to execute acceptance specs
|
7
|
-
} do
|
8
|
-
|
9
|
-
scenario "Minimal acceptance spec" do
|
10
|
-
rails_app = create_rails_app
|
11
|
-
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
12
|
-
:content => <<-SPEC
|
13
|
-
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
14
|
-
feature "Minimal spec" do
|
15
|
-
scenario "First scenario" do
|
16
|
-
Rails.env.should be_test
|
17
|
-
end
|
18
|
-
end
|
19
|
-
SPEC
|
20
|
-
output = run_spec spec_file
|
21
|
-
output.should =~ /1 example, 0 failures/
|
22
|
-
end
|
23
|
-
|
24
|
-
scenario "Integration stuff" do
|
25
|
-
rails_app = create_rails_app
|
26
|
-
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
27
|
-
:content => <<-SPEC
|
28
|
-
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
29
|
-
feature "Minimal spec" do
|
30
|
-
scenario "First scenario" do
|
31
|
-
get "/"
|
32
|
-
response.should have_text(/No route matches/)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
SPEC
|
36
|
-
output = run_spec spec_file
|
37
|
-
output.should =~ /1 example, 0 failures/
|
38
|
-
end
|
39
|
-
end
|
@@ -1,96 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
2
|
-
|
3
|
-
feature "Steak generator for rails", %q{
|
4
|
-
In order to quickly start to hack my rails project with steak
|
5
|
-
As a developer
|
6
|
-
I want to run a generator that sets everything up for me
|
7
|
-
} do
|
8
|
-
|
9
|
-
scenario "Running generator in an empty project" do
|
10
|
-
rails_app = create_rails_app(:setup_steak => false)
|
11
|
-
|
12
|
-
Dir.chdir rails_app do
|
13
|
-
run "script/generate steak"
|
14
|
-
end
|
15
|
-
|
16
|
-
File.exist?(rails_app + "/spec/acceptance/acceptance_helper.rb").should be_true
|
17
|
-
File.exist?(rails_app + "/spec/acceptance/support/helpers.rb").should be_true
|
18
|
-
File.exist?(rails_app + "/spec/acceptance/support/paths.rb").should be_true
|
19
|
-
File.exist?(rails_app + "/lib/tasks/steak.rake").should be_true
|
20
|
-
end
|
21
|
-
|
22
|
-
scenario "Running generator with capybara by default" do
|
23
|
-
rails_app = create_rails_app(:setup_steak => false)
|
24
|
-
|
25
|
-
Dir.chdir rails_app do
|
26
|
-
run "script/generate steak"
|
27
|
-
end
|
28
|
-
|
29
|
-
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
30
|
-
:content => <<-SPEC
|
31
|
-
require File.expand_path(File.dirname(__FILE__) + "/acceptance_helper.rb")
|
32
|
-
feature "Capybara spec" do
|
33
|
-
scenario "First scenario" do
|
34
|
-
visit "/"
|
35
|
-
page.should have_content('No route matches')
|
36
|
-
end
|
37
|
-
end
|
38
|
-
SPEC
|
39
|
-
output = run_spec spec_file
|
40
|
-
output.should =~ /1 example, 0 failures/
|
41
|
-
end
|
42
|
-
|
43
|
-
scenario "Running generator with webrat" do
|
44
|
-
rails_app = create_rails_app(:setup_steak => false)
|
45
|
-
|
46
|
-
Dir.chdir rails_app do
|
47
|
-
run "script/generate steak --webrat"
|
48
|
-
end
|
49
|
-
|
50
|
-
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
51
|
-
:content => <<-SPEC
|
52
|
-
require File.expand_path(File.dirname(__FILE__) + "/acceptance_helper.rb")
|
53
|
-
feature "Capybara spec" do
|
54
|
-
scenario "First scenario" do
|
55
|
-
visit "/"
|
56
|
-
response.should contain('No route matches')
|
57
|
-
end
|
58
|
-
end
|
59
|
-
SPEC
|
60
|
-
output = run_spec spec_file
|
61
|
-
output.should =~ /1 example, 0 failures/
|
62
|
-
end
|
63
|
-
|
64
|
-
scenario "Running rake stats" do
|
65
|
-
rails_app = create_rails_app
|
66
|
-
|
67
|
-
Dir.chdir rails_app do
|
68
|
-
run "script/generate steak"
|
69
|
-
run("rake stats").should =~ /Acceptance specs/
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
scenario "Running specs with rake" do
|
74
|
-
rails_app = create_rails_app(:setup_steak => true)
|
75
|
-
|
76
|
-
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
77
|
-
:content => <<-SPEC
|
78
|
-
require File.expand_path(File.dirname(__FILE__) + "/acceptance_helper.rb")
|
79
|
-
feature "Basic spec" do
|
80
|
-
scenario "First scenario" do
|
81
|
-
true.should == true
|
82
|
-
end
|
83
|
-
end
|
84
|
-
SPEC
|
85
|
-
|
86
|
-
Dir.chdir rails_app do
|
87
|
-
run "rake db:migrate db:test:prepare"
|
88
|
-
|
89
|
-
output = run "rake spec:acceptance"
|
90
|
-
output.should =~ /1 example, 0 failures/
|
91
|
-
|
92
|
-
output = run "rake"
|
93
|
-
output.should =~ /1 example, 0 failures/
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rspec'
|
3
|
-
require File.dirname(__FILE__) + "/../../../lib/steak"
|
4
|
-
require 'tempfile'
|
5
|
-
|
6
|
-
module RSpec_2
|
7
|
-
module Factories
|
8
|
-
def create_spec(options)
|
9
|
-
options = {:content => options} unless options.is_a?(Hash)
|
10
|
-
path = (options[:path] || Dir.tmpdir) + "/#{String.random}_spec.rb"
|
11
|
-
File.open(path, "w") do |file|
|
12
|
-
file.write options[:content]
|
13
|
-
end
|
14
|
-
path
|
15
|
-
end
|
16
|
-
|
17
|
-
def create_rails_app(options = {})
|
18
|
-
options[:browser_simulator] ||= "capybara"
|
19
|
-
|
20
|
-
path = File.join(Dir.tmpdir, String.random, "rails_app")
|
21
|
-
FileUtils.rm_rf path
|
22
|
-
run "rails new #{path}"
|
23
|
-
FileUtils.rm_rf path + '/public/index.html'
|
24
|
-
File.open(File.join(path, "Gemfile"), "a") do |file|
|
25
|
-
file.write %{
|
26
|
-
gem 'rspec-rails', '>= 2.0.0.a9'
|
27
|
-
gem '#{options[:browser_simulator]}'
|
28
|
-
gem 'steak', :path => '#{File.expand_path(File.dirname(__FILE__) + '/../../..')}'
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
run "bundle install"
|
33
|
-
|
34
|
-
Dir.chdir path do
|
35
|
-
run "rails generate rspec:install"
|
36
|
-
if options[:scaffold]
|
37
|
-
run "rails generate scaffold #{options[:scaffold]}"
|
38
|
-
run "rake db:migrate db:test:prepare"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
unless options[:setup_steak] == false
|
43
|
-
Dir.chdir path do
|
44
|
-
run "rails generate steak:install"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
path
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
module HelperMethods
|
54
|
-
def run(cmd)
|
55
|
-
`#{cmd} 2>&1`.tap do |o|
|
56
|
-
puts o if ENV['TRACE']
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def run_spec(file_path, app_base=Dir.pwd)
|
61
|
-
Dir.chdir app_base do
|
62
|
-
run("rspec #{file_path}")
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
RSpec.configure do |config|
|
68
|
-
config.include Factories, :example_group => {:file_path => /rspec-2/}
|
69
|
-
config.include HelperMethods, :example_group => {:file_path => /rspec-2/}
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
class String
|
74
|
-
unless const_defined?("CHARS")
|
75
|
-
CHARS = ('a'..'z').to_a + ('A'..'Z').to_a
|
76
|
-
end
|
77
|
-
|
78
|
-
def self.random(size = 8)
|
79
|
-
(0..size).map{ CHARS[rand(CHARS.length)] }.join
|
80
|
-
end
|
81
|
-
end
|