Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 139 lines (108 sloc) 3.82 kb
beb9ea0 @myronmarston Allow specs to run when the code is not checked out through git.
authored
1 using_git = File.exist?(File.expand_path('../.git/', __FILE__))
2
3 if using_git
4 require 'bundler'
5 require 'bundler/setup'
6 Bundler::GemHelper.install_tasks
7 end
e57ae60 @myronmarston Updated Gemfile/gemspec/Rakefile, etc to use latest best practices based...
authored
8
d2577f7 @myronmarston Initial commit to vcr.
authored
9 require 'rake'
f05cc59 @myronmarston Upgrade to rspec-2.
authored
10 require "rspec/core/rake_task"
d2577f7 @myronmarston Initial commit to vcr.
authored
11
5cdbba3 @myronmarston Improve full build output.
authored
12 RSpec::Core::RakeTask.new(:spec) do |t|
13 t.verbose = false
7f92317 @myronmarston Require spec_helper before the spec files so we don't get an RSpec confi...
authored
14
15 # we require spec_helper so we don't get an RSpec warning about
16 # examples being defined before configuration.
42ec6c3 @myronmarston Fix spec ruby_opts so that the spec_helper file is only loaded once.
authored
17 t.ruby_opts = "-w -I./spec -r./spec/capture_warnings -rspec_helper"
297f028 @myronmarston Setup warnings as part of the build.
authored
18 t.rspec_opts = %w[--format progress] if (ENV['FULL_BUILD'] || !using_git)
5cdbba3 @myronmarston Improve full build output.
authored
19 end
f05cc59 @myronmarston Upgrade to rspec-2.
authored
20
21 desc "Run all examples using rcov"
22 RSpec::Core::RakeTask.new :rcov => :cleanup_rcov_files do |t|
23 t.rcov = true
d912938 @myronmarston Exclude ping.rb and basic_object.rb from rcov code coverage report.
authored
24 t.rcov_opts = %[-Ilib -Ispec --exclude "spec/*,gems/*,ping,basic_object" --text-report --sort coverage --aggregate coverage.data]
f05cc59 @myronmarston Upgrade to rspec-2.
authored
25 end
26
27 task :cleanup_rcov_files do
28 rm_rf 'coverage.data'
d2577f7 @myronmarston Initial commit to vcr.
authored
29 end
30
c812e28 @myronmarston Some additional cleanup to remove 1.8.6/1.9.1 support.
authored
31 require 'cucumber/rake/task'
32 Cucumber::Rake::Task.new
7a12870 @myronmarston Remove old cukes. I'm going to rewrite them in a documentation style.
authored
33
4531950 @myronmarston Removed old cucumber rake tasks.
authored
34 task :default => [:spec, :cucumber]
d2577f7 @myronmarston Initial commit to vcr.
authored
35
2e37007 @myronmarston Setup build for travis-ci.org.
authored
36 namespace :ci do
37 desc "Sets things up for a ci build on travis-ci.org"
38 task :setup do
364ea9e @myronmarston Don't run em-http-request tests on travis on 1.8.6.
authored
39 ENV['TRAVIS'] = 'true'
2e37007 @myronmarston Setup build for travis-ci.org.
authored
40 sh "git submodule init"
41 sh "git submodule update"
42 end
43
44 RSpec::Core::RakeTask.new(:spec) do |t|
45 t.verbose = true
7f92317 @myronmarston Require spec_helper before the spec files so we don't get an RSpec confi...
authored
46
47 # we require spec_helper so we don't get an RSpec warning about
48 # examples being defined before configuration.
42ec6c3 @myronmarston Fix spec ruby_opts so that the spec_helper file is only loaded once.
authored
49 t.ruby_opts = "-w -I./spec -r./spec/capture_warnings -rspec_helper"
2e37007 @myronmarston Setup build for travis-ci.org.
authored
50 t.rspec_opts = %w[--format progress --backtrace]
51 end
52
53 desc "Run a ci build"
cd96e6e @myronmarston Set some ENV vars to speed up jRuby cukes and enable cukes on jRuby on t...
authored
54 task :build => [:setup, :spec, :cucumber]
2e37007 @myronmarston Setup build for travis-ci.org.
authored
55 end
56
284494f @myronmarston Add readme, changelog and license to relish docs.
authored
57 def ensure_relish_doc_symlinked(filename)
5bd3bff @myronmarston Fixes for relish.
authored
58 from_filename = filename.dup
59 from_filename << '.md' unless filename =~ /\.md$/
60 from = File.expand_path("../features/#{from_filename}", __FILE__)
284494f @myronmarston Add readme, changelog and license to relish docs.
authored
61 to = File.expand_path("../#{filename}", __FILE__)
62
63 if File.symlink?(from)
64 return if File.readlink(from) == to
65
66 # delete the old symlink
67 File.unlink(from)
68 end
69
70 FileUtils.ln_s to, from
71 end
72
a7e9528 @myronmarston Add relish task that runs as part of release.
authored
73 desc "Push cukes to relishapp using the relish-client-gem"
74 task :relish do
7b9bf81 @FlaviuSim added the contributing wiki to the project for symlinking with relish
FlaviuSim authored
75 %w[ README.md CHANGELOG.md Upgrade.md LICENSE CONTRIBUTING.md].each do |file|
284494f @myronmarston Add readme, changelog and license to relish docs.
authored
76 ensure_relish_doc_symlinked(file)
77 end
78
84992d2 @myronmarston Updated relish task to push a version.
authored
79 require 'vcr/version'
4db3d6e @myronmarston Allow relish docs to be re-pushed when I run "rake relish".
authored
80 sh "relish versions:add myronmarston/vcr:#{VCR.version}" if ENV['NEW_RELISH_RELEASE']
84992d2 @myronmarston Updated relish task to push a version.
authored
81 sh "relish push vcr:#{VCR.version}"
a7e9528 @myronmarston Add relish task that runs as part of release.
authored
82 end
83
4db3d6e @myronmarston Allow relish docs to be re-pushed when I run "rake relish".
authored
84 task :prep_relish_release do
85 ENV['NEW_RELISH_RELEASE'] = 'true'
86 end
87
c0141b0 @myronmarston Prevent releases on 1.9 as that leads to weird psych/syck errors in the ...
authored
88 task :require_ruby_18 do
89 raise "This must be run on Ruby 1.8" unless RUBY_VERSION =~ /^1\.8/
90 end
91
92 task :release => [:require_ruby_18, :prep_relish_release, :relish]
a7e9528 @myronmarston Add relish task that runs as part of release.
authored
93
1aa5b6d @myronmarston Add support for gem-testers.org.
authored
94 # For gem-test: http://gem-testers.org/
95 task :test => :spec
8fc0f6e @myronmarston Use "should eq(...)" instead of "should ==" to avoid ruby warning.
authored
96
26c1a8a @myronmarston Add a rake task to migrate the cassettes from the 1.x format to the 2.x ...
authored
97 load './lib/vcr/tasks/vcr.rake'
04e2595 @myronmarston Add task to re-migrate spec fixtures.
authored
98 namespace :vcr do
99 task :reset_spec_cassettes do
100 ENV['DIR'] = 'spec/fixtures'
101 def VCR.version; "2.0.0"; end
102 sh "git checkout v2.0.0.beta1 -- spec/fixtures"
103 end
104
105 task :migrate_cassettes => :reset_spec_cassettes
106 end
26c1a8a @myronmarston Add a rake task to migrate the cassettes from the 1.x format to the 2.x ...
authored
107
108 desc "Migrate cucumber cassettes"
109 task :migrate_cucumber_cassettes do
f46cfa5 @myronmarston Update cucumber migration task.
authored
110 sh "git checkout cb3559d6ffcb36cb823ae96a677e380e5b86ed80 -- features"
26c1a8a @myronmarston Add a rake task to migrate the cassettes from the 1.x format to the 2.x ...
authored
111 require 'vcr/cassette/migrator'
112 Dir["features/**/*.feature"].each do |feature_file|
113 puts " - Migrating #{feature_file}"
114 contents = File.read(feature_file)
115
116 # http://rubular.com/r/gjzkoaYX2O
117 contents.scan(/:\n^\s+"""\n([\s\S]+?)"""/).each do |captures|
118 capture = captures.first
119 indentation = capture[/^ +/]
120 cassette_yml = capture.gsub(/^#{indentation}/, '')
121 new_yml = nil
122
123 Dir.mktmpdir do |dir|
124 file_name = "#{dir}/cassette.yml"
125 File.open(file_name, 'w') { |f| f.write(cassette_yml) }
126 VCR::Cassette::Migrator.new(dir, StringIO.new).migrate!
127 new_yml = File.read(file_name)
128 end
129
130 new_yml.gsub!(/^/, indentation)
131 new_yml << indentation
132 contents.gsub!(capture, new_yml)
133 end
134
135 File.open(feature_file, 'w') { |f| f.write(contents) }
136 end
137 end
138
Something went wrong with that request. Please try again.