ZenTest 4.11.2 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,26 +0,0 @@
1
- module Autotest::AutoUpdate
2
- @@sleep_time, @@update_cmd, @@updater = 60, "svn up", nil
3
-
4
- def self.sleep_time= o
5
- @@sleep_time = o
6
- end
7
-
8
- def self.update_cmd= o
9
- @@update_cmd = o
10
- end
11
-
12
- Autotest.add_hook :run_command do |at|
13
- @@updater.kill if @@updater
14
- end
15
-
16
- Autotest.add_hook :ran_command do |at|
17
- @@updater = Thread.start do
18
- loop do
19
- puts "# Waiting for #{@@sleep_time} seconds before updating"
20
- sleep @@sleep_time
21
- puts "# Running #{@@update_cmd}"
22
- system @@update_cmd
23
- end
24
- end
25
- end
26
- end
@@ -1,10 +0,0 @@
1
- ##
2
- # Prefix all test runs with `bundle exec` so the runs use the bundled
3
- # environment.
4
-
5
- module Autotest::Bundler
6
- Autotest.add_hook :initialize do |at|
7
- at.prefix = "bundle exec "
8
- false
9
- end
10
- end
@@ -1,19 +0,0 @@
1
- ##
2
- # Run autotest with isolate support.
3
-
4
- module Autotest::Isolate
5
- @@dir = "tmp/isolate/#{Gem.ruby_engine}-#{RbConfig::CONFIG['ruby_version']}"
6
-
7
- def self.dir= o
8
- @@dir = o
9
- end
10
-
11
- Autotest.add_hook :initialize do |at|
12
- ENV["GEM_HOME"] = @@dir
13
- ENV["GEM_PATH"] = @@dir
14
- ENV["PATH"] += ":#{@@dir}/bin"
15
-
16
- Gem.clear_paths
17
- false
18
- end
19
- end
@@ -1,9 +0,0 @@
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
-
@@ -1,56 +0,0 @@
1
- module Autotest::Preload
2
- def self.glob
3
- @glob
4
- end
5
-
6
- def self.glob= o
7
- @glob = o
8
- end
9
-
10
- self.glob = "test/test_helper.rb"
11
-
12
- Autotest.add_hook :post_initialize do |at, *args|
13
- at.add_sigquit_handler
14
-
15
- warn "pre-loading initializers"
16
- t0 = Time.now
17
- Dir[self.glob].each do |path|
18
- require path
19
- end
20
- warn "done pre-loading initializers in %.2f seconds" % [Time.now - t0]
21
-
22
- false
23
- end
24
- end
25
-
26
- class Autotest
27
- alias :old_run_tests :run_tests
28
-
29
- def run_tests
30
- hook :run_command
31
-
32
- new_mtime = self.find_files_to_test
33
- return unless new_mtime
34
- self.last_mtime = new_mtime
35
-
36
- begin
37
- # TODO: deal with unit_diff and partial test runs later
38
- original_argv = ARGV.dup
39
- ARGV.clear
40
-
41
- @child = fork do
42
- trap "QUIT", "DEFAULT"
43
- trap "INT", "DEFAULT"
44
- files_to_test.keys.each do |file|
45
- load file
46
- end
47
- end
48
- Process.wait
49
- ensure
50
- @child = nil
51
- ARGV.replace original_argv
52
- end
53
-
54
- hook :ran_command
55
- end
56
- end
@@ -1,27 +0,0 @@
1
- module Autotest::RCov
2
- @@command, @@options = "rcov", nil
3
-
4
- def self.command= o
5
- @@command = o
6
- end
7
-
8
- def self.pattern= o
9
- warn "RCov.pattern= no longer has any functionality. please remove."
10
- end
11
-
12
- def self.options= o
13
- @@options = o
14
- end
15
-
16
- Autotest.add_hook :all_good do |at|
17
- options = @@options ? "RCOVOPTS=\"#{@@options}\"" : ""
18
- system "rake #{@@command} #{options}"
19
- false
20
- end
21
-
22
- Autotest.add_hook :initialize do |at|
23
- at.add_exception 'coverage'
24
- at.add_exception 'coverage.info'
25
- false
26
- end
27
- end
@@ -1,16 +0,0 @@
1
- module Autotest::Restart
2
- Autotest.add_hook :initialize do |at|
3
- configs = [File.expand_path('~/.autotest'), './.autotest'].select { |f|
4
- File.exist? f
5
- }
6
- at.extra_files.concat configs
7
- false
8
- end
9
-
10
- Autotest.add_hook :updated do |at, found|
11
- unless found.flatten.grep(/\.autotest$/).empty? then
12
- warn "Detected change to .autotest, restarting"
13
- at.restart
14
- end
15
- end
16
- end
@@ -1,9 +0,0 @@
1
- # -*- ruby -*-
2
-
3
- module Autotest::Timestamp
4
- Autotest.add_hook :ran_command do
5
- puts
6
- puts "# Finished at #{Time.now.strftime "%Y-%m-%d %H:%M:%S"}"
7
- puts
8
- end
9
- end
@@ -1,413 +0,0 @@
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, help = show this help.
12
- # build = build and install everything. used internally.
13
- # clean = clean scm build dirs and remove non-scm build dirs.
14
- # list = print installed versions.
15
- # rm:$version = remove a particular version.
16
- # rubygems:merge = symlink all rubygem dirs to one dir.
17
- # tags = list all tags from svn.
18
- # update = update svn builds.
19
- # update:rubygems = update rubygems and nuke install dirs.
20
- #
21
- # specs:
22
- #
23
- # the_usual = alias for latest versions from tar + rubygems
24
- # mri:svn:current = alias for mri:svn:releases and mri:svn:branches.
25
- # mri:svn:releases = alias for supported releases of mri ruby.
26
- # mri:svn:branches = alias for active branches of mri ruby.
27
- # mri:svn:branch:$branch = install a specific $branch of mri from svn.
28
- # mri:svn:tag:$tag = install a specific $tag of mri from svn.
29
- # mri:tar:$version = install a specific $version of mri from tarball.
30
- #
31
- # environment variables:
32
- #
33
- # GEM_URL = url for rubygems tarballs
34
- # MRI_SVN = url for MRI SVN
35
- # RUBY_URL = url for MRI tarballs
36
- # VERSIONS = what versions to install
37
- #
38
- # RUBYOPT is cleared on installs.
39
- #
40
- # NOTES:
41
- #
42
- # * you can add a symlink to your rubinius build into ~/.multiruby/install
43
- # * I need patches/maintainers for other implementations.
44
- #
45
- module Multiruby
46
- def self.env name, fallback; ENV[name] || fallback; end # :nodoc:
47
-
48
- TAGS = %w( 1_8_7 1_9_1 1_9_2)
49
- BRANCHES = %w(1_8 1_8_7 1_9 trunk)
50
-
51
- VERSIONS = env('VERSIONS', TAGS.join(":").gsub(/_/, '.')).split(/:/)
52
- MRI_SVN = env 'MRI_SVN', 'http://svn.ruby-lang.org/repos/ruby'
53
- RUBY_URL = env 'RUBY_URL', 'http://ftp.ruby-lang.org/pub/ruby'
54
- GEM_URL = env 'GEM_URL', 'http://files.rubyforge.vm.bytemark.co.uk/rubygems'
55
-
56
- HELP = []
57
-
58
- File.readlines(__FILE__).each do |line|
59
- next unless line =~ /^#( |$)/
60
- HELP << line.sub(/^# ?/, '')
61
- end
62
-
63
- def self.build_and_install
64
- ENV.delete 'RUBYOPT'
65
-
66
- root_dir = self.root_dir
67
- versions = []
68
-
69
- Dir.chdir root_dir do
70
- self.setup_dirs
71
-
72
- rubygems = Dir["versions/rubygems*.tgz"]
73
- abort "You should delete all but one rubygem tarball" if rubygems.size > 1
74
- rubygem_tarball = File.expand_path rubygems.last rescue nil
75
-
76
- Dir.chdir "build" do
77
- Dir["../versions/*"].sort.each do |tarball|
78
- next if tarball =~ /rubygems/
79
-
80
- build_dir = File.basename tarball, ".tar.gz"
81
- version = build_dir.sub(/^ruby-?/, '')
82
- inst_dir = "#{root_dir}/install/#{version}"
83
-
84
- unless test ?d, inst_dir then
85
- unless test ?d, build_dir then
86
- if test ?d, tarball then
87
- dir = File.basename tarball
88
- FileUtils.ln_sf "../versions/#{dir}", "../build/#{dir}"
89
- else
90
- puts "creating #{inst_dir}"
91
- Dir.mkdir inst_dir
92
- run "tar zxf #{tarball}"
93
- end
94
- end
95
- Dir.chdir build_dir do
96
- puts "building and installing #{version}"
97
- if test ?f, "configure.in" then
98
- gnu_utils_build inst_dir
99
- elsif test ?f, "Rakefile" then
100
- rake_build inst_dir
101
- else
102
- raise "dunno how to build"
103
- end
104
-
105
- if rubygem_tarball and version !~ /1[._-]9|mri_trunk|rubinius/ then
106
- rubygems = File.basename rubygem_tarball, ".tgz"
107
- run "tar zxf #{rubygem_tarball}" unless test ?d, rubygems
108
-
109
- Dir.chdir rubygems do
110
- run "../ruby ./setup.rb --no-rdoc --no-ri", "../log.rubygems"
111
- end
112
- end
113
- end
114
- end
115
- end
116
- end
117
-
118
- versions = Dir["install/*"].map { |path| File.basename path }
119
- end
120
-
121
- versions
122
- end
123
-
124
- def self.clean
125
- self.each_scm_build_dir do |style|
126
- case style
127
- when :svn then
128
- if File.exist? "Rakefile" then
129
- run "rake clean"
130
- elsif File.exist? "Makefile" then
131
- run "make clean"
132
- end
133
- else
134
- FileUtils.rm_rf Dir.pwd
135
- end
136
- end
137
- end
138
-
139
- def self.each_scm_build_dir
140
- Multiruby.in_build_dir do
141
- Dir["*"].each do |dir|
142
- next unless File.directory? dir
143
- Dir.chdir dir do
144
- if File.exist?(".svn") then
145
- yield :svn
146
- else
147
- yield :none
148
- end
149
- end
150
- end
151
- end
152
- end
153
-
154
- def self.matching_versions url, matching=nil
155
- file = URI.parse(url).read
156
-
157
- map = {
158
- "preview" => "beta",
159
- "rc" => "beta2",
160
- "p" => "release",
161
- "tar" => "aargh",
162
- "gz" => "aargh",
163
- }
164
-
165
- versions = file.scan(/href="(ruby.*tar.gz)"/).flatten.sort_by { |s|
166
- s.scan(/\d+|[a-z]+/).map { |a| Integer(a) rescue map[a] || a }
167
- }
168
-
169
- versions = versions.grep(/#{Regexp.escape(matching)}/) if matching
170
-
171
- versions
172
- end
173
-
174
- def self.fetch_tar v
175
- in_versions_dir do
176
- warn " Determining latest version for #{v}"
177
- ver = v[/\d+\.\d+/]
178
- base = matching_versions("#{RUBY_URL}/#{ver}/", v).last
179
- abort "Could not determine release for #{v}" unless base
180
- url = File.join RUBY_URL, ver, base
181
- unless File.file? base then
182
- warn " Fetching #{base} via HTTP... this might take a while."
183
- open(url) do |f|
184
- File.open base, 'w' do |out|
185
- out.write f.read
186
- end
187
- end
188
- end
189
- end
190
- end
191
-
192
- def self.gnu_utils_build inst_dir
193
- run "autoconf" unless test ?f, "configure"
194
- run "./configure --enable-shared --prefix #{inst_dir}", "log.configure" unless
195
- test ?f, "Makefile"
196
- run "(nice make -j4 main; nice make main)", "log.build"
197
- run "make install-nodoc", "log.install"
198
- end
199
-
200
- def self.help
201
- puts HELP.join
202
- end
203
-
204
- def self.in_build_dir
205
- in_root_dir "build" do
206
- yield
207
- end
208
- end
209
-
210
- def self.in_install_dir
211
- in_root_dir "install" do
212
- yield
213
- end
214
- end
215
-
216
- def self.in_root_dir subdir = ""
217
- Dir.chdir File.join(self.root_dir, subdir) do
218
- yield
219
- end
220
- end
221
-
222
- def self.in_tmp_dir
223
- in_root_dir "tmp" do
224
- yield
225
- end
226
- end
227
-
228
- def self.in_versions_dir
229
- in_root_dir "versions" do
230
- yield
231
- end
232
- end
233
-
234
- def self.list
235
- puts "Known versions:"
236
- in_install_dir do
237
- Dir["*"].sort.each do |d|
238
- puts " #{d}"
239
- end
240
- end
241
- end
242
-
243
- def self.merge_rubygems
244
- in_install_dir do
245
- gems = Dir["*/lib/ruby/gems"]
246
-
247
- unless test ?d, "../gems" then
248
- FileUtils.mv gems.first, ".."
249
- end
250
-
251
- gems.each do |d|
252
- FileUtils.rm_rf d
253
- FileUtils.ln_sf "../../../../gems", d
254
- end
255
- end
256
- end
257
-
258
- def self.mri_latest_tag v
259
- Multiruby.tags.grep(/#{v}/).last
260
- end
261
-
262
- def self.rake_build inst_dir
263
- run "rake", "log.build"
264
- FileUtils.ln_sf "../build/#{File.basename Dir.pwd}", inst_dir
265
- end
266
-
267
- def self.rm name
268
- Multiruby.in_root_dir do
269
- FileUtils.rm_rf Dir["*/#{name}"]
270
- f = "versions/ruby-#{name}.tar.gz"
271
- File.unlink f if test ?f, f
272
- end
273
- end
274
-
275
- def self.root_dir
276
- root_dir = File.expand_path(ENV['MULTIRUBY'] ||
277
- File.join(ENV['HOME'], ".multiruby"))
278
-
279
- unless test ?d, root_dir then
280
- puts "creating #{root_dir}"
281
- Dir.mkdir root_dir, 0700
282
- end
283
-
284
- root_dir
285
- end
286
-
287
- def self.run base_cmd, log = nil
288
- cmd = base_cmd
289
- cmd += " > #{log} 2>&1" if log
290
- puts "Running command: #{cmd}"
291
- raise "ERROR: Command failed with exit code #{$?}" unless system cmd
292
- end
293
-
294
- def self.setup_dirs download = true
295
- %w(build install versions tmp).each do |dir|
296
- unless test ?d, dir then
297
- puts "creating #{dir}"
298
- Dir.mkdir dir
299
- if dir == "versions" && download then
300
- warn " Downloading initial ruby tarballs to ~/.multiruby/versions:"
301
- VERSIONS.each do |v|
302
- self.fetch_tar v
303
- end
304
- warn " ...done"
305
- warn " Put other ruby tarballs in ~/.multiruby/versions to use them."
306
- end
307
- end
308
- end
309
- end
310
-
311
- def self.svn_co url, dir
312
- Multiruby.in_versions_dir do
313
- Multiruby.run "svn co #{url} #{dir}" unless File.directory? dir
314
- FileUtils.ln_sf "../versions/#{dir}", "../build/#{dir}"
315
- end
316
- end
317
-
318
- def self.tags
319
- tags = nil
320
- Multiruby.in_tmp_dir do
321
- cache = "svn.tag.cache"
322
- File.unlink cache if Time.now - File.mtime(cache) > 3600 rescue nil
323
-
324
- File.open cache, "w" do |f|
325
- f.write `svn ls #{MRI_SVN}/tags/`
326
- end unless File.exist? cache
327
-
328
- tags = File.read(cache).split(/\n/).grep(/^v/).reject {|s| s =~ /preview/}
329
- end
330
-
331
- tags = tags.sort_by { |t| t.scan(/\d+/).map { |s| s.to_i } }
332
- end
333
-
334
- def self.update
335
- # TODO:
336
- # update will look at the dir name and act accordingly rel_.* will
337
- # figure out latest tag on that name and svn sw to it trunk and
338
- # others will just svn update
339
-
340
- clean = []
341
-
342
- self.each_scm_build_dir do |style|
343
- dir = File.basename(Dir.pwd)
344
- warn dir
345
-
346
- case style
347
- when :svn then
348
- case dir
349
- when /mri_\d/ then
350
- system "svn cleanup" # just in case
351
- svn_up = `svn up`
352
- in_build_dir do
353
- if svn_up =~ /^[ADUCG] / then
354
- clean << dir
355
- else
356
- warn " no update"
357
- end
358
- FileUtils.ln_sf "../build/#{dir}", "../versions/#{dir}"
359
- end
360
- when /mri_rel_(.+)/ then
361
- ver = $1
362
- url = `svn info`[/^URL: (.*)/, 1]
363
- latest = self.mri_latest_tag(ver).chomp('/')
364
- new_url = File.join(File.dirname(url), latest)
365
- if new_url != url then
366
- run "svn sw #{new_url}"
367
- clean << dir
368
- else
369
- warn " no update"
370
- end
371
- else
372
- warn " update in this svn dir not supported yet: #{dir}"
373
- end
374
- else
375
- warn " update in non-svn dir not supported yet: #{dir}"
376
- end
377
- end
378
-
379
- in_install_dir do
380
- clean.each do |dir|
381
- warn "removing install/#{dir}"
382
- FileUtils.rm_rf dir
383
- end
384
- end
385
- end
386
-
387
- def self.update_rubygems
388
- warn " Determining latest version for rubygems"
389
- html = URI.parse(GEM_URL).read
390
-
391
- versions = html.scan(/href="rubygems-update-(\d+(?:\.\d+)+).gem/i).flatten
392
- latest = versions.sort_by { |v| v.scan(/\d+/).map { |s| s.to_i } }.last
393
-
394
- Multiruby.in_versions_dir do
395
- file = "rubygems-#{latest}.tgz"
396
- unless File.file? file then
397
- warn " Fetching rubygems-#{latest}.tgz via HTTP."
398
- File.unlink(*Dir["rubygems*"])
399
- File.open file, 'w' do |f|
400
- f.write URI.parse(GEM_URL+"/"+file).read
401
- end
402
- end
403
- end
404
-
405
- Multiruby.in_build_dir do
406
- FileUtils.rm_rf Dir["rubygems*"]
407
- end
408
-
409
- Multiruby.in_install_dir do
410
- FileUtils.rm_rf Dir["*"]
411
- end
412
- end
413
- end