spline 0.0.5 → 0.0.6

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