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,178 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestRakeTaskManager < Rake::TestCase
4
+
5
+ def setup
6
+ super
7
+
8
+ @tm = Rake::TestCase::TaskManager.new
9
+ end
10
+
11
+ def test_create_task_manager
12
+ refute_nil @tm
13
+ assert_equal [], @tm.tasks
14
+ end
15
+
16
+ def test_define_task
17
+ t = @tm.define_task(Rake::Task, :t)
18
+ assert_equal "t", t.name
19
+ assert_equal @tm, t.application
20
+ end
21
+
22
+ def test_index
23
+ e = assert_raises RuntimeError do
24
+ @tm['bad']
25
+ end
26
+
27
+ assert_equal "Don't know how to build task 'bad'", e.message
28
+ end
29
+
30
+ def test_name_lookup
31
+ t = @tm.define_task(Rake::Task, :t)
32
+ assert_equal t, @tm[:t]
33
+ end
34
+
35
+ def test_namespace_task_create
36
+ @tm.in_namespace("x") do
37
+ t = @tm.define_task(Rake::Task, :t)
38
+ assert_equal "x:t", t.name
39
+ end
40
+ assert_equal ["x:t"], @tm.tasks.map { |t| t.name }
41
+ end
42
+
43
+ def test_define_namespaced_task
44
+ t = @tm.define_task(Rake::Task, 'n:a:m:e:t')
45
+ assert_equal Rake::Scope.make("e", "m", "a", "n"), t.scope
46
+ assert_equal "n:a:m:e:t", t.name
47
+ assert_equal @tm, t.application
48
+ end
49
+
50
+ def test_define_namespace_in_namespace
51
+ t = nil
52
+ @tm.in_namespace("n") do
53
+ t = @tm.define_task(Rake::Task, 'a:m:e:t')
54
+ end
55
+ assert_equal Rake::Scope.make("e", "m", "a", "n"), t.scope
56
+ assert_equal "n:a:m:e:t", t.name
57
+ assert_equal @tm, t.application
58
+ end
59
+
60
+ def test_anonymous_namespace
61
+ anon_ns = @tm.in_namespace(nil) do
62
+ t = @tm.define_task(Rake::Task, :t)
63
+ assert_equal "_anon_1:t", t.name
64
+ end
65
+ task = anon_ns[:t]
66
+ assert_equal "_anon_1:t", task.name
67
+ end
68
+
69
+ def test_create_filetask_in_namespace
70
+ @tm.in_namespace("x") do
71
+ t = @tm.define_task(Rake::FileTask, "fn")
72
+ assert_equal "fn", t.name
73
+ end
74
+
75
+ assert_equal ["fn"], @tm.tasks.map { |t| t.name }
76
+ end
77
+
78
+ def test_namespace_yields_same_namespace_as_returned
79
+ yielded_namespace = nil
80
+ returned_namespace = @tm.in_namespace("x") do |ns|
81
+ yielded_namespace = ns
82
+ end
83
+ assert_equal returned_namespace, yielded_namespace
84
+ end
85
+
86
+ def test_name_lookup_with_implicit_file_tasks
87
+ FileUtils.touch 'README.rdoc'
88
+
89
+ t = @tm["README.rdoc"]
90
+
91
+ assert_equal "README.rdoc", t.name
92
+ assert Rake::FileTask === t
93
+ end
94
+
95
+ def test_name_lookup_with_nonexistent_task
96
+ assert_raises(RuntimeError) {
97
+ @tm["DOES NOT EXIST"]
98
+ }
99
+ end
100
+
101
+ def test_name_lookup_in_multiple_scopes
102
+ aa = nil
103
+ bb = nil
104
+ xx = @tm.define_task(Rake::Task, :xx)
105
+ top_z = @tm.define_task(Rake::Task, :z)
106
+ @tm.in_namespace("a") do
107
+ aa = @tm.define_task(Rake::Task, :aa)
108
+ mid_z = @tm.define_task(Rake::Task, :z)
109
+ ns_d = @tm.define_task(Rake::Task, "n:t")
110
+ @tm.in_namespace("b") do
111
+ bb = @tm.define_task(Rake::Task, :bb)
112
+ bot_z = @tm.define_task(Rake::Task, :z)
113
+
114
+ assert_equal Rake::Scope.make("b", "a"), @tm.current_scope
115
+
116
+ assert_equal bb, @tm["a:b:bb"]
117
+ assert_equal aa, @tm["a:aa"]
118
+ assert_equal xx, @tm["xx"]
119
+ assert_equal bot_z, @tm["z"]
120
+ assert_equal mid_z, @tm["^z"]
121
+ assert_equal top_z, @tm["^^z"]
122
+ assert_equal top_z, @tm["^^^z"] # Over the top
123
+ assert_equal top_z, @tm["rake:z"]
124
+ end
125
+
126
+ assert_equal Rake::Scope.make("a"), @tm.current_scope
127
+
128
+ assert_equal bb, @tm["a:b:bb"]
129
+ assert_equal aa, @tm["a:aa"]
130
+ assert_equal xx, @tm["xx"]
131
+ assert_equal bb, @tm["b:bb"]
132
+ assert_equal aa, @tm["aa"]
133
+ assert_equal mid_z, @tm["z"]
134
+ assert_equal top_z, @tm["^z"]
135
+ assert_equal top_z, @tm["^^z"] # Over the top
136
+ assert_equal top_z, @tm["rake:z"]
137
+ assert_equal ns_d, @tm["n:t"]
138
+ assert_equal ns_d, @tm["a:n:t"]
139
+ end
140
+
141
+ assert_equal Rake::Scope.make, @tm.current_scope
142
+
143
+ assert_equal Rake::Scope.make, xx.scope
144
+ assert_equal Rake::Scope.make('a'), aa.scope
145
+ assert_equal Rake::Scope.make('b', 'a'), bb.scope
146
+ end
147
+
148
+ def test_lookup_with_explicit_scopes
149
+ t1, t2, t3, s = (0...4).map { nil }
150
+ t1 = @tm.define_task(Rake::Task, :t)
151
+ @tm.in_namespace("a") do
152
+ t2 = @tm.define_task(Rake::Task, :t)
153
+ s = @tm.define_task(Rake::Task, :s)
154
+ @tm.in_namespace("b") do
155
+ t3 = @tm.define_task(Rake::Task, :t)
156
+ end
157
+ end
158
+ assert_equal t1, @tm[:t, Rake::Scope.make]
159
+ assert_equal t2, @tm[:t, Rake::Scope.make("a")]
160
+ assert_equal t3, @tm[:t, Rake::Scope.make("b", "a")]
161
+ assert_equal s, @tm[:s, Rake::Scope.make("b", "a")]
162
+ assert_equal s, @tm[:s, Rake::Scope.make("a")]
163
+ end
164
+
165
+ def test_correctly_scoped_prerequisites_are_invoked
166
+ values = []
167
+ @tm = Rake::Application.new
168
+ @tm.define_task(Rake::Task, :z) do values << "top z" end
169
+ @tm.in_namespace("a") do
170
+ @tm.define_task(Rake::Task, :z) do values << "next z" end
171
+ @tm.define_task(Rake::Task, :x => :z)
172
+ end
173
+
174
+ @tm["a:x"].invoke
175
+ assert_equal ["next z"], values
176
+ end
177
+
178
+ end
@@ -0,0 +1,19 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestRakeTaskManagerArgumentResolution < Rake::TestCase
4
+
5
+ def test_good_arg_patterns
6
+ assert_equal [:t, [], []], task(:t)
7
+ assert_equal [:t, [], [:x]], task(:t => :x)
8
+ assert_equal [:t, [], [:x, :y]], task(:t => [:x, :y])
9
+
10
+ assert_equal [:t, [:a, :b], []], task(:t, [:a, :b])
11
+ assert_equal [:t, [:a, :b], [:x]], task(:t, [:a, :b] => :x)
12
+ assert_equal [:t, [:a, :b], [:x, :y]], task(:t, [:a, :b] => [:x, :y])
13
+ end
14
+
15
+ def task(*args)
16
+ tm = Rake::TestCase::TaskManager.new
17
+ tm.resolve_args(args)
18
+ end
19
+ end
@@ -0,0 +1,171 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestRakeTaskWithArguments < Rake::TestCase
4
+ include Rake
5
+
6
+ def setup
7
+ super
8
+
9
+ Task.clear
10
+ Rake::TaskManager.record_task_metadata = true
11
+ end
12
+
13
+ def teardown
14
+ Rake::TaskManager.record_task_metadata = false
15
+
16
+ super
17
+ end
18
+
19
+ def test_no_args_given
20
+ t = task :t
21
+ assert_equal [], t.arg_names
22
+ end
23
+
24
+ def test_args_given
25
+ t = task :t, :a, :b
26
+ assert_equal [:a, :b], t.arg_names
27
+ end
28
+
29
+ def test_name_and_needs
30
+ t = task(:t => [:pre])
31
+ assert_equal "t", t.name
32
+ assert_equal [], t.arg_names
33
+ assert_equal ["pre"], t.prerequisites
34
+ end
35
+
36
+ def test_name_args_and_prereqs
37
+ t = task(:t, [:x, :y] => [:pre])
38
+ assert_equal "t", t.name
39
+ assert_equal [:x, :y], t.arg_names
40
+ assert_equal ["pre"], t.prerequisites
41
+ end
42
+
43
+ def test_arg_list_is_empty_if_no_args_given
44
+ t = task(:t) { |tt, args| assert_equal({}, args.to_hash) }
45
+ t.invoke(1, 2, 3)
46
+ end
47
+
48
+ def test_tasks_can_access_arguments_as_hash
49
+ t = task :t, :a, :b, :c do |tt, args|
50
+ assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash)
51
+ assert_equal 1, args[:a]
52
+ assert_equal 2, args[:b]
53
+ assert_equal 3, args[:c]
54
+ assert_equal 1, args.a
55
+ assert_equal 2, args.b
56
+ assert_equal 3, args.c
57
+ end
58
+ t.invoke(1, 2, 3)
59
+ end
60
+
61
+ def test_actions_of_various_arity_are_ok_with_args
62
+ notes = []
63
+ t = task(:t, :x) do
64
+ notes << :a
65
+ end
66
+ t.enhance do | |
67
+ notes << :b
68
+ end
69
+ t.enhance do |task|
70
+ notes << :c
71
+ assert_kind_of Task, task
72
+ end
73
+ t.enhance do |t2, args|
74
+ notes << :d
75
+ assert_equal t, t2
76
+ assert_equal({:x => 1}, args.to_hash)
77
+ end
78
+ t.invoke(1)
79
+ assert_equal [:a, :b, :c, :d], notes
80
+ end
81
+
82
+ def test_arguments_are_passed_to_block
83
+ t = task(:t, :a, :b) { |tt, args|
84
+ assert_equal({ :a => 1, :b => 2 }, args.to_hash)
85
+ }
86
+ t.invoke(1, 2)
87
+ end
88
+
89
+ def test_extra_parameters_are_ignored
90
+ t = task(:t, :a) { |tt, args|
91
+ assert_equal 1, args.a
92
+ assert_nil args.b
93
+ }
94
+ t.invoke(1, 2)
95
+ end
96
+
97
+ def test_arguments_are_passed_to_all_blocks
98
+ counter = 0
99
+ t = task :t, :a
100
+ task :t do |tt, args|
101
+ assert_equal 1, args.a
102
+ counter += 1
103
+ end
104
+ task :t do |tt, args|
105
+ assert_equal 1, args.a
106
+ counter += 1
107
+ end
108
+ t.invoke(1)
109
+ assert_equal 2, counter
110
+ end
111
+
112
+ def test_block_with_no_parameters_is_ok
113
+ t = task(:t) { }
114
+ t.invoke(1, 2)
115
+ end
116
+
117
+ def test_name_with_args
118
+ desc "T"
119
+ t = task(:tt, :a, :b)
120
+ assert_equal "tt", t.name
121
+ assert_equal "T", t.comment
122
+ assert_equal "[a,b]", t.arg_description
123
+ assert_equal "tt[a,b]", t.name_with_args
124
+ assert_equal [:a, :b], t.arg_names
125
+ end
126
+
127
+ def test_named_args_are_passed_to_prereqs
128
+ value = nil
129
+ task(:pre, :rev) { |t, args| value = args.rev }
130
+ t = task(:t, [:name, :rev] => [:pre])
131
+ t.invoke("bill", "1.2")
132
+ assert_equal "1.2", value
133
+ end
134
+
135
+ def test_args_not_passed_if_no_prereq_names_on_task
136
+ task(:pre) { |t, args|
137
+ assert_equal({}, args.to_hash)
138
+ assert_equal "bill", args.name
139
+ }
140
+ t = task(:t, [:name, :rev] => [:pre])
141
+ t.invoke("bill", "1.2")
142
+ end
143
+
144
+ def test_args_not_passed_if_no_prereq_names_on_multitask
145
+ task(:pre) { |t, args|
146
+ assert_equal({}, args.to_hash)
147
+ assert_equal "bill", args.name
148
+ }
149
+ t = multitask(:t, [:name, :rev] => [:pre])
150
+ t.invoke("bill", "1.2")
151
+ end
152
+
153
+ def test_args_not_passed_if_no_arg_names
154
+ task(:pre, :rev) { |t, args|
155
+ assert_equal({}, args.to_hash)
156
+ }
157
+ t = task(:t => [:pre])
158
+ t.invoke("bill", "1.2")
159
+ end
160
+
161
+ def test_values_at
162
+ t = task(:pre, [:a, :b, :c]) { |task, args|
163
+ a, b, c = args.values_at(:a, :b, :c)
164
+ assert_equal %w[1 2 3], [a, b, c]
165
+ }
166
+
167
+ t.invoke(*%w[1 2 3])
168
+
169
+ # HACK no assertions
170
+ end
171
+ end
@@ -0,0 +1,141 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+ require 'rake/testtask'
3
+
4
+ class TestRakeTestTask < Rake::TestCase
5
+ include Rake
6
+
7
+ def test_initialize
8
+ tt = Rake::TestTask.new do |t| end
9
+ refute_nil tt
10
+ assert_equal :test, tt.name
11
+ assert_equal ['lib'], tt.libs
12
+ assert_equal 'test/test*.rb', tt.pattern
13
+ assert_equal false, tt.verbose
14
+ assert Task.task_defined?(:test)
15
+ end
16
+
17
+ def test_initialize_override
18
+ tt = Rake::TestTask.new(:example) do |t|
19
+ t.description = "Run example tests"
20
+ t.libs = ['src', 'ext']
21
+ t.pattern = 'test/tc_*.rb'
22
+ t.verbose = true
23
+ end
24
+ refute_nil tt
25
+ assert_equal "Run example tests", tt.description
26
+ assert_equal :example, tt.name
27
+ assert_equal ['src', 'ext'], tt.libs
28
+ assert_equal 'test/tc_*.rb', tt.pattern
29
+ assert_equal true, tt.verbose
30
+ assert Task.task_defined?(:example)
31
+ end
32
+
33
+ def test_file_list_env_test
34
+ ENV['TEST'] = 'testfile.rb'
35
+ tt = Rake::TestTask.new do |t|
36
+ t.pattern = '*'
37
+ end
38
+
39
+ assert_equal ["testfile.rb"], tt.file_list.to_a
40
+ ensure
41
+ ENV.delete 'TEST'
42
+ end
43
+
44
+ def test_libs_equals
45
+ test_task = Rake::TestTask.new do |t|
46
+ t.libs << ["A", "B"]
47
+ end
48
+
49
+ path = %w[lib A B].join File::PATH_SEPARATOR
50
+
51
+ assert_equal "-I\"#{path}\"", test_task.ruby_opts_string
52
+ end
53
+
54
+ def test_libs_equals_empty
55
+ test_task = Rake::TestTask.new do |t|
56
+ t.libs = []
57
+ end
58
+
59
+ assert_equal '', test_task.ruby_opts_string
60
+ end
61
+
62
+ def test_pattern_equals
63
+ tt = Rake::TestTask.new do |t|
64
+ t.pattern = '*.rb'
65
+ end
66
+ assert_equal ['*.rb'], tt.file_list.to_a
67
+ end
68
+
69
+ def test_pattern_equals_test_files_equals
70
+ tt = Rake::TestTask.new do |t|
71
+ t.test_files = FileList['a.rb', 'b.rb']
72
+ t.pattern = '*.rb'
73
+ end
74
+ assert_equal ['a.rb', 'b.rb', '*.rb'], tt.file_list.to_a
75
+ end
76
+
77
+ def test_run_code_direct
78
+ test_task = Rake::TestTask.new do |t|
79
+ t.loader = :direct
80
+ end
81
+
82
+ assert_equal '-e "ARGV.each{|f| require f}"', test_task.run_code
83
+ end
84
+
85
+ def test_run_code_rake
86
+ spec = Gem::Specification.new 'rake', 0
87
+ spec.loaded_from = File.join Gem::Specification.dirs.last, 'rake-0.gemspec'
88
+ rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], spec
89
+
90
+ test_task = Rake::TestTask.new do |t|
91
+ t.loader = :rake
92
+ end
93
+
94
+ assert_match(/\A-I".*?" ".*?"\Z/, test_task.run_code)
95
+ ensure
96
+ Gem.loaded_specs['rake'] = rake
97
+ end
98
+
99
+ def test_run_code_rake_default_gem
100
+ default_spec = Gem::Specification.new 'rake', 0
101
+ default_spec.loaded_from = File.join Gem::Specification.default_specifications_dir, 'rake-0.gemspec'
102
+ rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], default_spec
103
+
104
+ test_task = Rake::TestTask.new do |t|
105
+ t.loader = :rake
106
+ end
107
+
108
+ assert_match(/\A ".*?"\Z/, test_task.run_code)
109
+ ensure
110
+ Gem.loaded_specs['rake'] = rake
111
+ end
112
+
113
+ def test_run_code_testrb_ruby_1_8_2
114
+ test_task = Rake::TestTask.new do |t|
115
+ t.loader = :testrb
116
+ end
117
+
118
+ def test_task.ruby_version() '1.8.2' end
119
+
120
+ assert_match(/^-S testrb +".*"$/, test_task.run_code)
121
+ end
122
+
123
+ def test_run_code_testrb_ruby_1_8_6
124
+ test_task = Rake::TestTask.new do |t|
125
+ t.loader = :testrb
126
+ end
127
+
128
+ def test_task.ruby_version() '1.8.6' end
129
+
130
+ assert_match(/^-S testrb +$/, test_task.run_code)
131
+ end
132
+
133
+ def test_test_files_equals
134
+ tt = Rake::TestTask.new do |t|
135
+ t.test_files = FileList['a.rb', 'b.rb']
136
+ end
137
+
138
+ assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a
139
+ end
140
+
141
+ end
@@ -0,0 +1,142 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+ require 'rake/thread_pool'
3
+ require 'test/unit/assertions'
4
+
5
+ class TestRakeTestThreadPool < Rake::TestCase
6
+ include Rake
7
+
8
+ def test_pool_executes_in_current_thread_for_zero_threads
9
+ pool = ThreadPool.new(0)
10
+ f = pool.future { Thread.current }
11
+ pool.join
12
+ assert_equal Thread.current, f.value
13
+ end
14
+
15
+ def test_pool_executes_in_other_thread_for_pool_of_size_one
16
+ pool = ThreadPool.new(1)
17
+ f = pool.future { Thread.current }
18
+ pool.join
19
+ refute_equal Thread.current, f.value
20
+ end
21
+
22
+ def test_pool_executes_in_two_other_threads_for_pool_of_size_two
23
+ pool = ThreadPool.new(2)
24
+ threads = 2.times.map {
25
+ pool.future {
26
+ sleep 0.1
27
+ Thread.current
28
+ }
29
+ }.each { |f|
30
+ f.value
31
+ }
32
+
33
+ refute_equal threads[0], threads[1]
34
+ refute_equal Thread.current, threads[0]
35
+ refute_equal Thread.current, threads[1]
36
+ end
37
+
38
+ def test_pool_creates_the_correct_number_of_threads
39
+ pool = ThreadPool.new(2)
40
+ threads = Set.new
41
+ t_mutex = Mutex.new
42
+ 10.times.each do
43
+ pool.future do
44
+ sleep 0.02
45
+ t_mutex.synchronize { threads << Thread.current }
46
+ end
47
+ end
48
+ pool.join
49
+ assert_equal 2, threads.count
50
+ end
51
+
52
+ def test_pool_future_does_not_duplicate_arguments
53
+ pool = ThreadPool.new(2)
54
+ obj = Object.new
55
+ captured = nil
56
+ pool.future(obj) { |var| captured = var }
57
+ pool.join
58
+ assert_equal obj, captured
59
+ end
60
+
61
+ def test_pool_join_empties_queue
62
+ pool = ThreadPool.new(2)
63
+ repeat = 25
64
+ repeat.times {
65
+ pool.future do
66
+ repeat.times {
67
+ pool.future do
68
+ repeat.times {
69
+ pool.future do end
70
+ }
71
+ end
72
+ }
73
+ end
74
+ }
75
+
76
+ pool.join
77
+ assert_equal(
78
+ true,
79
+ pool.__send__(:__queue__).empty?,
80
+ "queue should be empty")
81
+ end
82
+
83
+ CustomError = Class.new(StandardError)
84
+
85
+ # test that throwing an exception way down in the blocks propagates
86
+ # to the top
87
+ def test_exceptions
88
+ pool = ThreadPool.new(10)
89
+
90
+ deep_exception_block = lambda do |count|
91
+ raise CustomError if count < 1
92
+ pool.future(count - 1, &deep_exception_block).value
93
+ end
94
+
95
+ assert_raises(CustomError) do
96
+ pool.future(2, &deep_exception_block).value
97
+ end
98
+ end
99
+
100
+ def test_pool_prevents_deadlock
101
+ pool = ThreadPool.new(5)
102
+
103
+ common_dependency_a = pool.future { sleep 0.2 }
104
+ futures_a = 10.times.map {
105
+ pool.future {
106
+ common_dependency_a.value
107
+ sleep(rand() * 0.01)
108
+ }
109
+ }
110
+
111
+ common_dependency_b = pool.future { futures_a.each { |f| f.value } }
112
+ futures_b = 10.times.map {
113
+ pool.future {
114
+ common_dependency_b.value
115
+ sleep(rand() * 0.01)
116
+ }
117
+ }
118
+
119
+ futures_b.each { |f| f.value }
120
+ pool.join
121
+ end
122
+
123
+ def test_pool_reports_correct_results
124
+ pool = ThreadPool.new(7)
125
+
126
+ a = 18
127
+ b = 5
128
+ c = 3
129
+
130
+ result = a.times.map do
131
+ pool.future do
132
+ b.times.map do
133
+ pool.future { sleep rand * 0.001; c }
134
+ end.reduce(0) { |m, f| m + f.value }
135
+ end
136
+ end.reduce(0) { |m, f| m + f.value }
137
+
138
+ assert_equal a * b * c, result
139
+ pool.join
140
+ end
141
+
142
+ end