Fixed commit msg for [m]spec:sync tasks.
[rbx.git] / rakelib / spec.rake
blobd4540bc6fde1f3cb4c6ada3967e38dfe9da0d575
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(ENV['DIR']) { `git log --pretty=oneline -1`[0..7] }
68     sh "git commit -m 'Updated RubySpec source to #{version}.' spec/frozen"
69   end
71   desc "Switch to the rubyspec commiter URL"
72   task :committer do
73     Dir.chdir spec_ruby do
74       sh "git config remote.origin.url git@github.com:brixen/rubyspec.git"
75     end
76     puts "\nYou're now accessing rubyspec via the committer URL."
77   end
79   desc "Switch to the rubyspec anonymous URL"
80   task :anon do
81     Dir.chdir spec_ruby do
82       sh "git config remote.origin.url git://github.com/brixen/rubyspec.git"
83     end
84     puts "\nYou're now accessing rubyspec via the anonymous URL."
85   end
87   desc "Run all rubyspecs under MatzRuby"
88   task :check do
89     sh "bin/mspec -t ruby #{spec_ruby}"
90   end
92   desc "Run continuous integration examples"
93   task :ci => :build do
94     clear_compiler
95     sh "bin/mspec ci -t #{spec_target}"
96   end
98   desc "Run continuous integration examples including stdlib"
99   task :full => :build do
100     clear_compiler
101     sh "bin/mspec ci -t #{spec_target} -B full.mspec"
102   end
104   desc "Run continuous integration examples including stdlib on multiple processors"
105   task :multi => :build do
106     clear_compiler
107     sh "bin/mspec ci -j -t #{spec_target} -B full.mspec"
108   end
110   spec_targets = %w(compiler core language library parser rubinius)
111   # Build a spec:<task_name> for each group of Rubinius specs
112   spec_targets.each do |group|
113     desc "Run #{group} examples"
114     task group do
115       sh "bin/mspec spec/#{group}"
116     end
117   end
119   desc "Run subtend (Rubinius C API) examples"
120   task :subtend => "spec:setup:subtend" do
121     sh "bin/mspec spec/rubinius/subtend"
122   end
124   # Specdiffs to make it easier to see what your changes have affected :)
125   desc 'Run specs and produce a diff against current base'
126   task :diff => 'diff:run'
128   namespace :diff do
129     desc 'Run specs and produce a diff against current base'
130     task :run do
131       system 'bin/mspec -f ci -o spec/reports/specdiff.txt spec'
132       system 'diff -u spec/reports/base.txt spec/reports/specdiff.txt'
133       system 'rm spec/reports/specdiff.txt'
134     end
136     desc 'Replace the base spec file with a new one'
137     task :replace do
138       system 'bin/mspec -f ci -o spec/reports/base.txt spec'
139     end
140   end
142   desc "Run the rspec specs for mspec"
143   task :mspec do
144     # Use the rspec spec runner (see mspec/README; gem install rspec)
145     sh 'spec ./mspec/spec'
146   end
148   task :r2r do
149     puts ARGV.inspect
150   end