vergissberlin 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +10 -1
  3. data/bin/vergissberlin +1 -1
  4. data/lib/vergissberlin/version.rb +1 -1
  5. data/test/test_test.rb +7 -0
  6. data/test/utils.rb +37 -0
  7. data/vendor/bundle/bin/rake +23 -0
  8. data/vendor/bundle/bin/vergissberlin +23 -0
  9. data/vendor/bundle/build_info/capistrano_colors-0.5.5.info +1 -0
  10. data/vendor/bundle/build_info/rake-10.0.4.info +1 -0
  11. data/vendor/bundle/gems/capistrano_colors-0.5.5/Manifest +7 -0
  12. data/vendor/bundle/gems/capistrano_colors-0.5.5/README.rdoc +130 -0
  13. data/vendor/bundle/gems/capistrano_colors-0.5.5/Rakefile +1 -0
  14. data/vendor/bundle/gems/capistrano_colors-0.5.5/capistrano_colors.gemspec +33 -0
  15. data/vendor/bundle/gems/capistrano_colors-0.5.5/lib/capistrano_colors/configuration.rb +70 -0
  16. data/vendor/bundle/gems/capistrano_colors-0.5.5/lib/capistrano_colors/logger.rb +72 -0
  17. data/vendor/bundle/gems/capistrano_colors-0.5.5/lib/capistrano_colors.rb +18 -0
  18. data/vendor/bundle/gems/rake-10.0.4/CHANGES +530 -0
  19. data/vendor/bundle/gems/rake-10.0.4/MIT-LICENSE +21 -0
  20. data/vendor/bundle/gems/rake-10.0.4/README.rdoc +187 -0
  21. data/vendor/bundle/gems/rake-10.0.4/Rakefile +375 -0
  22. data/vendor/bundle/gems/rake-10.0.4/TODO +21 -0
  23. data/vendor/bundle/gems/rake-10.0.4/bin/rake +33 -0
  24. data/vendor/bundle/gems/rake-10.0.4/install.rb +90 -0
  25. data/vendor/bundle/gems/rake-10.0.4/lib/rake/alt_system.rb +109 -0
  26. data/vendor/bundle/gems/rake-10.0.4/lib/rake/application.rb +681 -0
  27. data/vendor/bundle/gems/rake-10.0.4/lib/rake/backtrace.rb +19 -0
  28. data/vendor/bundle/gems/rake-10.0.4/lib/rake/clean.rb +32 -0
  29. data/vendor/bundle/gems/rake-10.0.4/lib/rake/cloneable.rb +16 -0
  30. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/compositepublisher.rb +21 -0
  31. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/ftptools.rb +151 -0
  32. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/publisher.rb +73 -0
  33. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/rubyforgepublisher.rb +16 -0
  34. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/sshpublisher.rb +50 -0
  35. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/sys.rb +1 -0
  36. data/vendor/bundle/gems/rake-10.0.4/lib/rake/default_loader.rb +10 -0
  37. data/vendor/bundle/gems/rake-10.0.4/lib/rake/dsl_definition.rb +156 -0
  38. data/vendor/bundle/gems/rake-10.0.4/lib/rake/early_time.rb +18 -0
  39. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/core.rb +27 -0
  40. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/module.rb +0 -0
  41. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/string.rb +168 -0
  42. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/time.rb +15 -0
  43. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_creation_task.rb +24 -0
  44. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_list.rb +410 -0
  45. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_task.rb +47 -0
  46. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_utils.rb +114 -0
  47. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_utils_ext.rb +143 -0
  48. data/vendor/bundle/gems/rake-10.0.4/lib/rake/gempackagetask.rb +1 -0
  49. data/vendor/bundle/gems/rake-10.0.4/lib/rake/invocation_chain.rb +51 -0
  50. data/vendor/bundle/gems/rake-10.0.4/lib/rake/invocation_exception_mixin.rb +16 -0
  51. data/vendor/bundle/gems/rake-10.0.4/lib/rake/loaders/makefile.rb +40 -0
  52. data/vendor/bundle/gems/rake-10.0.4/lib/rake/multi_task.rb +13 -0
  53. data/vendor/bundle/gems/rake-10.0.4/lib/rake/name_space.rb +25 -0
  54. data/vendor/bundle/gems/rake-10.0.4/lib/rake/packagetask.rb +185 -0
  55. data/vendor/bundle/gems/rake-10.0.4/lib/rake/pathmap.rb +1 -0
  56. data/vendor/bundle/gems/rake-10.0.4/lib/rake/phony.rb +15 -0
  57. data/vendor/bundle/gems/rake-10.0.4/lib/rake/private_reader.rb +20 -0
  58. data/vendor/bundle/gems/rake-10.0.4/lib/rake/promise.rb +99 -0
  59. data/vendor/bundle/gems/rake-10.0.4/lib/rake/pseudo_status.rb +24 -0
  60. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rake_module.rb +37 -0
  61. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rake_test_loader.rb +22 -0
  62. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rdoctask.rb +1 -0
  63. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ruby182_test_unit_fix.rb +25 -0
  64. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rule_recursion_overflow_error.rb +20 -0
  65. data/vendor/bundle/gems/rake-10.0.4/lib/rake/runtest.rb +22 -0
  66. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task.rb +368 -0
  67. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task_argument_error.rb +7 -0
  68. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task_arguments.rb +78 -0
  69. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task_manager.rb +296 -0
  70. data/vendor/bundle/gems/rake-10.0.4/lib/rake/tasklib.rb +22 -0
  71. data/vendor/bundle/gems/rake-10.0.4/lib/rake/testtask.rb +198 -0
  72. data/vendor/bundle/gems/rake-10.0.4/lib/rake/thread_history_display.rb +48 -0
  73. data/vendor/bundle/gems/rake-10.0.4/lib/rake/thread_pool.rb +155 -0
  74. data/vendor/bundle/gems/rake-10.0.4/lib/rake/trace_output.rb +22 -0
  75. data/vendor/bundle/gems/rake-10.0.4/lib/rake/version.rb +13 -0
  76. data/vendor/bundle/gems/rake-10.0.4/lib/rake/win32.rb +55 -0
  77. data/vendor/bundle/gems/rake-10.0.4/lib/rake.rb +71 -0
  78. data/vendor/bundle/gems/rake-10.0.4/test/file_creation.rb +34 -0
  79. data/vendor/bundle/gems/rake-10.0.4/test/helper.rb +562 -0
  80. data/vendor/bundle/gems/rake-10.0.4/test/test_private_reader.rb +42 -0
  81. data/vendor/bundle/gems/rake-10.0.4/test/test_rake.rb +40 -0
  82. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_application.rb +515 -0
  83. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_application_options.rb +455 -0
  84. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_backtrace.rb +89 -0
  85. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_clean.rb +14 -0
  86. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_definitions.rb +80 -0
  87. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_directory_task.rb +57 -0
  88. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_dsl.rb +40 -0
  89. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_early_time.rb +31 -0
  90. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_extension.rb +59 -0
  91. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_creation_task.rb +56 -0
  92. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_list.rb +628 -0
  93. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_list_path_map.rb +8 -0
  94. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_task.rb +122 -0
  95. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_utils.rb +305 -0
  96. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_ftp_file.rb +59 -0
  97. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_functional.rb +496 -0
  98. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_invocation_chain.rb +52 -0
  99. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_makefile_loader.rb +44 -0
  100. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_multi_task.rb +59 -0
  101. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_name_space.rb +43 -0
  102. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_package_task.rb +79 -0
  103. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_path_map.rb +157 -0
  104. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_path_map_explode.rb +34 -0
  105. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_path_map_partial.rb +18 -0
  106. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_pseudo_status.rb +21 -0
  107. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_rake_test_loader.rb +21 -0
  108. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_reduce_compat.rb +30 -0
  109. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_require.rb +40 -0
  110. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_rules.rb +327 -0
  111. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task.rb +340 -0
  112. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_argument_parsing.rb +103 -0
  113. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_arguments.rb +88 -0
  114. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_lib.rb +9 -0
  115. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_manager.rb +157 -0
  116. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_manager_argument_resolution.rb +19 -0
  117. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_with_arguments.rb +171 -0
  118. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_test_task.rb +120 -0
  119. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_thread_pool.rb +122 -0
  120. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_top_level_functions.rb +71 -0
  121. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_win32.rb +72 -0
  122. data/vendor/bundle/gems/rake-10.0.4/test/test_thread_history_display.rb +91 -0
  123. data/vendor/bundle/gems/rake-10.0.4/test/test_trace_output.rb +50 -0
  124. data/vendor/bundle/specifications/capistrano_colors-0.5.5.gemspec +32 -0
  125. data/vendor/bundle/specifications/rake-10.0.4.gemspec +35 -0
  126. data/vergissberlin.gemspec +4 -2
  127. metadata +125 -2
@@ -0,0 +1,8 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestRakeFileListPathMap < Rake::TestCase
4
+ def test_file_list_supports_pathmap
5
+ assert_equal ['a', 'b'], FileList['dir/a.rb', 'dir/b.rb'].pathmap("%n")
6
+ end
7
+ end
8
+
@@ -0,0 +1,122 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+ require 'fileutils'
3
+
4
+ class TestRakeFileTask < Rake::TestCase
5
+ include Rake
6
+
7
+ def setup
8
+ super
9
+
10
+ Task.clear
11
+ @runs = Array.new
12
+ FileUtils.rm_f NEWFILE
13
+ FileUtils.rm_f OLDFILE
14
+ end
15
+
16
+ def test_file_need
17
+ name = "dummy"
18
+ file name
19
+
20
+ ftask = Task[name]
21
+
22
+ assert_equal name.to_s, ftask.name
23
+ File.delete(ftask.name) rescue nil
24
+
25
+ assert ftask.needed?, "file should be needed"
26
+
27
+ open(ftask.name, "w") { |f| f.puts "HI" }
28
+
29
+ assert_equal nil, ftask.prerequisites.collect{|n| Task[n].timestamp}.max
30
+ assert ! ftask.needed?, "file should not be needed"
31
+ ensure
32
+ File.delete(ftask.name) rescue nil
33
+ end
34
+
35
+ def test_file_times_new_depends_on_old
36
+ create_timed_files(OLDFILE, NEWFILE)
37
+
38
+ t1 = Rake.application.intern(FileTask, NEWFILE).enhance([OLDFILE])
39
+ t2 = Rake.application.intern(FileTask, OLDFILE)
40
+ assert ! t2.needed?, "Should not need to build old file"
41
+ assert ! t1.needed?, "Should not need to rebuild new file because of old"
42
+ end
43
+
44
+ def test_file_times_new_depend_on_regular_task_timestamps
45
+ load_phony
46
+
47
+ name = "dummy"
48
+ task name
49
+
50
+ create_timed_files(NEWFILE)
51
+
52
+ t1 = Rake.application.intern(FileTask, NEWFILE).enhance([name])
53
+
54
+ assert t1.needed?, "depending on non-file task uses Time.now"
55
+
56
+ task(name => :phony)
57
+
58
+ assert t1.needed?, "unless the non-file task has a timestamp"
59
+ end
60
+
61
+ def test_file_times_old_depends_on_new
62
+ create_timed_files(OLDFILE, NEWFILE)
63
+
64
+ t1 = Rake.application.intern(FileTask,OLDFILE).enhance([NEWFILE])
65
+ t2 = Rake.application.intern(FileTask, NEWFILE)
66
+ assert ! t2.needed?, "Should not need to build new file"
67
+ preq_stamp = t1.prerequisites.collect{|t| Task[t].timestamp}.max
68
+ assert_equal t2.timestamp, preq_stamp
69
+ assert t1.timestamp < preq_stamp, "T1 should be older"
70
+ assert t1.needed?, "Should need to rebuild old file because of new"
71
+ end
72
+
73
+ def test_file_depends_on_task_depend_on_file
74
+ create_timed_files(OLDFILE, NEWFILE)
75
+
76
+ file NEWFILE => [:obj] do |t| @runs << t.name end
77
+ task :obj => [OLDFILE] do |t| @runs << t.name end
78
+ file OLDFILE do |t| @runs << t.name end
79
+
80
+ Task[:obj].invoke
81
+ Task[NEWFILE].invoke
82
+ assert @runs.include?(NEWFILE)
83
+ end
84
+
85
+ def test_existing_file_depends_on_non_existing_file
86
+ @ran = false
87
+
88
+ create_file(OLDFILE)
89
+ delete_file(NEWFILE)
90
+ file NEWFILE do
91
+ @ran = true
92
+ end
93
+
94
+ file OLDFILE => NEWFILE
95
+
96
+ Task[OLDFILE].invoke
97
+
98
+ assert @ran
99
+ end
100
+
101
+ # I have currently disabled this test. I'm not convinced that
102
+ # deleting the file target on failure is always the proper thing to
103
+ # do. I'm willing to hear input on this topic.
104
+ def ztest_file_deletes_on_failure
105
+ task :obj
106
+ file NEWFILE => [:obj] do |t|
107
+ FileUtils.touch NEWFILE
108
+ fail "Ooops"
109
+ end
110
+ assert Task[NEWFILE]
111
+ begin
112
+ Task[NEWFILE].invoke
113
+ rescue Exception
114
+ end
115
+ assert( ! File.exist?(NEWFILE), "NEWFILE should be deleted")
116
+ end
117
+
118
+ def load_phony
119
+ load File.join(@rake_lib, "rake/phony.rb")
120
+ end
121
+
122
+ end
@@ -0,0 +1,305 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+ require 'fileutils'
3
+ require 'stringio'
4
+
5
+ class TestRakeFileUtils < Rake::TestCase
6
+
7
+ def teardown
8
+ FileUtils::LN_SUPPORTED[0] = true
9
+ RakeFileUtils.verbose_flag = Rake::FileUtilsExt::DEFAULT
10
+
11
+ super
12
+ end
13
+
14
+ def test_rm_one_file
15
+ create_file("a")
16
+ FileUtils.rm_rf "a"
17
+ refute File.exist?("a")
18
+ end
19
+
20
+ def test_rm_two_files
21
+ create_file("a")
22
+ create_file("b")
23
+ FileUtils.rm_rf ["a", "b"]
24
+ refute File.exist?("a")
25
+ refute File.exist?("b")
26
+ end
27
+
28
+ def test_rm_filelist
29
+ list = Rake::FileList.new << "a" << "b"
30
+ list.each { |fn| create_file(fn) }
31
+ FileUtils.rm_r list
32
+ refute File.exist?("a")
33
+ refute File.exist?("b")
34
+ end
35
+
36
+ def test_ln
37
+ open("a", "w") { |f| f.puts "TEST_LN" }
38
+
39
+ Rake::FileUtilsExt.safe_ln("a", "b", :verbose => false)
40
+
41
+ assert_equal "TEST_LN\n", File.read('b')
42
+ end
43
+
44
+ class BadLink
45
+ include Rake::FileUtilsExt
46
+ attr_reader :cp_args
47
+ def initialize(klass)
48
+ @failure_class = klass
49
+ end
50
+ def cp(*args)
51
+ @cp_args = args
52
+ end
53
+ def ln(*args)
54
+ fail @failure_class, "ln not supported"
55
+ end
56
+ public :safe_ln
57
+ end
58
+
59
+ def test_safe_ln_failover_to_cp_on_standard_error
60
+ FileUtils::LN_SUPPORTED[0] = true
61
+ c = BadLink.new(StandardError)
62
+ c.safe_ln "a", "b"
63
+ assert_equal ['a', 'b'], c.cp_args
64
+ c.safe_ln "x", "y"
65
+ assert_equal ['x', 'y'], c.cp_args
66
+ end
67
+
68
+ def test_safe_ln_failover_to_cp_on_not_implemented_error
69
+ FileUtils::LN_SUPPORTED[0] = true
70
+ c = BadLink.new(NotImplementedError)
71
+ c.safe_ln "a", "b"
72
+ assert_equal ['a', 'b'], c.cp_args
73
+ end
74
+
75
+ def test_safe_ln_fails_on_script_error
76
+ FileUtils::LN_SUPPORTED[0] = true
77
+ c = BadLink.new(ScriptError)
78
+ assert_raises(ScriptError) do c.safe_ln "a", "b" end
79
+ end
80
+
81
+ def test_verbose
82
+ verbose true
83
+ assert_equal true, verbose
84
+ verbose false
85
+ assert_equal false, verbose
86
+ verbose(true) {
87
+ assert_equal true, verbose
88
+ }
89
+ assert_equal false, verbose
90
+ end
91
+
92
+ def test_nowrite
93
+ nowrite true
94
+ assert_equal true, nowrite
95
+ nowrite false
96
+ assert_equal false, nowrite
97
+ nowrite(true){
98
+ assert_equal true, nowrite
99
+ }
100
+ assert_equal false, nowrite
101
+ end
102
+
103
+ def test_file_utils_methods_are_available_at_top_level
104
+ create_file("a")
105
+
106
+ capture_io do
107
+ rm_rf "a"
108
+ end
109
+
110
+ refute File.exist?("a")
111
+ end
112
+
113
+ def test_fileutils_methods_dont_leak
114
+ obj = Object.new
115
+ assert_raises(NoMethodError) { obj.copy } # from FileUtils
116
+ assert_raises(NoMethodError) { obj.ruby "-v" } # from RubyFileUtils
117
+ end
118
+
119
+ def test_sh
120
+ shellcommand
121
+
122
+ verbose(false) { sh %{#{Rake::TestCase::RUBY} shellcommand.rb} }
123
+ assert true, "should not fail"
124
+ end
125
+
126
+ def test_sh_with_a_single_string_argument
127
+ check_expansion
128
+
129
+ ENV['RAKE_TEST_SH'] = 'someval'
130
+ verbose(false) {
131
+ sh %{#{RUBY} check_expansion.rb #{env_var} someval}
132
+ }
133
+ end
134
+
135
+ def test_sh_with_multiple_arguments
136
+ check_no_expansion
137
+ ENV['RAKE_TEST_SH'] = 'someval'
138
+
139
+ verbose(false) {
140
+ sh RUBY, 'check_no_expansion.rb', env_var, 'someval'
141
+ }
142
+ end
143
+
144
+ def test_sh_failure
145
+ shellcommand
146
+
147
+ assert_raises(RuntimeError) {
148
+ verbose(false) { sh %{#{RUBY} shellcommand.rb 1} }
149
+ }
150
+ end
151
+
152
+ def test_sh_special_handling
153
+ shellcommand
154
+
155
+ count = 0
156
+ verbose(false) {
157
+ sh(%{#{RUBY} shellcommand.rb}) do |ok, res|
158
+ assert(ok)
159
+ assert_equal 0, res.exitstatus
160
+ count += 1
161
+ end
162
+ sh(%{#{RUBY} shellcommand.rb 1}) do |ok, res|
163
+ assert(!ok)
164
+ assert_equal 1, res.exitstatus
165
+ count += 1
166
+ end
167
+ }
168
+ assert_equal 2, count, "Block count should be 2"
169
+ end
170
+
171
+ def test_sh_noop
172
+ shellcommand
173
+
174
+ verbose(false) { sh %{shellcommand.rb 1}, :noop=>true }
175
+ assert true, "should not fail"
176
+ end
177
+
178
+ def test_sh_bad_option
179
+ shellcommand
180
+
181
+ ex = assert_raises(ArgumentError) {
182
+ verbose(false) { sh %{shellcommand.rb}, :bad_option=>true }
183
+ }
184
+ assert_match(/bad_option/, ex.message)
185
+ end
186
+
187
+ def test_sh_verbose
188
+ shellcommand
189
+
190
+ _, err = capture_io do
191
+ verbose(true) {
192
+ sh %{shellcommand.rb}, :noop=>true
193
+ }
194
+ end
195
+
196
+ assert_equal "shellcommand.rb\n", err
197
+ end
198
+
199
+ def test_sh_verbose_false
200
+ shellcommand
201
+
202
+ _, err = capture_io do
203
+ verbose(false) {
204
+ sh %{shellcommand.rb}, :noop=>true
205
+ }
206
+ end
207
+
208
+ assert_equal '', err
209
+ end
210
+
211
+ def test_sh_verbose_flag_nil
212
+ shellcommand
213
+
214
+ RakeFileUtils.verbose_flag = nil
215
+
216
+ assert_silent do
217
+ sh %{shellcommand.rb}, :noop=>true
218
+ end
219
+ end
220
+
221
+ def test_ruby_with_a_single_string_argument
222
+ check_expansion
223
+
224
+ ENV['RAKE_TEST_SH'] = 'someval'
225
+
226
+ verbose(false) {
227
+ replace_ruby {
228
+ ruby %{check_expansion.rb #{env_var} someval}
229
+ }
230
+ }
231
+ end
232
+
233
+ def test_ruby_with_multiple_arguments
234
+ check_no_expansion
235
+
236
+ ENV['RAKE_TEST_SH'] = 'someval'
237
+ verbose(false) {
238
+ replace_ruby {
239
+ ruby 'check_no_expansion.rb', env_var, 'someval'
240
+ }
241
+ }
242
+ end
243
+
244
+ def test_split_all
245
+ assert_equal ['a'], Rake::FileUtilsExt.split_all('a')
246
+ assert_equal ['..'], Rake::FileUtilsExt.split_all('..')
247
+ assert_equal ['/'], Rake::FileUtilsExt.split_all('/')
248
+ assert_equal ['a', 'b'], Rake::FileUtilsExt.split_all('a/b')
249
+ assert_equal ['/', 'a', 'b'], Rake::FileUtilsExt.split_all('/a/b')
250
+ assert_equal ['..', 'a', 'b'], Rake::FileUtilsExt.split_all('../a/b')
251
+ end
252
+
253
+ def command name, text
254
+ open name, 'w', 0750 do |io|
255
+ io << text
256
+ end
257
+ end
258
+
259
+ def check_no_expansion
260
+ command 'check_no_expansion.rb', <<-CHECK_EXPANSION
261
+ if ARGV[0] != ARGV[1]
262
+ exit 0
263
+ else
264
+ exit 1
265
+ end
266
+ CHECK_EXPANSION
267
+ end
268
+
269
+ def check_expansion
270
+ command 'check_expansion.rb', <<-CHECK_EXPANSION
271
+ if ARGV[0] != ARGV[1]
272
+ exit 1
273
+ else
274
+ exit 0
275
+ end
276
+ CHECK_EXPANSION
277
+ end
278
+
279
+ def replace_ruby
280
+ ruby = FileUtils::RUBY
281
+ FileUtils.send :remove_const, :RUBY
282
+ FileUtils.const_set :RUBY, RUBY
283
+ yield
284
+ ensure
285
+ FileUtils.send :remove_const, :RUBY
286
+ FileUtils.const_set:RUBY, ruby
287
+ end
288
+
289
+ def shellcommand
290
+ command 'shellcommand.rb', <<-SHELLCOMMAND
291
+ #!/usr/bin/env ruby
292
+
293
+ exit((ARGV[0] || "0").to_i)
294
+ SHELLCOMMAND
295
+ end
296
+
297
+ def env_var
298
+ windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH'
299
+ end
300
+
301
+ def windows?
302
+ ! File::ALT_SEPARATOR.nil?
303
+ end
304
+
305
+ end
@@ -0,0 +1,59 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+ require 'date'
3
+ require 'time'
4
+ require 'rake/contrib/ftptools'
5
+
6
+ class FakeDate
7
+ def self.today
8
+ Date.new(2003,10,3)
9
+ end
10
+ def self.now
11
+ Time.local(2003,10,3,12,00,00)
12
+ end
13
+ end
14
+
15
+ class TestRakeFtpFile < Rake::TestCase
16
+
17
+ def setup
18
+ super
19
+
20
+ Rake::FtpFile.class_eval { @date_class = FakeDate; @time_class = FakeDate }
21
+ end
22
+
23
+ def test_general
24
+ file = Rake::FtpFile.new("here", "-rw-r--r-- 1 a279376 develop 121770 Mar 6 14:50 wiki.pl")
25
+ assert_equal "wiki.pl", file.name
26
+ assert_equal "here/wiki.pl", file.path
27
+ assert_equal "a279376", file.owner
28
+ assert_equal "develop", file.group
29
+ assert_equal 0644, file.mode
30
+ assert_equal 121770, file.size
31
+ assert_equal Time.mktime(2003,3,6,14,50,0,0), file.time
32
+ assert ! file.directory?
33
+ assert ! file.symlink?
34
+ end
35
+
36
+ def test_far_date
37
+ file = Rake::FtpFile.new(".", "drwxr-xr-x 3 a279376 develop 4096 Nov 26 2001 vss")
38
+ assert_equal Time.mktime(2001,11,26,0,0,0,0), file.time
39
+ end
40
+
41
+ def test_close_date
42
+ file = Rake::FtpFile.new(".", "drwxr-xr-x 3 a279376 develop 4096 Nov 26 15:35 vss")
43
+ assert_equal Time.mktime(2002,11,26,15,35,0,0), file.time
44
+ end
45
+
46
+ def test_directory
47
+ file = Rake::FtpFile.new(".", "drwxrwxr-x 9 a279376 develop 4096 Mar 13 14:32 working")
48
+ assert file.directory?
49
+ assert !file.symlink?
50
+ end
51
+
52
+ def test_symlink
53
+ file = Rake::FtpFile.new(".", "lrwxrwxrwx 1 a279376 develop 64 Mar 26 2002 xtrac -> /home/a279376/working/ics/development/java/com/fmr/fwp/ics/xtrac")
54
+ assert_equal 'xtrac', file.name
55
+ assert file.symlink?
56
+ assert !file.directory?
57
+ end
58
+ end
59
+