ZenTest 3.11.1 → 4.0.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.
- data/.autotest +17 -0
- data/History.txt +33 -0
- data/Manifest.txt +4 -19
- data/Rakefile +5 -0
- data/bin/multigem +4 -0
- data/bin/multiruby_setup +31 -28
- data/lib/autotest.rb +21 -17
- data/lib/autotest/emacs.rb +1 -0
- data/lib/autotest/growl.rb +1 -1
- data/lib/focus.rb +9 -0
- data/lib/multiruby.rb +62 -44
- data/lib/zentest.rb +5 -9
- data/test/test_autotest.rb +16 -5
- data/test/test_focus.rb +35 -0
- data/test/test_unit_diff.rb +4 -2
- data/test/test_zentest.rb +6 -12
- data/test/test_zentest_mapping.rb +4 -3
- metadata +9 -29
- data/bin/rails_test_audit +0 -80
- data/lib/autotest/screen.rb +0 -73
- data/lib/test/rails.rb +0 -295
- data/lib/test/rails/controller_test_case.rb +0 -382
- data/lib/test/rails/functional_test_case.rb +0 -79
- data/lib/test/rails/helper_test_case.rb +0 -64
- data/lib/test/rails/ivar_proxy.rb +0 -31
- data/lib/test/rails/pp_html_document.rb +0 -74
- data/lib/test/rails/rake_tasks.rb +0 -50
- data/lib/test/rails/render_tree.rb +0 -93
- data/lib/test/rails/test_case.rb +0 -28
- data/lib/test/rails/view_test_case.rb +0 -597
- data/lib/test/zentest_assertions.rb +0 -134
- data/test/test_help.rb +0 -36
- data/test/test_rails_autotest.rb +0 -229
- data/test/test_rails_controller_test_case.rb +0 -58
- data/test/test_rails_helper_test_case.rb +0 -48
- data/test/test_rails_view_test_case.rb +0 -275
- data/test/test_zentest_assertions.rb +0 -128
data/.autotest
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require 'autotest/restart'
|
4
|
+
|
5
|
+
Autotest.add_hook :initialize do |at|
|
6
|
+
at.order = :random
|
7
|
+
at.add_exception 'coverage'
|
8
|
+
at.add_exception 'coverage.info'
|
9
|
+
|
10
|
+
at.libs << ':../../minitest/dev/lib'
|
11
|
+
at.testlib = "minitest/autorun"
|
12
|
+
end
|
13
|
+
|
14
|
+
Autotest.add_hook :all_good do |at|
|
15
|
+
system "rake rcov_info"
|
16
|
+
end if ENV['RCOV']
|
17
|
+
|
data/History.txt
CHANGED
@@ -1,5 +1,38 @@
|
|
1
|
+
=== 4.0.0 / 2009-03-02
|
2
|
+
|
3
|
+
* 2 minor enhancements:
|
4
|
+
|
5
|
+
* Deleted autotest/screen - releasing as a separate gem soon.
|
6
|
+
* Deleted test-rails and rails_test_audit.
|
7
|
+
|
8
|
+
* 8 minor enhancements:
|
9
|
+
|
10
|
+
* Added "tags" command to multiruby_setup.
|
11
|
+
* Added "the_usual" as a recipe for multiruby_setup. Motivated by Dr. Nic.
|
12
|
+
* Added :died hook to Autotest (yoshuki).
|
13
|
+
* Added focus.rb, helping you ignore extra tests while you focus on something.
|
14
|
+
* Added multigem command line tool!
|
15
|
+
* Cleaned up multiruby to make it easier to tweak.
|
16
|
+
* Parameterized testlib so you can override test/unit in autotest. Thanks JB!
|
17
|
+
* Switched tests and rakefile to minitest. 20% faster!
|
18
|
+
|
19
|
+
* 7 bug fixes:
|
20
|
+
|
21
|
+
* Fix Autotest::Screen to distinguish between errors and failures. (khalsah)
|
22
|
+
* Fixed some hook commands from overriding others.
|
23
|
+
* Hopefully fixed growl support on 10.5.x?
|
24
|
+
* Supposedly adding -w to growlnotify will fix autotest/growl.
|
25
|
+
* Updated missing entries in Autotest::ALL_HOOKS.
|
26
|
+
* Updated rubygems download location. (carletti)
|
27
|
+
* Still not automated :(
|
28
|
+
* ruby 1.9.1 fixes.
|
29
|
+
|
1
30
|
=== 3.11.1 / 2009-01-20
|
2
31
|
|
32
|
+
* 1 minor enhancement:
|
33
|
+
|
34
|
+
* Parameterized test_lib so you can override test/unit. Thanks JB!
|
35
|
+
|
3
36
|
* 1 bug fix:
|
4
37
|
|
5
38
|
* Fixed growl autotest plugin hooks to not return true, preempting other plugins.
|
data/Manifest.txt
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
.autotest
|
1
2
|
History.txt
|
2
3
|
Manifest.txt
|
3
4
|
README.txt
|
@@ -6,9 +7,9 @@ articles/Article.css
|
|
6
7
|
articles/getting_started_with_autotest.html
|
7
8
|
articles/how_to_use_zentest.txt
|
8
9
|
bin/autotest
|
10
|
+
bin/multigem
|
9
11
|
bin/multiruby
|
10
12
|
bin/multiruby_setup
|
11
|
-
bin/rails_test_audit
|
12
13
|
bin/unit_diff
|
13
14
|
bin/zentest
|
14
15
|
example.txt
|
@@ -37,33 +38,17 @@ lib/autotest/rails.rb
|
|
37
38
|
lib/autotest/rcov.rb
|
38
39
|
lib/autotest/redgreen.rb
|
39
40
|
lib/autotest/restart.rb
|
40
|
-
lib/autotest/screen.rb
|
41
41
|
lib/autotest/shame.rb
|
42
42
|
lib/autotest/snarl.rb
|
43
43
|
lib/autotest/timestamp.rb
|
44
|
+
lib/focus.rb
|
44
45
|
lib/functional_test_matrix.rb
|
45
46
|
lib/multiruby.rb
|
46
|
-
lib/test/rails.rb
|
47
|
-
lib/test/rails/controller_test_case.rb
|
48
|
-
lib/test/rails/functional_test_case.rb
|
49
|
-
lib/test/rails/helper_test_case.rb
|
50
|
-
lib/test/rails/ivar_proxy.rb
|
51
|
-
lib/test/rails/pp_html_document.rb
|
52
|
-
lib/test/rails/rake_tasks.rb
|
53
|
-
lib/test/rails/render_tree.rb
|
54
|
-
lib/test/rails/test_case.rb
|
55
|
-
lib/test/rails/view_test_case.rb
|
56
|
-
lib/test/zentest_assertions.rb
|
57
47
|
lib/unit_diff.rb
|
58
48
|
lib/zentest.rb
|
59
49
|
lib/zentest_mapping.rb
|
60
50
|
test/test_autotest.rb
|
61
|
-
test/
|
62
|
-
test/test_rails_autotest.rb
|
63
|
-
test/test_rails_controller_test_case.rb
|
64
|
-
test/test_rails_helper_test_case.rb
|
65
|
-
test/test_rails_view_test_case.rb
|
51
|
+
test/test_focus.rb
|
66
52
|
test/test_unit_diff.rb
|
67
53
|
test/test_zentest.rb
|
68
|
-
test/test_zentest_assertions.rb
|
69
54
|
test/test_zentest_mapping.rb
|
data/Rakefile
CHANGED
@@ -4,11 +4,16 @@ $: << 'lib'
|
|
4
4
|
|
5
5
|
require 'rubygems'
|
6
6
|
require 'hoe'
|
7
|
+
|
8
|
+
Hoe.add_include_dirs("../../minitest/dev/lib")
|
9
|
+
|
7
10
|
require './lib/zentest.rb'
|
8
11
|
|
9
12
|
Hoe.new("ZenTest", ZenTest::VERSION) do |zentest|
|
10
13
|
zentest.developer('Ryan Davis', 'ryand-ruby@zenspider.com')
|
11
14
|
zentest.developer('Eric Hodel', 'drbrain@segment7.net')
|
15
|
+
|
16
|
+
zentest.testlib = :minitest
|
12
17
|
end
|
13
18
|
|
14
19
|
task :autotest do
|
data/bin/multigem
ADDED
data/bin/multiruby_setup
CHANGED
@@ -9,60 +9,63 @@ Multiruby.setup_dirs(false)
|
|
9
9
|
|
10
10
|
ARGV.each do |spec|
|
11
11
|
case spec
|
12
|
-
when "-h", "help" then
|
12
|
+
when "-h", "--help", "help" then
|
13
13
|
Multiruby.help
|
14
14
|
exit 0
|
15
|
+
when "the_usual" then # TODO: update #help
|
16
|
+
ARGV.push(*Multiruby::TAGS.map { |v| "mri:tar:#{v.gsub(/_/, '.')}" })
|
17
|
+
ARGV << "build" << "update:rubygems"
|
18
|
+
system "multigem install --no-ri --no-rdoc rake minitest ZenTest"
|
19
|
+
when "build" then
|
20
|
+
Multiruby.build_and_install
|
21
|
+
when "clean" then
|
22
|
+
Multiruby.clean
|
15
23
|
when "list" then
|
16
24
|
Multiruby.list
|
17
|
-
exit 0
|
18
|
-
when "build" then
|
19
|
-
# do nothing
|
20
25
|
when /rm:(.*)/ then
|
21
26
|
Multiruby.rm $1
|
22
|
-
when "clean" then
|
23
|
-
Multiruby.clean
|
24
|
-
exit 0
|
25
|
-
when "update" then
|
26
|
-
Multiruby.update
|
27
|
-
when "update:rubygems" then
|
28
|
-
Multiruby.update_rubygems
|
29
27
|
when "rubygems:merge" then
|
30
28
|
Multiruby.merge_rubygems
|
29
|
+
when "rubygems:update", "update:rubygems" then
|
30
|
+
Multiruby.update_rubygems
|
31
|
+
when "update" then
|
32
|
+
Multiruby.update
|
33
|
+
when "tags" then
|
34
|
+
p Multiruby.tags
|
31
35
|
when "mri:svn:current" then
|
32
|
-
ARGV << "mri:svn:releases" << "mri:svn:branches"
|
36
|
+
ARGV << "mri:svn:releases" << "mri:svn:branches" << "build"
|
33
37
|
when "mri:svn:releases" then
|
34
38
|
Multiruby::TAGS.each do |v|
|
35
39
|
latest = Multiruby.mri_latest_tag v
|
36
40
|
abort "Can't find tag #{v}" unless latest
|
37
41
|
ARGV << "mri:svn:tag:#{latest}:mri_rel_#{v}"
|
38
42
|
end
|
43
|
+
ARGV << "build"
|
44
|
+
when /mri:svn:branch:(.*)/ then
|
45
|
+
ver = "branches/ruby_#{$1}" unless ver == "trunk"
|
46
|
+
Multiruby.svn_co "#{Multiruby::MRI_SVN}/#{$1}", "mri_#{$1}"
|
47
|
+
ARGV << "build"
|
39
48
|
when "mri:svn:branches" then
|
40
49
|
Multiruby::BRANCHES.each do |v|
|
41
50
|
ARGV << "mri:svn:branch:#{v}"
|
42
51
|
end
|
43
|
-
|
44
|
-
dir = ver = $1
|
45
|
-
ver = "branches/ruby_#{ver}" unless ver == "trunk"
|
46
|
-
|
47
|
-
Multiruby.svn_co "#{Multiruby::MRI_SVN}/#{ver}", "mri_#{dir}"
|
52
|
+
ARGV << "build"
|
48
53
|
when /mri:svn:tag:(.*):(.*)/ then
|
49
|
-
|
50
|
-
|
51
|
-
Multiruby.svn_co "#{Multiruby::MRI_SVN}/tags/#{ver}", dir
|
54
|
+
Multiruby.svn_co "#{Multiruby::MRI_SVN}/tags/#{$1}", $2
|
55
|
+
ARGV << "build"
|
52
56
|
when /mri:svn:tag:(.*)/ then
|
53
|
-
|
54
|
-
|
55
|
-
ARGV << "mri:svn:tag:#{ver}:#{ver}"
|
57
|
+
ARGV << "mri:svn:tag:#{$1}:#{$1}" << "build"
|
56
58
|
when /mri:tar:(.*)/ then
|
57
|
-
|
58
|
-
|
59
|
-
when /rbx:ln:(.*)/ then
|
60
|
-
Multiruby.rbx_ln $1
|
59
|
+
Multiruby.fetch_tar $1
|
60
|
+
ARGV << "build"
|
61
61
|
when /rbx:git:current/ then
|
62
62
|
Multiruby.git_clone "#{Multiruby::RBX_GIT}/code", "rubinius"
|
63
|
+
ARGV << "build"
|
64
|
+
when /rbx:ln:(.*)/ then
|
65
|
+
Multiruby.rbx_ln $1
|
66
|
+
ARGV << "build"
|
63
67
|
else
|
64
68
|
warn "unknown spec #{spec}"
|
65
69
|
end
|
66
70
|
end
|
67
71
|
|
68
|
-
Multiruby.build_and_install
|
data/lib/autotest.rb
CHANGED
@@ -28,8 +28,7 @@ $TESTING = false unless defined? $TESTING
|
|
28
28
|
#
|
29
29
|
# Autotest.add_hook hook_name { |autotest| ... }
|
30
30
|
#
|
31
|
-
# The available hooks are
|
32
|
-
# red, green, updated, all_good, reset, interrupt, and quit.
|
31
|
+
# The available hooks are listed in +ALL_HOOKS+.
|
33
32
|
#
|
34
33
|
# See example_dot_autotest.rb for more details.
|
35
34
|
#
|
@@ -62,8 +61,8 @@ class Autotest
|
|
62
61
|
|
63
62
|
T0 = Time.at 0
|
64
63
|
|
65
|
-
ALL_HOOKS = [ :all_good, :initialize, :interrupt, :quit,
|
66
|
-
:reset, :run_command, :waiting ]
|
64
|
+
ALL_HOOKS = [ :all_good, :died, :green, :initialize, :interrupt, :quit,
|
65
|
+
:ran_command, :red, :reset, :run_command, :updated, :waiting ]
|
67
66
|
|
68
67
|
HOOKS = Hash.new { |h,k| h[k] = [] }
|
69
68
|
unless defined? WINDOZE then
|
@@ -154,6 +153,7 @@ class Autotest
|
|
154
153
|
:results,
|
155
154
|
:sleep,
|
156
155
|
:tainted,
|
156
|
+
:testlib,
|
157
157
|
:find_directories,
|
158
158
|
:unit_diff,
|
159
159
|
:wants_to_quit)
|
@@ -168,18 +168,19 @@ class Autotest
|
|
168
168
|
@test_mappings = []
|
169
169
|
|
170
170
|
self.completed_re = /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/
|
171
|
-
self.extra_class_map
|
172
|
-
self.extra_files
|
171
|
+
self.extra_class_map = {}
|
172
|
+
self.extra_files = []
|
173
173
|
self.failed_results_re = /^\s+\d+\) (?:Failure|Error):\n(.*?)\((.*?)\)/
|
174
|
-
self.files_to_test
|
175
|
-
self.find_order
|
176
|
-
self.known_files
|
177
|
-
self.libs
|
178
|
-
self.order
|
179
|
-
self.output
|
180
|
-
self.sleep
|
181
|
-
self.
|
182
|
-
self.
|
174
|
+
self.files_to_test = new_hash_of_arrays
|
175
|
+
self.find_order = []
|
176
|
+
self.known_files = nil
|
177
|
+
self.libs = %w[. lib test].join(File::PATH_SEPARATOR)
|
178
|
+
self.order = :random
|
179
|
+
self.output = $stderr
|
180
|
+
self.sleep = 1
|
181
|
+
self.testlib = "test/unit"
|
182
|
+
self.find_directories = ['.']
|
183
|
+
self.unit_diff = "unit_diff -u"
|
183
184
|
|
184
185
|
self.add_mapping(/^lib\/.*\.rb$/) do |filename, _|
|
185
186
|
possible = File.basename(filename).gsub '_', '_?'
|
@@ -221,6 +222,8 @@ class Autotest
|
|
221
222
|
end
|
222
223
|
end
|
223
224
|
hook :quit
|
225
|
+
rescue Exception
|
226
|
+
hook :died
|
224
227
|
end
|
225
228
|
|
226
229
|
##
|
@@ -429,8 +432,9 @@ class Autotest
|
|
429
432
|
full, partial = reorder(files_to_test).partition { |k,v| v.empty? }
|
430
433
|
|
431
434
|
unless full.empty? then
|
432
|
-
classes = full.map {|k,v| k}.flatten.uniq
|
433
|
-
|
435
|
+
classes = full.map {|k,v| k}.flatten.uniq
|
436
|
+
classes.unshift testlib
|
437
|
+
cmds << "#{ruby} -I#{libs} -rubygems -e \"%w[#{classes.join(' ')}].each { |f| require f }\" | #{unit_diff}"
|
434
438
|
end
|
435
439
|
|
436
440
|
partial.each do |klass, methods|
|
data/lib/autotest/emacs.rb
CHANGED
data/lib/autotest/growl.rb
CHANGED
@@ -6,7 +6,7 @@ module Autotest::Growl
|
|
6
6
|
msg += " at #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}"
|
7
7
|
# TODO: parameterize default image
|
8
8
|
img ||= "/Applications/Mail.app/Contents/Resources/Caution.tiff"
|
9
|
-
cmd = "growlnotify -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title}"
|
9
|
+
cmd = "growlnotify -w -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title}"
|
10
10
|
system cmd
|
11
11
|
nil
|
12
12
|
end
|
data/lib/focus.rb
ADDED
data/lib/multiruby.rb
CHANGED
@@ -8,37 +8,53 @@ require 'open-uri'
|
|
8
8
|
#
|
9
9
|
# cmds:
|
10
10
|
#
|
11
|
-
# h, help
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
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.
|
18
20
|
#
|
19
21
|
# specs:
|
20
22
|
#
|
21
|
-
#
|
22
|
-
# mri:svn:
|
23
|
-
# mri:svn:
|
24
|
-
# mri:svn:
|
25
|
-
# mri:svn:
|
26
|
-
# mri:
|
27
|
-
#
|
28
|
-
# rbx:
|
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
|
+
# rbx:ln:$dir = symlink your rbx $dir
|
31
|
+
# rbx:git:current = install rbx from git
|
32
|
+
#
|
33
|
+
# environment variables:
|
34
|
+
#
|
35
|
+
# GEM_URL = url for rubygems tarballs
|
36
|
+
# MRI_SVN = url for MRI SVN
|
37
|
+
# RBX_GIT = url for rubinius git
|
38
|
+
# RUBY_URL = url for MRI tarballs
|
39
|
+
# VERSIONS = what versions to install
|
29
40
|
#
|
30
41
|
# NOTES:
|
31
42
|
#
|
32
43
|
# * you can add a symlink to your rubinius build into ~/.multiruby/install
|
33
|
-
# * I
|
44
|
+
# * I need patches/maintainers for other implementations.
|
34
45
|
#
|
35
46
|
module Multiruby
|
36
|
-
|
37
|
-
RBX_GIT = "git://git.rubini.us"
|
47
|
+
def self.env name, fallback; ENV[name] || fallback; end # :nodoc:
|
38
48
|
|
39
|
-
TAGS = %w( 1_8_6 1_8_7
|
49
|
+
TAGS = %w( 1_8_6 1_8_7 1_9_1)
|
40
50
|
BRANCHES = %w(1_8 1_8_6 1_8_7 trunk)
|
41
51
|
|
52
|
+
VERSIONS = env('VERSIONS', TAGS.join(":")).split(/:/)
|
53
|
+
MRI_SVN = env 'MRI_SVN', 'http://svn.ruby-lang.org/repos/ruby'
|
54
|
+
RBX_GIT = env 'RBX_GIT', 'git://git.rubini.us'
|
55
|
+
RUBY_URL = env 'RUBY_URL', 'http://ftp.ruby-lang.org/pub/ruby'
|
56
|
+
GEM_URL = env 'GEM_URL', 'http://files.rubyforge.vm.bytemark.co.uk/rubygems'
|
57
|
+
|
42
58
|
HELP = []
|
43
59
|
|
44
60
|
File.readlines(__FILE__).each do |line|
|
@@ -138,7 +154,7 @@ module Multiruby
|
|
138
154
|
def self.extract_latest_version url, matching=nil
|
139
155
|
file = URI.parse(url).read
|
140
156
|
versions = file.scan(/href="(ruby.*tar.gz)"/).flatten.reject { |s|
|
141
|
-
s =~ /preview/
|
157
|
+
s =~ /preview|-rc\d/
|
142
158
|
}.sort_by { |s|
|
143
159
|
s.split(/\D+/).map { |i| i.to_i }
|
144
160
|
}.flatten
|
@@ -147,19 +163,18 @@ module Multiruby
|
|
147
163
|
end
|
148
164
|
|
149
165
|
def self.fetch_tar v
|
150
|
-
require 'open-uri'
|
151
|
-
base_url = "http://ftp.ruby-lang.org/pub/ruby"
|
152
|
-
|
153
166
|
in_versions_dir do
|
154
|
-
warn "
|
167
|
+
warn " Determining latest version for #{v}"
|
155
168
|
ver = v[/\d+\.\d+/]
|
156
|
-
base = extract_latest_version("#{
|
169
|
+
base = extract_latest_version("#{RUBY_URL}/#{ver}/", v)
|
157
170
|
abort "Could not determine release for #{v}" unless base
|
158
|
-
url = File.join
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
171
|
+
url = File.join RUBY_URL, ver, base
|
172
|
+
unless File.file? base then
|
173
|
+
warn " Fetching #{base} via HTTP... this might take a while."
|
174
|
+
open(url) do |f|
|
175
|
+
File.open base, 'w' do |out|
|
176
|
+
out.write f.read
|
177
|
+
end
|
163
178
|
end
|
164
179
|
end
|
165
180
|
end
|
@@ -179,11 +194,6 @@ module Multiruby
|
|
179
194
|
run "make install &> log.install"
|
180
195
|
end
|
181
196
|
|
182
|
-
def self.rake_build inst_dir
|
183
|
-
run "rake &> log.build"
|
184
|
-
FileUtils.ln_sf "../build/#{File.basename Dir.pwd}", inst_dir
|
185
|
-
end
|
186
|
-
|
187
197
|
def self.help
|
188
198
|
puts HELP.join
|
189
199
|
end
|
@@ -246,6 +256,11 @@ module Multiruby
|
|
246
256
|
Multiruby.tags.grep(/#{v}/).last
|
247
257
|
end
|
248
258
|
|
259
|
+
def self.rake_build inst_dir
|
260
|
+
run "rake &> log.build"
|
261
|
+
FileUtils.ln_sf "../build/#{File.basename Dir.pwd}", inst_dir
|
262
|
+
end
|
263
|
+
|
249
264
|
def self.rbx_ln dir
|
250
265
|
dir = File.expand_path dir
|
251
266
|
Multiruby.in_versions_dir do
|
@@ -274,19 +289,19 @@ module Multiruby
|
|
274
289
|
root_dir
|
275
290
|
end
|
276
291
|
|
277
|
-
def self.run
|
292
|
+
def self.run cmd
|
278
293
|
puts "Running command: #{cmd}"
|
279
294
|
raise "ERROR: Command failed with exit code #{$?}" unless system cmd
|
280
295
|
end
|
281
296
|
|
282
|
-
def self.setup_dirs
|
297
|
+
def self.setup_dirs download = true
|
283
298
|
%w(build install versions tmp).each do |dir|
|
284
299
|
unless test ?d, dir then
|
285
300
|
puts "creating #{dir}"
|
286
301
|
Dir.mkdir dir
|
287
302
|
if dir == "versions" && download then
|
288
303
|
warn " Downloading initial ruby tarballs to ~/.multiruby/versions:"
|
289
|
-
|
304
|
+
VERSIONS.each do |v|
|
290
305
|
self.fetch_tar v
|
291
306
|
end
|
292
307
|
warn " ...done"
|
@@ -380,17 +395,20 @@ module Multiruby
|
|
380
395
|
end
|
381
396
|
|
382
397
|
def self.update_rubygems
|
383
|
-
|
384
|
-
html = URI.parse(
|
398
|
+
warn " Determining latest version for rubygems"
|
399
|
+
html = URI.parse(GEM_URL).read
|
385
400
|
|
386
|
-
versions = html.scan(/href="rubygems-update-(\d+(?:\.\d+)+).gem/).flatten
|
401
|
+
versions = html.scan(/href="rubygems-update-(\d+(?:\.\d+)+).gem/i).flatten
|
387
402
|
latest = versions.sort_by { |s| s.scan(/\d+/).map { |s| s.to_i } }.last
|
388
403
|
|
389
404
|
Multiruby.in_versions_dir do
|
390
|
-
File.unlink(*Dir["rubygems*"])
|
391
405
|
file = "rubygems-#{latest}.tgz"
|
392
|
-
File.
|
393
|
-
|
406
|
+
unless File.file? file then
|
407
|
+
warn " Fetching rubygems-#{latest}.tgz via HTTP."
|
408
|
+
File.unlink(*Dir["rubygems*"])
|
409
|
+
File.open file, 'w' do |f|
|
410
|
+
f.write URI.parse(GEM_URL+"/"+file).read
|
411
|
+
end
|
394
412
|
end
|
395
413
|
end
|
396
414
|
|