forked from vcr/vcr
/
Rakefile
104 lines (84 loc) · 3.01 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
require 'rubygems'
require 'rake'
require "rspec/core/rake_task"
RSpec::Core::RakeTask.new(:spec)
desc "Run all examples using rcov"
RSpec::Core::RakeTask.new :rcov => :cleanup_rcov_files do |t|
t.rcov = true
t.rcov_opts = %[-Ilib -Ispec --exclude "spec/*,gems/*" --text-report --sort coverage --aggregate coverage.data]
end
task :cleanup_rcov_files do
rm_rf 'coverage.data'
end
begin
permutations = {
'fakeweb' => %w( net/http ),
'webmock' => %w( net/http httpclient patron em-http )
}
require 'cucumber/rake/task'
namespace :features do
permutations.each do |http_stubbing_adapter, http_libraries|
features_subtasks = []
namespace http_stubbing_adapter do
http_libraries.each do |http_lib|
next if RUBY_PLATFORM =~ /java/ && %w( patron em-http ).include?(http_lib)
sanitized_http_lib = http_lib.gsub('/', '_')
features_subtasks << "features:#{http_stubbing_adapter}:#{sanitized_http_lib}"
task "#{sanitized_http_lib}_prep" do
ENV['HTTP_STUBBING_ADAPTER'] = http_stubbing_adapter
ENV['HTTP_LIB'] = http_lib
end
Cucumber::Rake::Task.new(
{ sanitized_http_lib => "#{features_subtasks.last}_prep" },
"Run the features using #{http_stubbing_adapter} and #{http_lib}") do |t|
t.cucumber_opts = ['--format', 'progress', '--tags', "@all_http_libs,@#{sanitized_http_lib}"]
# disable scenarios on heroku that can't pass due to heroku's restrictions
t.cucumber_opts += ['--tags', '~@spawns_localhost_server'] if ENV.keys.include?('HEROKU_SLUG')
end
end
end
desc "Run the features using #{http_stubbing_adapter} and each of #{http_stubbing_adapter}'s supported http libraries"
task http_stubbing_adapter => features_subtasks
end
end
desc "Run the features using each supported permutation of http stubbing library and http library."
task :features => permutations.keys.map { |a| "features:#{a}" }
rescue LoadError
task :features do
abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
end
end
task :default => [:spec, :features]
require 'rake/rdoctask'
Rake::RDocTask.new do |rdoc|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
rdoc.rdoc_dir = 'rdoc'
rdoc.title = "vcr #{version}"
rdoc.rdoc_files.include('README*')
rdoc.rdoc_files.include('lib/**/*.rb')
end
def gemspec
@gemspec ||= begin
file = File.expand_path('../vcr.gemspec', __FILE__)
eval(File.read(file), binding, file)
end
end
begin
require 'rake/gempackagetask'
rescue LoadError
task(:gem) { $stderr.puts '`gem install rake` to package gems' }
else
Rake::GemPackageTask.new(gemspec) do |pkg|
pkg.gem_spec = gemspec
end
task :gem => :gemspec
end
desc "install the gem locally"
task :install => :package do
sh %{gem install pkg/#{gemspec.name}-#{gemspec.version}}
end
desc "validate the gemspec"
task :gemspec do
gemspec.validate
end
task :package => :gemspec