Rakefile in polytrix-0.0.1 vs Rakefile in polytrix-0.1.0.pre
- old
+ new
@@ -1,143 +1,38 @@
require 'polytrix'
require 'bundler/gem_tasks'
-require 'rspec/core/rake_task'
-require 'pacto/rake_task'
require 'rake/notes/rake_task'
-require 'highline/import'
-require 'json'
+require 'rspec/core/rake_task'
+require 'cucumber'
+require 'cucumber/rake/task'
+require 'rubocop/rake_task'
-NOT_SETUP = "You need to set RAX_USERNAME and RAX_API_KEY env vars in order to run tests"
+task :default => [:spec, :features, :self, :rubocop]
-RSpec::Core::RakeTask.new('features') do |t|
- t.rspec_opts = "-I features"
- t.pattern = 'features/**/*_spec.rb'
-end
-
RSpec::Core::RakeTask.new('spec') do |t|
t.rspec_opts = "-f documentation"
end
-task :default => :spec
-
-desc 'Run all the SDK tests'
-task :features => [:check_setup]
-
-desc 'Check pre-requisites'
-task :check_setup do
- fail NOT_SETUP unless ENV['RAX_USERNAME'] && ENV['RAX_API_KEY']
+Cucumber::Rake::Task.new(:features) do |t|
+ t.cucumber_opts = "features --require features/support --require features/step_definitions"
end
desc 'Remove reports and other generated artifacts'
task :clean do
FileUtils.rm_rf 'docs'
FileUtils.rm_rf 'reports'
end
-desc 'Fetch dependencies for each SDK'
-task :bootstrap do
- Bundler.with_clean_env do
- Dir['sdks/*'].each do |sdk_dir|
- Dir.chdir sdk_dir do
- if is_windows?
- system "PowerShell -NoProfile -ExecutionPolicy Bypass .\\scripts\\bootstrap"
- else
- system "scripts/bootstrap"
- end
- end
- end
- end
+desc 'Self-test and self-document'
+task :self do
+ sh 'bundle exec polytrix bootstrap'
+ sh 'bundle exec polytrix test'
+ sh 'bundle exec polytrix code2doc samples/sdks/java/challenges/*.java --target-dir=docs/samples/code2doc/java'
+ sh 'bundle exec polytrix code2doc samples/sdks/python/challenges/*.py --target-dir=docs/samples/code2doc/python'
+ sh 'bundle exec polytrix code2doc samples/sdks/ruby/challenges/*.rb --target-dir=docs/samples/code2doc/ruby'
+ # sh 'bundle exec polytrix code2doc samples/*.rb'
end
-desc 'Configure the test framework'
-task :setup do
- username = ask "Enter your Rackspace Username: "
- api_key = ask("Enter your Rackspace API KEY: "){|q| q.echo = "*"}
- password = ask("Enter your Rackspace Password (for Packer): "){|q| q.echo = "*"}
-
- puts "Creating .rbenv-vars"
- File.open(".rbenv-vars", 'w') do |f|
- f.puts "RAX_USERNAME=#{username}"
- f.puts "RAX_API_KEY=#{api_key}"
- f.puts
- end
-
- puts "Creating .packer-creds.json"
- packer_creds = {
- "RAX_USERNAME" => username,
- "RAX_PASSWORD" => password
- }
- File.open(".packer-creds.json", "w") do |f|
- f.puts JSON.pretty_generate packer_creds
- end
-end
-
-namespace :documentation do
- desc 'Generate annoted source code'
- task :annotated do
- system "groc"
- end
-
- task :copy_src do
- sdks = Dir['sdks/*'].each do |sdk|
- sdk = File.basename sdk
- FileUtils.mkdir_p "docs/src/#{sdk}"
- FileUtils.cp_r "sdks/#{sdk}/challenges/", "docs/src/#{sdk}"
- end
- end
-
- desc 'Generate the Feature Matrix dashboard'
- task :dashboard => [:copy_src, :annotated] do
- $: << 'features'
- require 'features_helper'
- require "matrix_formatter/assets/generator"
- require "matrix_formatter/formatters/html5_report_writer"
- require 'fileutils'
-
- asset_generator_options = {
- :extra_resource_paths => ['lib/formatter/resources']
- }
- asset_generator = MatrixFormatter::Assets::Generator.new asset_generator_options
- asset_generator.generate
-
- output = File.open("docs/dashboard.html", 'w')
- options = {:view => 'angular.html.slim', :layout => 'default_layout.html.slim'}
- formatter = MatrixFormatter::Formatters::HTML5ReportWriter.new output, options
- matrix = formatter.parse_results Dir['reports/matrix*.json']
- # puts MultiJson.encode formatter.matrix
- formatter.write_report
- output.close
-
- fail "Combined results contain failures - check the reports" if formatter.has_failures?
- end
-end
-
-desc "Run the tests in parallel, split by SDK. Doesn't work on Windows, but you can use rspec_parallel to split by file instead."
-task :parallel_spec do
- tags = Dir['sdks/*'].map{|sdk| File.basename sdk}
- puts "Detected SDKs: #{tags}"
- threads = []
- Thread.main[:results] = []
- tags.each_with_index do | tag, index |
- threads << Thread.new do
- puts "Starting #{tag} on process #{index}"
- Thread.main[:results] << {
- :tag => tag,
- :success => sh("TEST_ENV_NUMBER=#{index} bundle exec rspec --options .rspec_parallel -t #{tag} features")
- }
- end
- end
- threads.each do |thread|
- thread.join
- end
-end
-
-namespace :image do
- desc 'Build a Rackspace image (using Packer)'
- task :rackspace do
- system "cd packer; packer build -var-file=../.packer-creds.json -only openstack packer.json"
- end
-end
-
-def is_windows?
- RbConfig::CONFIG['host_os'] =~ /mswin(\d+)|mingw/i
+Rubocop::RakeTask.new(:rubocop) do |task|
+ # abort rake on failure
+ task.fail_on_error = true
end