ZenTest 3.9.3 → 3.10.0

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,20 @@
1
+ === 3.10.0 / 2008-06-17
2
+
3
+ * 1 major enhancement:
4
+
5
+ * Added multiruby_setup to help manage multiruby installed versions.
6
+
7
+ * 3 minor enhancements:
8
+
9
+ * Added autotest/once plugin to help plugin developers.
10
+ * Heavily refactored multiruby.
11
+ * Switched rubinius from shotgun/rubinius to bin/rbx, finally.
12
+
13
+ * 2 bug fixes:
14
+
15
+ * Refactored zentest_mapping test to avoid zentest altogether.
16
+ * zentest tests bail gracefully for rubinius.
17
+
1
18
  === 3.9.3 / 2008-06-09
2
19
 
3
20
  * 12 minor enhancements:
data/Manifest.txt CHANGED
@@ -7,6 +7,7 @@ articles/getting_started_with_autotest.html
7
7
  articles/how_to_use_zentest.txt
8
8
  bin/autotest
9
9
  bin/multiruby
10
+ bin/multiruby_setup
10
11
  bin/rails_test_audit
11
12
  bin/unit_diff
12
13
  bin/zentest
@@ -30,6 +31,7 @@ lib/autotest/kdenotify.rb
30
31
  lib/autotest/menu.rb
31
32
  lib/autotest/migrate.rb
32
33
  lib/autotest/notify.rb
34
+ lib/autotest/once.rb
33
35
  lib/autotest/pretty.rb
34
36
  lib/autotest/rails.rb
35
37
  lib/autotest/rcov.rb
@@ -39,6 +41,7 @@ lib/autotest/shame.rb
39
41
  lib/autotest/snarl.rb
40
42
  lib/autotest/timestamp.rb
41
43
  lib/functional_test_matrix.rb
44
+ lib/multiruby.rb
42
45
  lib/test/rails.rb
43
46
  lib/test/rails/controller_test_case.rb
44
47
  lib/test/rails/functional_test_case.rb
data/README.txt CHANGED
@@ -21,7 +21,8 @@ development. As soon as you save a file, autotest will run the
21
21
  corresponding dependent tests.
22
22
 
23
23
  multiruby runs anything you want on multiple versions of ruby. Great
24
- for compatibility checking!
24
+ for compatibility checking! Use multiruby_setup to manage your
25
+ installed versions.
25
26
 
26
27
  Test::Rails helps you build industrial-strength Rails code.
27
28
 
@@ -58,6 +59,7 @@ implementation.
58
59
 
59
60
  autotest
60
61
 
62
+ multiruby_setup mri:svn:current
61
63
  multiruby ./TestMyProject.rb
62
64
 
63
65
  (and other stuff for Test::Rails)
data/bin/multiruby CHANGED
@@ -1,104 +1,9 @@
1
1
  #!/usr/bin/env ruby -w
2
2
 
3
- require 'fileutils'
4
-
5
- def run(cmd)
6
- puts "Running command: #{cmd}"
7
- raise "ERROR: Command failed with exit code #{$?}" unless system cmd
8
- end
9
-
10
- def extract_latest_version url
11
- file = URI.parse(url).read
12
- versions = file.scan(/href="(ruby.*tar.gz)"/).flatten.reject { |s|
13
- s =~ /preview/
14
- }.sort_by { |s|
15
- s.split(/\D+/).map { |i| i.to_i }
16
- }.flatten.last
17
- end
18
-
19
- root_dir = File.expand_path(ENV['MULTIRUBY'] ||
20
- File.join(ENV['HOME'], ".multiruby"))
21
-
22
- unless test ?d, root_dir then
23
- puts "creating #{root_dir}"
24
- Dir.mkdir root_dir, 0700
25
- end
26
-
27
- versions = []
28
- Dir.chdir root_dir do
29
- %w(build install versions).each do |dir|
30
- unless test ?d, dir then
31
- puts "creating #{dir}"
32
- Dir.mkdir dir
33
- if dir == "versions" then
34
- warn " Downloading initial ruby tarballs to ~/.multiruby/versions:"
35
- Dir.chdir dir do
36
- require 'open-uri'
37
- base_url = "http://ftp.ruby-lang.org/pub/ruby"
38
-
39
- %w(1.8 1.9).each do |v|
40
- warn " Determining latest version for #{v}"
41
- base = extract_latest_version("#{base_url}/#{v}/")
42
- url = File.join base_url, v, base
43
- warn " Fetching #{base} via HTTP... this might take a while."
44
- open(url) do |f|
45
- File.open base, 'w' do |out|
46
- out.write f.read
47
- end
48
- end
49
- end
50
- end
51
- warn " ...done"
52
- warn " Put other ruby tarballs in ~/.multiruby/versions to use them."
53
- end
54
- end
55
- end
56
-
57
- tarballs = Dir["versions/rubygems*.tgz"]
58
- raise "You should delete all but one rubygem tarball" if tarballs.size > 1
59
- rubygem_tarball = File.expand_path tarballs.last rescue nil
60
-
61
- Dir.chdir "build" do
62
- Dir["../versions/ruby*.tar.gz"].each do |tarball|
63
- next if tarball =~ /rubygems/
64
- build_dir = File.basename tarball, ".tar.gz"
65
- version = build_dir.sub(/^ruby-?/, '')
66
- versions << version
67
- inst_dir = "#{root_dir}/install/#{version}"
68
- unless test ?d, inst_dir then
69
- unless test ?d, build_dir then
70
- puts "creating #{inst_dir}"
71
- Dir.mkdir inst_dir
72
- run "tar zxf #{tarball}"
73
- end
74
- Dir.chdir build_dir do
75
- puts "building and installing #{version}"
76
- run "autoconf" unless test ?f, "configure"
77
- FileUtils.rm_r "ext/readline" if test ?d, "ext/readline"
78
- run "./configure --prefix #{inst_dir} &> log.configure" unless test ?f, "Makefile"
79
- run "nice make -j4 &> log.build"
80
- run "make install &> log.install"
81
- build_dir = Dir.pwd
82
-
83
- if rubygem_tarball and version !~ /1[._-]9/ then
84
- rubygems = File.basename rubygem_tarball, ".tgz"
85
- run "tar zxf #{rubygem_tarball}" unless test ?d, rubygems
86
-
87
- Dir.chdir rubygems do
88
- run "../ruby ./setup.rb &> ../log.rubygems"
89
- end
90
- end
91
- end
92
- end
93
- end
94
- end
95
-
96
- # pick up rubinius - allows for simple symlinks to your build dir
97
- Dir.chdir('install') do
98
- versions.push(*Dir["rubinius*"])
99
- end
100
- end
3
+ require 'multiruby'
101
4
 
5
+ root_dir = Multiruby.root_dir
6
+ versions = Multiruby.build_and_install
102
7
  versions = ENV['VERSIONS'].split(/:/) if ENV.has_key? 'VERSIONS'
103
8
 
104
9
  if ENV.has_key? 'EXCLUDED_VERSIONS' then
@@ -109,7 +14,8 @@ end
109
14
  results = {}
110
15
  versions.each do |version|
111
16
  ruby = "#{root_dir}/install/#{version}/bin/ruby"
112
- ruby.sub!(/bin.ruby/, 'shotgun/rubinius') if version =~ /rubinius/
17
+
18
+ ruby.sub!(/bin.ruby/, 'bin/rbx') if version =~ /rubinius/
113
19
 
114
20
  puts
115
21
  puts "VERSION = #{version}"
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ require 'multiruby'
4
+
5
+ ARGV << "help" if ARGV.empty?
6
+
7
+ ARGV.each do |spec|
8
+ case spec
9
+ when "-h", "help" then
10
+ Multiruby.help
11
+ when "list" then
12
+ Multiruby.list
13
+ when /rm:(.*)/ then
14
+ Multiruby.rm $1
15
+ when "clean" then
16
+ Multiruby.clean
17
+ when "update" then
18
+ Multiruby.update
19
+ when "update:rubygems" then
20
+ Multiruby.update_rubygems
21
+ when "mri:svn:current" then
22
+ ARGV << "mri:svn:releases" << "mri:svn:branches"
23
+ when "mri:svn:releases" then
24
+ Multiruby::TAGS.each do |v|
25
+ ARGV << "mri:svn:#{v}"
26
+ end
27
+ when "mri:svn:branches" then
28
+ Multiruby::BRANCHES.each do |v|
29
+ ARGV << "mri:svn:#{v}"
30
+ end
31
+ when /mri:svn:branch:(.*)/ then
32
+ ver = $1
33
+ ver = "branches/ruby_#{ver}" unless ver == "trunk"
34
+
35
+ Multiruby.svn_co "#{Multiruby::MRI_SVN}/#{ver}", "mri_#{ver}"
36
+ when /mri:svn:tag:(.*)/ then
37
+ ver = $1
38
+ latest = Multiruby.tags.grep(/#{ver}/).last
39
+
40
+ Multiruby.svn_co "#{Multiruby::MRI_SVN}/tags/#{latest}", "mri_rel_#{ver}"
41
+ when /mri:tar:(.*)/ then
42
+ v = $1
43
+ Multiruby.fetch_tar v
44
+ else
45
+ warn "unknown spec #{spec}"
46
+ end
47
+ end
48
+
49
+ Multiruby.build_and_install
@@ -0,0 +1,9 @@
1
+ ##
2
+ # this is for autotest plugin developers only...
3
+
4
+ module Autotest::Once
5
+ Autotest.add_hook :ran_command do |at|
6
+ exit 0
7
+ end
8
+ end
9
+
data/lib/multiruby.rb ADDED
@@ -0,0 +1,303 @@
1
+ require 'fileutils'
2
+ require 'open-uri'
3
+
4
+ ##
5
+ # multiruby_setup is a script to help you manage multiruby.
6
+ #
7
+ # usage: multiruby_setup [-h|cmd|spec...]
8
+ #
9
+ # cmds:
10
+ #
11
+ # h, help - show this help.
12
+ # list - print installed versions.
13
+ # update - update svn builds.
14
+ # update:rubygems - update rubygems and nuke install dirs.
15
+ # rm:$version - remove a particular version.
16
+ # clean - clean scm build dirs and remove non-scm build dirs.
17
+ #
18
+ # specs:
19
+ #
20
+ # mri:svn:current - alias for mri:svn:releases and mri:svn:branches.
21
+ # mri:svn:releases - alias for supported releases of mri ruby.
22
+ # mri:svn:branches - alias for active branches of mri ruby.
23
+ # mri:svn:branch:$branch - install a specific $branch of mri from svn.
24
+ # mri:svn:tag:$tag - install a specific $tag of mri from svn.
25
+ # mri:tar:$version - install a specific $version of mri from tarball.
26
+ #
27
+ # NOTES:
28
+ #
29
+ # * you can add a symlink to your rubinius build into ~/.multiruby/install
30
+ # * I'll get to adding support for other implementations soon.
31
+ #
32
+ module Multiruby
33
+ MRI_SVN = "http://svn.ruby-lang.org/repos/ruby"
34
+ TAGS = %w( 1_8_6 1_8_7 1_9 ).map { |v| "tag:#{v}" }
35
+ BRANCHES = %w(1_8 1_8_6 1_8_7 trunk).map { |v| "branch:#{v}" }
36
+
37
+ def self.build_and_install
38
+ root_dir = self.root_dir
39
+ versions = []
40
+
41
+ Dir.chdir root_dir do
42
+ self.setup_dirs
43
+
44
+ rubygems = Dir["versions/rubygems*.tgz"]
45
+ abort "You should delete all but one rubygem tarball" if rubygems.size > 1
46
+ rubygem_tarball = File.expand_path rubygems.last rescue nil
47
+
48
+ Dir.chdir "build" do
49
+ Dir["../versions/*"].each do |tarball|
50
+ next if tarball =~ /rubygems/
51
+
52
+ build_dir = File.basename tarball, ".tar.gz"
53
+ version = build_dir.sub(/^ruby-?/, '')
54
+ versions << version
55
+ inst_dir = "#{root_dir}/install/#{version}"
56
+
57
+ unless test ?d, inst_dir then
58
+ unless test ?d, build_dir then
59
+ puts "creating #{inst_dir}"
60
+ Dir.mkdir inst_dir
61
+ run "tar zxf #{tarball}"
62
+ end
63
+ Dir.chdir build_dir do
64
+ puts "building and installing #{version}"
65
+ run "autoconf" unless test ?f, "configure"
66
+ FileUtils.rm_r "ext/readline" if test ?d, "ext/readline"
67
+ run "./configure --prefix #{inst_dir} &> log.configure" unless test ?f, "Makefile"
68
+ run "nice make -j4 &> log.build"
69
+ run "make install &> log.install"
70
+ build_dir = Dir.pwd
71
+
72
+ if rubygem_tarball and version !~ /1[._-]9|trunk/ then
73
+ rubygems = File.basename rubygem_tarball, ".tgz"
74
+ run "tar zxf #{rubygem_tarball}" unless test ?d, rubygems
75
+
76
+ Dir.chdir rubygems do
77
+ run "../ruby ./setup.rb --no-rdoc --no-ri &> ../log.rubygems"
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ # pick up rubinius - allows for simple symlinks to your build dir
86
+ self.in_install_dir do
87
+ versions.push(*Dir["rubinius*"])
88
+ end
89
+ end
90
+
91
+ versions
92
+ end
93
+
94
+ def self.clean
95
+ self.each_scm_build_dir do |style|
96
+ case style
97
+ when :svn, :git then
98
+ if File.exist? "Makefile" then
99
+ system "make clean"
100
+ elsif File.exist? "Rakefile" then
101
+ system "rake clean"
102
+ end
103
+ else
104
+ FileUtils.rm_rf Dir.pwd
105
+ end
106
+ end
107
+ end
108
+
109
+ def self.each_scm_build_dir
110
+ Multiruby.in_build_dir do
111
+ Dir["*"].each do |dir|
112
+ next unless File.directory? dir
113
+ Dir.chdir dir do
114
+ if File.exist?(".svn") || File.exist?(".git") then
115
+ scm = File.exist?(".svn") ? :svn : :git
116
+ yield scm
117
+ else
118
+ yield :none
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
124
+
125
+ def self.extract_latest_version url
126
+ file = URI.parse(url).read
127
+ versions = file.scan(/href="(ruby.*tar.gz)"/).flatten.reject { |s|
128
+ s =~ /preview/
129
+ }.sort_by { |s|
130
+ s.split(/\D+/).map { |i| i.to_i }
131
+ }.flatten.last
132
+ end
133
+
134
+ def self.fetch_tar v
135
+ require 'open-uri'
136
+ base_url = "http://ftp.ruby-lang.org/pub/ruby"
137
+
138
+ in_versions_dir do
139
+ warn " Determining latest version for #{v}"
140
+ base = extract_latest_version("#{base_url}/#{v}/")
141
+ url = File.join base_url, v, base
142
+ warn " Fetching #{base} via HTTP... this might take a while."
143
+ open(url) do |f|
144
+ File.open base, 'w' do |out|
145
+ out.write f.read
146
+ end
147
+ end
148
+ end
149
+ end
150
+
151
+ def self.help
152
+ File.readlines(__FILE__).each do |line|
153
+ next unless line =~ /^#( |$)/
154
+ puts line.sub(/^# ?/, '')
155
+ end
156
+ end
157
+
158
+ def self.in_build_dir
159
+ Dir.chdir File.join(self.root_dir, "build") do
160
+ yield
161
+ end
162
+ end
163
+
164
+ def self.in_install_dir
165
+ Dir.chdir File.join(self.root_dir, "install") do
166
+ yield
167
+ end
168
+ end
169
+
170
+ def self.in_root_dir
171
+ Dir.chdir self.root_dir do
172
+ yield
173
+ end
174
+ end
175
+
176
+ def self.in_tmp_dir
177
+ Dir.chdir File.join(self.root_dir, "tmp") do
178
+ yield
179
+ end
180
+ end
181
+
182
+ def self.in_versions_dir
183
+ Dir.chdir File.join(self.root_dir, "versions") do
184
+ yield
185
+ end
186
+ end
187
+
188
+ def self.list
189
+ puts "Known versions:"
190
+ in_install_dir do
191
+ Dir["*"].sort.each do |d|
192
+ puts " #{d}"
193
+ end
194
+ end
195
+ end
196
+
197
+ def self.rm name
198
+ Multiruby.in_root_dir do
199
+ FileUtils.rm_rf Dir["*/#{name}"]
200
+ File.unlink "versions/ruby-#{name}.tar.gz"
201
+ end
202
+ end
203
+
204
+ def self.root_dir
205
+ root_dir = File.expand_path(ENV['MULTIRUBY'] ||
206
+ File.join(ENV['HOME'], ".multiruby"))
207
+
208
+ unless test ?d, root_dir then
209
+ puts "creating #{root_dir}"
210
+ Dir.mkdir root_dir, 0700
211
+ end
212
+
213
+ root_dir
214
+ end
215
+
216
+ def self.run(cmd)
217
+ puts "Running command: #{cmd}"
218
+ raise "ERROR: Command failed with exit code #{$?}" unless system cmd
219
+ end
220
+
221
+ def self.setup_dirs
222
+ %w(build install versions tmp).each do |dir|
223
+ unless test ?d, dir then
224
+ puts "creating #{dir}"
225
+ Dir.mkdir dir
226
+ if dir == "versions" then
227
+ warn " Downloading initial ruby tarballs to ~/.multiruby/versions:"
228
+ %w(1.8 1.9).each do |v|
229
+ self.fetch_tar v
230
+ end
231
+ warn " ...done"
232
+ warn " Put other ruby tarballs in ~/.multiruby/versions to use them."
233
+ end
234
+ end
235
+ end
236
+ end
237
+
238
+ def self.svn_co url, dir
239
+ Multiruby.in_versions_dir do
240
+ Multiruby.run "svn co #{url} #{dir}" unless File.directory? dir
241
+ FileUtils.ln_s "../versions/#{dir}", "../build/#{dir}"
242
+ end
243
+ end
244
+
245
+ def self.tags
246
+ tags = nil
247
+ Multiruby.in_tmp_dir do
248
+ cache = "svn.tag.cache"
249
+ File.unlink cache if Time.now - File.mtime(cache) > 86400 rescue nil
250
+
251
+ File.open cache, "w" do |f|
252
+ f.write `svn ls #{MRI_SVN}/tags/`
253
+ end unless File.exist? cache
254
+
255
+ tags = File.read(cache).split(/\n/).grep(/^v/).reject {|s| s =~ /preview/}
256
+ end
257
+
258
+ tags = tags.sort_by { |s| s.scan(/\d+/).map { |s| s.to_i } }
259
+ end
260
+
261
+ def self.update
262
+ # TODO:
263
+ # update will look at the dir name and act accordingly rel_.* will
264
+ # figure out latest tag on that name and svn sw to it trunk and
265
+ # others will just svn update
266
+
267
+ self.each_scm_build_dir do |style|
268
+ case style
269
+ when :svn then
270
+ dir = File.basename(Dir.pwd)
271
+ warn dir
272
+ case dir
273
+ when /mri_\d/ then
274
+ system "svn cleanup" # just in case
275
+ FileUtils.rm_rf "../install/#{dir}" if `svn up` =~ /^[ADUCG] /
276
+ when /tag/
277
+ warn "don't know how to update tags: #{dir}"
278
+ # url = `svn info`[/^URL: (.*)/, 1]
279
+ else
280
+ warn "don't know how to update: #{dir}"
281
+ end
282
+ else
283
+ warn "update in non-svn dir not supported yet: #{dir}"
284
+ end
285
+ end
286
+ end
287
+
288
+ def self.update_rubygems
289
+ url = "http://files.rubyforge.rubyuser.de/rubygems/"
290
+ html = URI.parse(url).read
291
+
292
+ versions = html.scan(/href="rubygems-update-(\d+(?:\.\d+)+).gem/).flatten
293
+ latest = versions.sort_by { |s| s.scan(/\d+/).map { |s| s.to_i } }.last
294
+
295
+ Multiruby.in_versions_dir do
296
+ File.unlink(*Dir["rubygems*"])
297
+ file = "rubygems-#{latest}.tgz"
298
+ File.open file, 'w' do |f|
299
+ f.write URI.parse(url+file).read
300
+ end
301
+ end
302
+ end
303
+ end
data/lib/zentest.rb CHANGED
@@ -56,7 +56,7 @@ end
56
56
 
57
57
  class ZenTest
58
58
 
59
- VERSION = '3.9.3'
59
+ VERSION = '3.10.0'
60
60
 
61
61
  include ZenTestMapping
62
62
 
data/test/test_zentest.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  #!/usr/local/bin/ruby -w
2
2
 
3
+ if defined? RUBY_ENGINE then
4
+ warn "rubinius does not support features required by zentest. Skipping tests"
5
+ return
6
+ end
7
+
3
8
  require 'test/unit' unless defined? $ZENTEST and $ZENTEST
4
9
 
5
10
  $TESTING = true
@@ -2,16 +2,20 @@ require 'test/unit' unless defined? $ZENTEST and $ZENTEST
2
2
 
3
3
  $TESTING = true
4
4
 
5
- # I do this so I can still run ZenTest against the tests and itself...
6
- require 'zentest' unless defined? $ZENTEST
5
+ require 'zentest_mapping' unless defined? $ZENTEST
6
+
7
+ class Dummy
8
+ attr_accessor :inherited_methods
9
+ include ZenTestMapping
10
+ end
7
11
 
8
12
  class TestZentestMapping < Test::Unit::TestCase
9
13
  def setup
10
- @tester = ZenTest.new
14
+ @tester = Dummy.new
11
15
  end
12
16
 
13
17
  def util_simple_setup
14
- @tester.klasses = {
18
+ klasses = {
15
19
  "Something" =>
16
20
  {
17
21
  "method1" => true,
@@ -25,7 +29,7 @@ class TestZentestMapping < Test::Unit::TestCase
25
29
  "self.[]" => true,
26
30
  },
27
31
  }
28
- @tester.test_klasses = {
32
+ test_klasses = {
29
33
  "TestSomething" =>
30
34
  {
31
35
  "test_class_method4" => true,
@@ -35,7 +39,7 @@ class TestZentestMapping < Test::Unit::TestCase
35
39
  "test_class_index" => true,
36
40
  },
37
41
  }
38
- @tester.inherited_methods = @tester.test_klasses.merge(@tester.klasses)
42
+ @tester.inherited_methods = test_klasses.merge(klasses)
39
43
  @generated_code = "
40
44
  require 'test/unit' unless defined? $ZENTEST and $ZENTEST
41
45
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ZenTest
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.3
4
+ version: 3.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2008-06-09 00:00:00 -07:00
13
+ date: 2008-06-17 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -22,13 +22,14 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: 1.5.3
24
24
  version:
25
- description: "ZenTest provides 4 different tools and 1 library: zentest, unit_diff, autotest, multiruby, and Test::Rails. ZenTest scans your target and unit-test code and writes your missing code based on simple naming rules, enabling XP at a much quicker pace. ZenTest only works with Ruby and Test::Unit. unit_diff is a command-line filter to diff expected results from actual results and allow you to quickly see exactly what is wrong. autotest is a continous testing facility meant to be used during development. As soon as you save a file, autotest will run the corresponding dependent tests. multiruby runs anything you want on multiple versions of ruby. Great for compatibility checking! Test::Rails helps you build industrial-strength Rails code."
25
+ description: "ZenTest provides 4 different tools and 1 library: zentest, unit_diff, autotest, multiruby, and Test::Rails. ZenTest scans your target and unit-test code and writes your missing code based on simple naming rules, enabling XP at a much quicker pace. ZenTest only works with Ruby and Test::Unit. unit_diff is a command-line filter to diff expected results from actual results and allow you to quickly see exactly what is wrong. autotest is a continous testing facility meant to be used during development. As soon as you save a file, autotest will run the corresponding dependent tests. multiruby runs anything you want on multiple versions of ruby. Great for compatibility checking! Use multiruby_setup to manage your installed versions. Test::Rails helps you build industrial-strength Rails code."
26
26
  email:
27
27
  - ryand-ruby@zenspider.com
28
28
  - drbrain@segment7.net
29
29
  executables:
30
30
  - autotest
31
31
  - multiruby
32
+ - multiruby_setup
32
33
  - rails_test_audit
33
34
  - unit_diff
34
35
  - zentest
@@ -50,6 +51,7 @@ files:
50
51
  - articles/how_to_use_zentest.txt
51
52
  - bin/autotest
52
53
  - bin/multiruby
54
+ - bin/multiruby_setup
53
55
  - bin/rails_test_audit
54
56
  - bin/unit_diff
55
57
  - bin/zentest
@@ -73,6 +75,7 @@ files:
73
75
  - lib/autotest/menu.rb
74
76
  - lib/autotest/migrate.rb
75
77
  - lib/autotest/notify.rb
78
+ - lib/autotest/once.rb
76
79
  - lib/autotest/pretty.rb
77
80
  - lib/autotest/rails.rb
78
81
  - lib/autotest/rcov.rb
@@ -82,6 +85,7 @@ files:
82
85
  - lib/autotest/snarl.rb
83
86
  - lib/autotest/timestamp.rb
84
87
  - lib/functional_test_matrix.rb
88
+ - lib/multiruby.rb
85
89
  - lib/test/rails.rb
86
90
  - lib/test/rails/controller_test_case.rb
87
91
  - lib/test/rails/functional_test_case.rb