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.
- checksums.yaml +4 -4
- data/bin/spline +11 -9
- data/lib/spline/version.rb +1 -1
- data/lib/spline.rb +1 -8
- data/vendor/bundle/ruby/2.1.0/bin/rake +23 -0
- data/vendor/bundle/ruby/2.1.0/bin/spline +23 -0
- data/vendor/bundle/ruby/2.1.0/build_info/rake-10.3.2.info +1 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.autotest +7 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.gemtest +0 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.rubocop.yml +27 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.togglerc +7 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/CONTRIBUTING.rdoc +34 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/History.rdoc +609 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/Manifest.txt +162 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/README.rdoc +137 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/Rakefile +81 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/bin/rake +33 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/alt_system.rb +110 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/application.rb +783 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/backtrace.rb +23 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/clean.rb +76 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/cloneable.rb +16 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/.document +0 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/compositepublisher.rb +21 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/ftptools.rb +137 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/publisher.rb +81 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/rubyforgepublisher.rb +18 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/sshpublisher.rb +61 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/sys.rb +4 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/cpu_counter.rb +109 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/default_loader.rb +14 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/dsl_definition.rb +198 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/early_time.rb +21 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/core.rb +25 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/module.rb +1 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/string.rb +173 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/time.rb +15 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_creation_task.rb +24 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_list.rb +414 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_task.rb +46 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_utils.rb +116 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_utils_ext.rb +144 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/gempackagetask.rb +4 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/invocation_chain.rb +56 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/invocation_exception_mixin.rb +16 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/linked_list.rb +103 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/loaders/makefile.rb +40 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/multi_task.rb +13 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/packagetask.rb +202 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/pathmap.rb +3 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/phony.rb +15 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/private_reader.rb +20 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/promise.rb +99 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/pseudo_status.rb +29 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rake_module.rb +38 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rake_test_loader.rb +22 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rdoctask.rb +4 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ruby182_test_unit_fix.rb +29 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/runtest.rb +27 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/scope.rb +42 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task.rb +383 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_argument_error.rb +7 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_arguments.rb +98 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_manager.rb +310 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/tasklib.rb +24 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/testtask.rb +212 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/thread_history_display.rb +48 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/thread_pool.rb +164 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/trace_output.rb +22 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/version.rb +7 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/win32.rb +56 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake.rb +78 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/rakelib/publish.rake +20 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/rakelib/test_times.rake +25 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/file_creation.rb +34 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/helper.rb +127 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/support/rakefile_definitions.rb +478 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/support/ruby_runner.rb +33 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_private_reader.rb +42 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake.rb +40 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_application.rb +641 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_application_options.rb +466 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_backtrace.rb +119 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_clean.rb +55 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_cpu_counter.rb +50 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_definitions.rb +79 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_directory_task.rb +63 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_dsl.rb +40 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_early_time.rb +31 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_extension.rb +59 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_creation_task.rb +56 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_list.rb +627 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_list_path_map.rb +8 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_task.rb +186 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_utils.rb +309 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_ftp_file.rb +74 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_functional.rb +482 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_invocation_chain.rb +64 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_linked_list.rb +84 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_makefile_loader.rb +46 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_multi_task.rb +58 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_name_space.rb +57 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_package_task.rb +79 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map.rb +168 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map_explode.rb +34 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map_partial.rb +18 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_pseudo_status.rb +21 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_rake_test_loader.rb +20 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_reduce_compat.rb +26 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_require.rb +40 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_rules.rb +388 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_scope.rb +44 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task.rb +392 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_argument_parsing.rb +109 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_arguments.rb +127 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_lib.rb +9 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_manager.rb +178 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_manager_argument_resolution.rb +19 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_with_arguments.rb +171 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_test_task.rb +141 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_thread_pool.rb +142 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_top_level_functions.rb +71 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_win32.rb +72 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_thread_history_display.rb +101 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_trace_output.rb +52 -0
- data/vendor/bundle/ruby/2.1.0/specifications/rake-10.3.2.gemspec +45 -0
- 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
|