lib/watirspec/rake_tasks.rb in watir-6.10.0 vs lib/watirspec/rake_tasks.rb in watir-6.10.1

- old
+ new

@@ -1,115 +1,115 @@ -require 'rake/tasklib' - -module WatirSpec - class RakeTasks < Rake::TaskLib - def initialize - namespace :watirspec do - desc 'Initialize WatirSpec' - task :init do - init_watirspec - print_usage - end - - desc 'List WatirSpec examples' - task :list do - print_specs - end - - desc 'Run WatirSpec examples' - task :run, %i(spec line) do |_, args| - run(args) - end - end - end - - private - - def init_watirspec - Dir.mkdir('spec') unless Dir.exist?('spec') - return if File.exist?('spec/watirspec_helper.rb') - - File.open('spec/watirspec_helper.rb', 'w') do |file| - file.write(watirspec_helper_template) - end - end - - def print_specs - puts "The following spec files are present:\n\n" - spec_files.each do |file| - filename = file.sub("#{watirspec_path}/", '') - puts " #{filename}" - end - end - - def run(**args) - return if system(rspec_command(args)) - exit $?.exitstatus || 1 - end - - def rspec_command(**args) - cmd = [rspec_binary] - if args[:spec] - spec_file = spec_files.find { |file| file == "#{watirspec_path}/#{args[:spec]}_spec.rb" } - spec_file << ":#{args[:line]}" if args[:line] - cmd << spec_file - else - cmd << spec_files - end - - cmd.join(' ') - end - - def spec_files - Dir.glob("#{watirspec_path}/**/*_spec.rb") - end - - def rspec_binary - rspec_path = Bundler.rubygems.find_name('rspec-core').first.full_gem_path - "#{rspec_path}/exe/rspec" - end - - def watirspec_path - watir_path = Bundler.rubygems.find_name('watir').first.full_gem_path - "#{watir_path}/spec/watirspec" - end - - def watirspec_helper_template - <<-RUBY -require 'watirspec' -# require your gems - -WatirSpec.implementation do |watirspec| - # add WatirSpec implementation (see example below) - # - # watirspec.name = :watizzle - # watirspec.browser_class = Watir::Browser - # watirspec.browser_args = [:firefox, {}] - # watirspec.guard_proc = lambda do |args| - # args.include?(:firefox) - # end -end - -WatirSpec.run! - RUBY - end - - def print_usage - p <<-EOS -File spec/watirspec_helper.rb is successfully created! -Please, check it and customize for your needs. Once done, you can start using WatirSpec. - -Run all WatirSpec examples: - $ bundle exec rake watirspec:run - -Run specific WatirSpec example: - $ bundle exec rake watirspec:run[elements/div] - -Run WatirSpec example on a custom line: - $ bundle exec rake watirspec:run[elements/div, 50] - -List all WatirSpec examples: - $ bundle exec rake watirspec:list - EOS - end - end -end +require 'rake/tasklib' + +module WatirSpec + class RakeTasks < Rake::TaskLib + def initialize + namespace :watirspec do + desc 'Initialize WatirSpec' + task :init do + init_watirspec + print_usage + end + + desc 'List WatirSpec examples' + task :list do + print_specs + end + + desc 'Run WatirSpec examples' + task :run, %i(spec line) do |_, args| + run(args) + end + end + end + + private + + def init_watirspec + Dir.mkdir('spec') unless Dir.exist?('spec') + return if File.exist?('spec/watirspec_helper.rb') + + File.open('spec/watirspec_helper.rb', 'w') do |file| + file.write(watirspec_helper_template) + end + end + + def print_specs + puts "The following spec files are present:\n\n" + spec_files.each do |file| + filename = file.sub("#{watirspec_path}/", '') + puts " #{filename}" + end + end + + def run(**args) + return if system(rspec_command(args)) + exit $?.exitstatus || 1 + end + + def rspec_command(**args) + cmd = [rspec_binary] + if args[:spec] + spec_file = spec_files.find { |file| file == "#{watirspec_path}/#{args[:spec]}_spec.rb" } + spec_file << ":#{args[:line]}" if args[:line] + cmd << spec_file + else + cmd << spec_files + end + + cmd.join(' ') + end + + def spec_files + Dir.glob("#{watirspec_path}/**/*_spec.rb") + end + + def rspec_binary + rspec_path = Bundler.rubygems.find_name('rspec-core').first.full_gem_path + "#{rspec_path}/exe/rspec" + end + + def watirspec_path + watir_path = Bundler.rubygems.find_name('watir').first.full_gem_path + "#{watir_path}/spec/watirspec" + end + + def watirspec_helper_template + <<-RUBY +require 'watirspec' +# require your gems + +WatirSpec.implementation do |watirspec| + # add WatirSpec implementation (see example below) + # + # watirspec.name = :watizzle + # watirspec.browser_class = Watir::Browser + # watirspec.browser_args = [:firefox, {}] + # watirspec.guard_proc = lambda do |args| + # args.include?(:firefox) + # end +end + +WatirSpec.run! + RUBY + end + + def print_usage + p <<-EOS +File spec/watirspec_helper.rb is successfully created! +Please, check it and customize for your needs. Once done, you can start using WatirSpec. + +Run all WatirSpec examples: + $ bundle exec rake watirspec:run + +Run specific WatirSpec example: + $ bundle exec rake watirspec:run[elements/div] + +Run WatirSpec example on a custom line: + $ bundle exec rake watirspec:run[elements/div, 50] + +List all WatirSpec examples: + $ bundle exec rake watirspec:list + EOS + end + end +end