Temporary tag for this failure. Updated CI spec coming.
[rbx.git] / rakelib / spec.rake
blob491926d68dc8c7e6d5e2877b83d6faa0376ac822
1 # -*- ruby -*-
3 def spec_ruby
4   "#{RUBINIUS_BASE}/spec/ruby"
5 end
7 Rsync_options = "-avP --delete --exclude '*svn*' --exclude '*swp' --exclude '*rbc' --exclude '*.rej' --exclude '*.orig'"
9 def rsync(left, right)
10   sh "rsync #{Rsync_options} #{left} #{right}"
11 end
13 desc "Run all 'known good' specs (task alias for spec:ci)"
14 task :spec => 'spec:ci'
16 namespace :spec do
17   namespace :setup do
18     # Setup for 'Subtend' specs. No need to call this yourself.
19     task :subtend do
20       Dir["spec/subtend/**/Rakefile"].each do |rakefile|
21         sh "rake -f #{rakefile}"
22       end
23     end
24   end
26   desc "Initialize #{spec_ruby} with a rubyspec clone"
27   task :init do
28     unless is_git_dir spec_ruby
29       sh "git clone git://github.com/brixen/rubyspec.git #{spec_ruby}"
30     end
31   end
33   desc "Update rubyspec"
34   task :update => :init do
35     puts "\nUpdating rubyspec repository..."
36     Dir.chdir spec_ruby do
37       git_update
38     end
39   end
41   desc "Commit changes to rubyspec sources"
42   task :commit do
43     puts "\nCommitting changes to rubyspec sources..."
44     Dir.chdir spec_ruby do
45       sh "git commit -a"
46     end
47   end
49   desc "Push changes to the rubyspec repository"
50   task :push => :update do
51     puts "\nPushing changes to the rubyspec repository..."
52     Dir.chdir spec_ruby do
53       git_push
54     end
55   end
57   desc "Synchronize spec/frozen with a current checkout"
58   task :sync do
59     dir = ENV['DIR'] || "spec/ruby"
61     unless is_git_dir(dir)
62       raise "#{dir} isn't a rubyspec checkout. Use spec:init to get it."
63     end
65     rsync dir + "/*", "spec/frozen"
67     version = Dir.chdir(dir) { `git log --pretty=oneline -1`[0..7] }
68     sh "git add spec/frozen/"
69     sh "git commit -m 'Updated RubySpec source to #{version}.' spec/frozen"
70   end
72   desc "Switch to the rubyspec commiter URL"
73   task :committer do
74     Dir.chdir spec_ruby do
75       sh "git config remote.origin.url git@github.com:brixen/rubyspec.git"
76     end
77     puts "\nYou're now accessing rubyspec via the committer URL."
78   end
80   desc "Switch to the rubyspec anonymous URL"
81   task :anon do
82     Dir.chdir spec_ruby do
83       sh "git config remote.origin.url git://github.com/brixen/rubyspec.git"
84     end
85     puts "\nYou're now accessing rubyspec via the anonymous URL."
86   end
88   desc "Run all rubyspecs under MatzRuby"
89   task :check do
90     sh "bin/mspec -t ruby #{spec_ruby}"
91   end
93   desc "Run continuous integration examples"
94   task :ci => :build do
95     clear_compiler
96     sh "bin/mspec ci -t #{spec_target}"
97   end
99   desc "Run continuous integration examples including stdlib"
100   task :full => :build do
101     clear_compiler
102     sh "bin/mspec ci -t #{spec_target} -B full.mspec"
103   end
105   desc "Run continuous integration examples including stdlib on multiple processors"
106   task :multi => :build do
107     clear_compiler
108     sh "bin/mspec ci -j -t #{spec_target} -B full.mspec"
109   end
111   spec_targets = %w(compiler core language library parser rubinius)
112   # Build a spec:<task_name> for each group of Rubinius specs
113   spec_targets.each do |group|
114     desc "Run #{group} examples"
115     task group do
116       sh "bin/mspec spec/#{group}"
117     end
118   end
120   desc "Run subtend (Rubinius C API) examples"
121   task :subtend => "spec:setup:subtend" do
122     sh "bin/mspec spec/rubinius/subtend"
123   end
125   # Specdiffs to make it easier to see what your changes have affected :)
126   desc 'Run specs and produce a diff against current base'
127   task :diff => 'diff:run'
129   namespace :diff do
130     desc 'Run specs and produce a diff against current base'
131     task :run do
132       system 'bin/mspec -f ci -o spec/reports/specdiff.txt spec'
133       system 'diff -u spec/reports/base.txt spec/reports/specdiff.txt'
134       system 'rm spec/reports/specdiff.txt'
135     end
137     desc 'Replace the base spec file with a new one'
138     task :replace do
139       system 'bin/mspec -f ci -o spec/reports/base.txt spec'
140     end
141   end
143   desc "Run the rspec specs for mspec"
144   task :mspec do
145     # Use the rspec spec runner (see mspec/README; gem install rspec)
146     sh 'spec ./mspec/spec'
147   end
149   task :r2r do
150     puts ARGV.inspect
151   end