rake 0.4.11 → 0.8.7

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.
Files changed (101) hide show
  1. data/CHANGES +288 -1
  2. data/README +101 -114
  3. data/Rakefile +269 -54
  4. data/TODO +1 -0
  5. data/bin/rake +26 -3
  6. data/doc/command_line_usage.rdoc +102 -0
  7. data/doc/jamis.rb +133 -106
  8. data/doc/rake.1.gz +0 -0
  9. data/doc/rakefile.rdoc +304 -4
  10. data/doc/release_notes/rake-0.4.14.rdoc +23 -0
  11. data/doc/release_notes/rake-0.4.15.rdoc +35 -0
  12. data/doc/release_notes/rake-0.5.0.rdoc +53 -0
  13. data/doc/release_notes/rake-0.5.3.rdoc +78 -0
  14. data/doc/release_notes/rake-0.5.4.rdoc +46 -0
  15. data/doc/release_notes/rake-0.6.0.rdoc +141 -0
  16. data/doc/release_notes/rake-0.7.0.rdoc +119 -0
  17. data/doc/release_notes/rake-0.7.1.rdoc +59 -0
  18. data/doc/release_notes/rake-0.7.2.rdoc +121 -0
  19. data/doc/release_notes/rake-0.7.3.rdoc +47 -0
  20. data/doc/release_notes/rake-0.8.0.rdoc +114 -0
  21. data/doc/release_notes/rake-0.8.2.rdoc +165 -0
  22. data/doc/release_notes/rake-0.8.3.rdoc +112 -0
  23. data/doc/release_notes/rake-0.8.4.rdoc +147 -0
  24. data/doc/release_notes/rake-0.8.5.rdoc +53 -0
  25. data/doc/release_notes/rake-0.8.6.rdoc +55 -0
  26. data/doc/release_notes/rake-0.8.7.rdoc +55 -0
  27. data/lib/rake/alt_system.rb +108 -0
  28. data/lib/rake/classic_namespace.rb +8 -0
  29. data/lib/rake/clean.rb +3 -1
  30. data/lib/rake/contrib/ftptools.rb +40 -26
  31. data/lib/rake/contrib/publisher.rb +1 -1
  32. data/lib/rake/contrib/rubyforgepublisher.rb +3 -3
  33. data/lib/rake/contrib/sshpublisher.rb +1 -1
  34. data/lib/rake/contrib/sys.rb +25 -23
  35. data/lib/rake/gempackagetask.rb +14 -15
  36. data/lib/rake/loaders/makefile.rb +42 -0
  37. data/lib/rake/packagetask.rb +65 -33
  38. data/lib/rake/rake_test_loader.rb +5 -0
  39. data/lib/rake/rdoctask.rb +112 -31
  40. data/lib/rake/ruby182_test_unit_fix.rb +23 -0
  41. data/lib/rake/runtest.rb +4 -4
  42. data/lib/rake/tasklib.rb +11 -12
  43. data/lib/rake/testtask.rb +67 -24
  44. data/lib/rake/win32.rb +55 -0
  45. data/lib/rake.rb +2087 -578
  46. data/test/capture_stdout.rb +26 -0
  47. data/test/check_expansion.rb +5 -0
  48. data/test/check_no_expansion.rb +5 -0
  49. data/test/data/chains/Rakefile +15 -0
  50. data/test/data/default/Rakefile +19 -0
  51. data/test/data/dryrun/Rakefile +22 -0
  52. data/test/data/file_creation_task/Rakefile +33 -0
  53. data/test/data/imports/Rakefile +19 -0
  54. data/test/data/imports/deps.mf +1 -0
  55. data/test/data/multidesc/Rakefile +17 -0
  56. data/test/data/namespace/Rakefile +57 -0
  57. data/test/data/rakelib/test1.rb +3 -0
  58. data/test/data/sample.mf +14 -0
  59. data/test/data/statusreturn/Rakefile +8 -0
  60. data/test/data/unittest/Rakefile +1 -0
  61. data/test/filecreation.rb +18 -12
  62. data/test/functional.rb +6 -73
  63. data/test/in_environment.rb +30 -0
  64. data/test/rake_test_setup.rb +24 -0
  65. data/test/reqfile.rb +3 -0
  66. data/test/reqfile2.rb +3 -0
  67. data/test/session_functional.rb +339 -0
  68. data/test/shellcommand.rb +0 -0
  69. data/test/test_application.rb +675 -0
  70. data/test/{testclean.rb → test_clean.rb} +1 -0
  71. data/test/test_definitions.rb +85 -0
  72. data/test/test_earlytime.rb +35 -0
  73. data/test/test_extension.rb +63 -0
  74. data/test/test_file_creation_task.rb +62 -0
  75. data/test/test_file_task.rb +143 -0
  76. data/test/test_filelist.rb +623 -0
  77. data/test/test_fileutils.rb +251 -0
  78. data/test/{testftp.rb → test_ftp.rb} +5 -1
  79. data/test/test_invocation_chain.rb +81 -0
  80. data/test/test_makefile_loader.rb +26 -0
  81. data/test/test_multitask.rb +45 -0
  82. data/test/test_namespace.rb +55 -0
  83. data/test/{testpackagetask.rb → test_package_task.rb} +49 -12
  84. data/test/test_pathmap.rb +210 -0
  85. data/test/test_pseudo_status.rb +26 -0
  86. data/test/test_rake.rb +41 -0
  87. data/test/test_rdoc_task.rb +88 -0
  88. data/test/test_require.rb +35 -0
  89. data/test/test_rules.rb +349 -0
  90. data/test/test_task_arguments.rb +89 -0
  91. data/test/test_task_manager.rb +173 -0
  92. data/test/test_tasklib.rb +12 -0
  93. data/test/test_tasks.rb +374 -0
  94. data/test/{testtesttask.rb → test_test_task.rb} +8 -2
  95. data/test/test_top_level_functions.rb +86 -0
  96. data/test/test_win32.rb +72 -0
  97. metadata +184 -84
  98. data/test/testfilelist.rb +0 -255
  99. data/test/testfileutils.rb +0 -83
  100. data/test/testtasks.rb +0 -371
  101. /data/test/contrib/{testsys.rb → test_sys.rb} +0 -0
@@ -0,0 +1,251 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rake'
4
+ require 'test/unit'
5
+ require 'test/filecreation'
6
+ require 'fileutils'
7
+ require 'stringio'
8
+ require 'test/rake_test_setup'
9
+
10
+ class TestFileUtils < Test::Unit::TestCase
11
+ include FileCreation
12
+ include TestMethods
13
+
14
+ def setup
15
+ File.chmod(0750,"test/shellcommand.rb")
16
+ end
17
+
18
+ def teardown
19
+ FileUtils.rm_rf("testdata")
20
+ FileUtils::LN_SUPPORTED[0] = true
21
+ end
22
+
23
+ def test_rm_one_file
24
+ create_file("testdata/a")
25
+ FileUtils.rm_rf "testdata/a"
26
+ assert ! File.exist?("testdata/a")
27
+ end
28
+
29
+ def test_rm_two_files
30
+ create_file("testdata/a")
31
+ create_file("testdata/b")
32
+ FileUtils.rm_rf ["testdata/a", "testdata/b"]
33
+ assert ! File.exist?("testdata/a")
34
+ assert ! File.exist?("testdata/b")
35
+ end
36
+
37
+ def test_rm_filelist
38
+ list = Rake::FileList.new << "testdata/a" << "testdata/b"
39
+ list.each { |fn| create_file(fn) }
40
+ FileUtils.rm_r list
41
+ assert ! File.exist?("testdata/a")
42
+ assert ! File.exist?("testdata/b")
43
+ end
44
+
45
+ def test_ln
46
+ create_dir("testdata")
47
+ open("testdata/a", "w") { |f| f.puts "TEST_LN" }
48
+ RakeFileUtils.safe_ln("testdata/a", "testdata/b", :verbose => false)
49
+ assert_equal "TEST_LN\n", open("testdata/b") { |f| f.read }
50
+ end
51
+
52
+ class BadLink
53
+ include RakeFileUtils
54
+ attr_reader :cp_args
55
+ def initialize(klass)
56
+ @failure_class = klass
57
+ end
58
+ def cp(*args)
59
+ @cp_args = args
60
+ end
61
+ def ln(*args)
62
+ fail @failure_class, "ln not supported"
63
+ end
64
+ public :safe_ln
65
+ end
66
+
67
+ def test_safe_ln_failover_to_cp_on_standard_error
68
+ FileUtils::LN_SUPPORTED[0] = true
69
+ c = BadLink.new(StandardError)
70
+ c.safe_ln "a", "b"
71
+ assert_equal ['a', 'b'], c.cp_args
72
+ c.safe_ln "x", "y"
73
+ assert_equal ['x', 'y'], c.cp_args
74
+ end
75
+
76
+ def test_safe_ln_failover_to_cp_on_not_implemented_error
77
+ FileUtils::LN_SUPPORTED[0] = true
78
+ c = BadLink.new(NotImplementedError)
79
+ c.safe_ln "a", "b"
80
+ assert_equal ['a', 'b'], c.cp_args
81
+ end
82
+
83
+ def test_safe_ln_fails_on_script_error
84
+ FileUtils::LN_SUPPORTED[0] = true
85
+ c = BadLink.new(ScriptError)
86
+ assert_exception(ScriptError) do c.safe_ln "a", "b" end
87
+ end
88
+
89
+ def test_verbose
90
+ verbose true
91
+ assert_equal true, verbose
92
+ verbose false
93
+ assert_equal false, verbose
94
+ verbose(true) {
95
+ assert_equal true, verbose
96
+ }
97
+ assert_equal false, verbose
98
+ end
99
+
100
+ def test_nowrite
101
+ nowrite true
102
+ assert_equal true, nowrite
103
+ nowrite false
104
+ assert_equal false, nowrite
105
+ nowrite(true){
106
+ assert_equal true, nowrite
107
+ }
108
+ assert_equal false, nowrite
109
+ end
110
+
111
+ def test_file_utils_methods_are_available_at_top_level
112
+ create_file("testdata/a")
113
+ rm_rf "testdata/a"
114
+ assert ! File.exist?("testdata/a")
115
+ end
116
+
117
+ def test_fileutils_methods_dont_leak
118
+ obj = Object.new
119
+ assert_exception(NoMethodError) { obj.copy } # from FileUtils
120
+ assert_exception(NoMethodError) { obj.ruby } # from RubyFileUtils
121
+ end
122
+
123
+ def test_sh
124
+ verbose(false) { sh %{ruby test/shellcommand.rb} }
125
+ assert true, "should not fail"
126
+ end
127
+
128
+ # If the :sh method is invoked directly from a test unit instance
129
+ # (under mini/test), the mini/test version of fail is invoked rather
130
+ # than the kernel version of fail. So we run :sh from within a
131
+ # non-test class to avoid the problem.
132
+ class Sh
133
+ include FileUtils
134
+ def run(*args)
135
+ sh(*args)
136
+ end
137
+ def self.run(*args)
138
+ new.run(*args)
139
+ end
140
+ end
141
+
142
+ def test_sh_with_a_single_string_argument
143
+ ENV['RAKE_TEST_SH'] = 'someval'
144
+ verbose(false) {
145
+ sh %{ruby test/check_expansion.rb #{env_var} someval}
146
+ }
147
+ end
148
+
149
+ def test_sh_with_multiple_arguments
150
+ ENV['RAKE_TEST_SH'] = 'someval'
151
+ verbose(false) {
152
+ Sh.run 'ruby', 'test/check_no_expansion.rb', env_var, 'someval'
153
+ }
154
+ end
155
+
156
+ def test_sh_failure
157
+ assert_exception(RuntimeError) {
158
+ verbose(false) { Sh.run %{ruby test/shellcommand.rb 1} }
159
+ }
160
+ end
161
+
162
+ def test_sh_special_handling
163
+ count = 0
164
+ verbose(false) {
165
+ sh(%{ruby test/shellcommand.rb}) do |ok, res|
166
+ assert(ok)
167
+ assert_equal 0, res.exitstatus
168
+ count += 1
169
+ end
170
+ sh(%{ruby test/shellcommand.rb 1}) do |ok, res|
171
+ assert(!ok)
172
+ assert_equal 1, res.exitstatus
173
+ count += 1
174
+ end
175
+ }
176
+ assert_equal 2, count, "Block count should be 2"
177
+ end
178
+
179
+ def test_sh_noop
180
+ verbose(false) { sh %{test/shellcommand.rb 1}, :noop=>true }
181
+ assert true, "should not fail"
182
+ end
183
+
184
+ def test_sh_bad_option
185
+ ex = assert_exception(ArgumentError) {
186
+ verbose(false) { sh %{test/shellcommand.rb}, :bad_option=>true }
187
+ }
188
+ assert_match(/bad_option/, ex.message)
189
+ end
190
+
191
+ def test_sh_verbose
192
+ out = redirect_stderr {
193
+ verbose(true) {
194
+ sh %{test/shellcommand.rb}, :noop=>true
195
+ }
196
+ }
197
+ assert_match(/^test\/shellcommand\.rb$/, out)
198
+ end
199
+
200
+ def test_sh_no_verbose
201
+ out = redirect_stderr {
202
+ verbose(false) {
203
+ sh %{test/shellcommand.rb}, :noop=>true
204
+ }
205
+ }
206
+ assert_equal '', out
207
+ end
208
+
209
+ def test_ruby_with_a_single_string_argument
210
+ ENV['RAKE_TEST_SH'] = 'someval'
211
+ verbose(false) {
212
+ ruby %{test/check_expansion.rb #{env_var} someval}
213
+ }
214
+ end
215
+
216
+ def test_ruby_with_multiple_arguments
217
+ ENV['RAKE_TEST_SH'] = 'someval'
218
+ verbose(false) {
219
+ ruby 'test/check_no_expansion.rb', env_var, 'someval'
220
+ }
221
+ end
222
+
223
+ def test_split_all
224
+ assert_equal ['a'], RakeFileUtils.split_all('a')
225
+ assert_equal ['..'], RakeFileUtils.split_all('..')
226
+ assert_equal ['/'], RakeFileUtils.split_all('/')
227
+ assert_equal ['a', 'b'], RakeFileUtils.split_all('a/b')
228
+ assert_equal ['/', 'a', 'b'], RakeFileUtils.split_all('/a/b')
229
+ assert_equal ['..', 'a', 'b'], RakeFileUtils.split_all('../a/b')
230
+ end
231
+
232
+ private
233
+
234
+ def redirect_stderr
235
+ old_err = $stderr
236
+ $stderr = StringIO.new
237
+ yield
238
+ $stderr.string
239
+ ensure
240
+ $stderr = old_err
241
+ end
242
+
243
+ def windows?
244
+ ! File::ALT_SEPARATOR.nil?
245
+ end
246
+
247
+ def env_var
248
+ windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH'
249
+ end
250
+
251
+ end
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'date'
4
+ require 'time'
4
5
  require 'test/unit'
5
6
  require 'rake/contrib/ftptools'
6
7
 
@@ -8,13 +9,16 @@ class FakeDate
8
9
  def self.today
9
10
  Date.new(2003,10,3)
10
11
  end
12
+ def self.now
13
+ Time.local(2003,10,3,12,00,00)
14
+ end
11
15
  end
12
16
 
13
17
 
14
18
  class TestFtpFile < Test::Unit::TestCase
15
19
 
16
20
  def setup
17
- Rake::FtpFile.class_eval { @date_class = FakeDate }
21
+ Rake::FtpFile.class_eval { @date_class = FakeDate; @time_class = FakeDate }
18
22
  end
19
23
 
20
24
  def test_general
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake'
5
+ require 'test/rake_test_setup'
6
+
7
+ ######################################################################
8
+ class TestAnEmptyInvocationChain < Test::Unit::TestCase
9
+ include TestMethods
10
+
11
+ def setup
12
+ @empty = Rake::InvocationChain::EMPTY
13
+ end
14
+
15
+ def test_should_be_able_to_add_members
16
+ assert_nothing_raised do
17
+ @empty.append("A")
18
+ end
19
+ end
20
+
21
+ def test_to_s
22
+ assert_equal "TOP", @empty.to_s
23
+ end
24
+ end
25
+
26
+ ######################################################################
27
+ class TestAnInvocationChainWithOneMember < Test::Unit::TestCase
28
+ include TestMethods
29
+
30
+ def setup
31
+ @empty = Rake::InvocationChain::EMPTY
32
+ @first_member = "A"
33
+ @chain = @empty.append(@first_member)
34
+ end
35
+
36
+ def test_should_report_first_member_as_a_member
37
+ assert @chain.member?(@first_member)
38
+ end
39
+
40
+ def test_should_fail_when_adding_original_member
41
+ ex = assert_exception RuntimeError do
42
+ @chain.append(@first_member)
43
+ end
44
+ assert_match(/circular +dependency/i, ex.message)
45
+ assert_match(/A.*=>.*A/, ex.message)
46
+ end
47
+
48
+ def test_to_s
49
+ assert_equal "TOP => A", @chain.to_s
50
+ end
51
+
52
+ end
53
+
54
+ ######################################################################
55
+ class TestAnInvocationChainWithMultipleMember < Test::Unit::TestCase
56
+ include TestMethods
57
+
58
+ def setup
59
+ @first_member = "A"
60
+ @second_member = "B"
61
+ ch = Rake::InvocationChain::EMPTY.append(@first_member)
62
+ @chain = ch.append(@second_member)
63
+ end
64
+
65
+ def test_should_report_first_member_as_a_member
66
+ assert @chain.member?(@first_member)
67
+ end
68
+
69
+ def test_should_report_second_member_as_a_member
70
+ assert @chain.member?(@second_member)
71
+ end
72
+
73
+ def test_should_fail_when_adding_original_member
74
+ ex = assert_exception RuntimeError do
75
+ @chain.append(@first_member)
76
+ end
77
+ assert_match(/A.*=>.*B.*=>.*A/, ex.message)
78
+ end
79
+ end
80
+
81
+
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake'
5
+ require 'rake/loaders/makefile'
6
+
7
+ class TestMakefileLoader < Test::Unit::TestCase
8
+ include Rake
9
+
10
+ def test_parse
11
+ Task.clear
12
+ loader = Rake::MakefileLoader.new
13
+ loader.load("test/data/sample.mf")
14
+ %w(a b c d).each do |t|
15
+ assert Task.task_defined?(t), "#{t} should be a defined task"
16
+ end
17
+ assert_equal %w(a1 a2 a3 a4 a5 a6 a7).sort, Task['a'].prerequisites.sort
18
+ assert_equal %w(b1 b2 b3 b4 b5 b6 b7).sort, Task['b'].prerequisites.sort
19
+ assert_equal %w(c1).sort, Task['c'].prerequisites.sort
20
+ assert_equal %w(d1 d2).sort, Task['d'].prerequisites.sort
21
+ assert_equal %w(e1 f1).sort, Task['e'].prerequisites.sort
22
+ assert_equal %w(e1 f1).sort, Task['f'].prerequisites.sort
23
+ assert_equal ["g1", "g 2", "g 3", "g4"].sort, Task['g 0'].prerequisites.sort
24
+ assert_equal 7, Task.tasks.size
25
+ end
26
+ end
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake'
5
+
6
+ ######################################################################
7
+ class TestMultiTask < Test::Unit::TestCase
8
+ include Rake
9
+
10
+ def setup
11
+ Task.clear
12
+ @runs = Array.new
13
+ end
14
+
15
+ def test_running_multitasks
16
+ task :a do 3.times do |i| @runs << "A#{i}"; sleep 0.01; end end
17
+ task :b do 3.times do |i| @runs << "B#{i}"; sleep 0.01; end end
18
+ multitask :both => [:a, :b]
19
+ Task[:both].invoke
20
+ assert_equal 6, @runs.size
21
+ assert @runs.index("A0") < @runs.index("A1")
22
+ assert @runs.index("A1") < @runs.index("A2")
23
+ assert @runs.index("B0") < @runs.index("B1")
24
+ assert @runs.index("B1") < @runs.index("B2")
25
+ end
26
+
27
+ def test_all_multitasks_wait_on_slow_prerequisites
28
+ task :slow do 3.times do |i| @runs << "S#{i}"; sleep 0.05 end end
29
+ task :a => [:slow] do 3.times do |i| @runs << "A#{i}"; sleep 0.01 end end
30
+ task :b => [:slow] do 3.times do |i| @runs << "B#{i}"; sleep 0.01 end end
31
+ multitask :both => [:a, :b]
32
+ Task[:both].invoke
33
+ assert_equal 9, @runs.size
34
+ assert @runs.index("S0") < @runs.index("S1")
35
+ assert @runs.index("S1") < @runs.index("S2")
36
+ assert @runs.index("S2") < @runs.index("A0")
37
+ assert @runs.index("S2") < @runs.index("B0")
38
+ assert @runs.index("A0") < @runs.index("A1")
39
+ assert @runs.index("A1") < @runs.index("A2")
40
+ assert @runs.index("B0") < @runs.index("B1")
41
+ assert @runs.index("B1") < @runs.index("B2")
42
+ end
43
+ end
44
+
45
+
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'rubygems'
5
+ rescue LoadError
6
+ # got no gems
7
+ end
8
+
9
+ require 'test/unit'
10
+ require 'flexmock/test_unit'
11
+ require 'rake'
12
+ require 'test/rake_test_setup'
13
+
14
+ class TestNameSpace < Test::Unit::TestCase
15
+ include TestMethods
16
+
17
+ class TM
18
+ include Rake::TaskManager
19
+ end
20
+
21
+ def test_namespace_creation
22
+ mgr = TM.new
23
+ ns = Rake::NameSpace.new(mgr, [])
24
+ assert_not_nil ns
25
+ end
26
+
27
+ def test_namespace_lookup
28
+ mgr = TM.new
29
+ ns = mgr.in_namespace("n") do
30
+ mgr.define_task(Rake::Task, "t")
31
+ end
32
+
33
+ assert_not_nil ns["t"]
34
+ assert_equal mgr["n:t"], ns["t"]
35
+ end
36
+
37
+ def test_namespace_reports_tasks_it_owns
38
+ mgr = TM.new
39
+ nns = nil
40
+ ns = mgr.in_namespace("n") do
41
+ mgr.define_task(Rake::Task, :x)
42
+ mgr.define_task(Rake::Task, :y)
43
+ nns = mgr.in_namespace("nn") do
44
+ mgr.define_task(Rake::Task, :z)
45
+ end
46
+ end
47
+ mgr.in_namespace("m") do
48
+ mgr.define_task(Rake::Task, :x)
49
+ end
50
+
51
+ assert_equal ["n:nn:z", "n:x", "n:y"],
52
+ ns.tasks.map { |tsk| tsk.name }
53
+ assert_equal ["n:nn:z"], nns.tasks.map {|t| t.name}
54
+ end
55
+ end
@@ -2,23 +2,29 @@
2
2
 
3
3
  require 'test/unit'
4
4
  require 'rake/packagetask'
5
+ require 'test/rake_test_setup'
5
6
 
6
7
  class TestPackageTask < Test::Unit::TestCase
8
+ include Rake
9
+ include TestMethods
10
+
7
11
  def test_create
8
12
  pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p|
9
13
  p.package_files << "install.rb"
10
14
  p.package_files.include(
11
- '[A-Z]*',
12
- 'bin/**/*',
13
- 'lib/**/*.rb',
14
- 'test/**/*.rb',
15
- 'doc/**/*',
16
- 'build/rubyapp.rb',
17
- '*.blurb')
15
+ '[A-Z]*',
16
+ 'bin/**/*',
17
+ 'lib/**/*.rb',
18
+ 'test/**/*.rb',
19
+ 'doc/**/*',
20
+ 'build/rubyapp.rb',
21
+ '*.blurb')
18
22
  p.package_files.exclude(/\bCVS\b/)
19
23
  p.package_files.exclude(/~$/)
20
24
  p.package_dir = 'pkg'
21
25
  p.need_tar = true
26
+ p.need_tar_gz = true
27
+ p.need_tar_bz2 = true
22
28
  p.need_zip = true
23
29
  }
24
30
  assert_equal "pkg", pkg.package_dir
@@ -27,6 +33,8 @@ class TestPackageTask < Test::Unit::TestCase
27
33
  assert "1.2.3", pkg.version
28
34
  assert Task[:package]
29
35
  assert Task['pkg/pkgr-1.2.3.tgz']
36
+ assert Task['pkg/pkgr-1.2.3.tar.gz']
37
+ assert Task['pkg/pkgr-1.2.3.tar.bz2']
30
38
  assert Task['pkg/pkgr-1.2.3.zip']
31
39
  assert Task["pkg/pkgr-1.2.3"]
32
40
  assert Task[:clobber_package]
@@ -34,7 +42,7 @@ class TestPackageTask < Test::Unit::TestCase
34
42
  end
35
43
 
36
44
  def test_missing_version
37
- assert_raises(RuntimeError) {
45
+ assert_exception(RuntimeError) {
38
46
  pkg = Rake::PackageTask.new("pkgr") { |p| }
39
47
  }
40
48
  end
@@ -68,14 +76,43 @@ else
68
76
  class TestGemPackageTask < Test::Unit::TestCase
69
77
  def test_gem_package
70
78
  gem = Gem::Specification.new do |g|
71
- g.name = "pkgr"
72
- g.version = "1.2.3"
73
- g.files = FileList["x"].resolve
79
+ g.name = "pkgr"
80
+ g.version = "1.2.3"
81
+ g.files = FileList["x"].resolve
82
+ end
83
+ pkg = Rake::GemPackageTask.new(gem) do |p|
84
+ p.package_files << "y"
85
+ end
86
+ assert_equal ["x", "y"], pkg.package_files
87
+ assert_equal "pkgr-1.2.3.gem", pkg.gem_file
88
+ end
89
+
90
+ def test_gem_package_with_current_platform
91
+ gem = Gem::Specification.new do |g|
92
+ g.name = "pkgr"
93
+ g.version = "1.2.3"
94
+ g.files = FileList["x"].resolve
95
+ g.platform = Gem::Platform::CURRENT
96
+ end
97
+ pkg = Rake::GemPackageTask.new(gem) do |p|
98
+ p.package_files << "y"
99
+ end
100
+ assert_equal ["x", "y"], pkg.package_files
101
+ assert_match(/^pkgr-1\.2\.3-(\S+)\.gem$/, pkg.gem_file)
102
+ end
103
+
104
+ def test_gem_package_with_ruby_platform
105
+ gem = Gem::Specification.new do |g|
106
+ g.name = "pkgr"
107
+ g.version = "1.2.3"
108
+ g.files = FileList["x"].resolve
109
+ g.platform = Gem::Platform::RUBY
74
110
  end
75
111
  pkg = Rake::GemPackageTask.new(gem) do |p|
76
- p.package_files << "y"
112
+ p.package_files << "y"
77
113
  end
78
114
  assert_equal ["x", "y"], pkg.package_files
115
+ assert_equal "pkgr-1.2.3.gem", pkg.gem_file
79
116
  end
80
117
  end
81
118
  end