gemrage 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (165) hide show
  1. data/Gemfile +1 -0
  2. data/Gemfile.lock +6 -0
  3. data/VERSION +1 -1
  4. data/gemrage.gemspec +160 -2
  5. data/lib/rubygems/commands/scan_command.rb +26 -7
  6. data/spec/spec_helper.rb +2 -1
  7. data/vendor/ruby/1.8/bin/launchy +19 -0
  8. data/vendor/ruby/1.8/bin/rake +19 -0
  9. data/vendor/ruby/1.8/cache/configuration-1.1.0.gem +0 -0
  10. data/vendor/ruby/1.8/cache/launchy-0.3.7.gem +0 -0
  11. data/vendor/ruby/1.8/cache/rake-0.8.7.gem +0 -0
  12. data/vendor/ruby/1.8/gems/configuration-1.1.0/README +197 -0
  13. data/vendor/ruby/1.8/gems/configuration-1.1.0/README.erb +69 -0
  14. data/vendor/ruby/1.8/gems/configuration-1.1.0/Rakefile +241 -0
  15. data/vendor/ruby/1.8/gems/configuration-1.1.0/config/a.rb +5 -0
  16. data/vendor/ruby/1.8/gems/configuration-1.1.0/config/b.rb +19 -0
  17. data/vendor/ruby/1.8/gems/configuration-1.1.0/config/c.rb +8 -0
  18. data/vendor/ruby/1.8/gems/configuration-1.1.0/config/d.rb +5 -0
  19. data/vendor/ruby/1.8/gems/configuration-1.1.0/config/e.rb +13 -0
  20. data/vendor/ruby/1.8/gems/configuration-1.1.0/configuration.gemspec +28 -0
  21. data/vendor/ruby/1.8/gems/configuration-1.1.0/lib/configuration.rb +199 -0
  22. data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/a.rb +11 -0
  23. data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/b.rb +11 -0
  24. data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/c.rb +11 -0
  25. data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/d.rb +14 -0
  26. data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/e.rb +12 -0
  27. data/vendor/ruby/1.8/gems/launchy-0.3.7/HISTORY +71 -0
  28. data/vendor/ruby/1.8/gems/launchy-0.3.7/LICENSE +16 -0
  29. data/vendor/ruby/1.8/gems/launchy-0.3.7/README +53 -0
  30. data/vendor/ruby/1.8/gems/launchy-0.3.7/Rakefile +62 -0
  31. data/vendor/ruby/1.8/gems/launchy-0.3.7/bin/launchy +12 -0
  32. data/vendor/ruby/1.8/gems/launchy-0.3.7/gemspec.rb +41 -0
  33. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/application.rb +178 -0
  34. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/browser.rb +98 -0
  35. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/command_line.rb +48 -0
  36. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/paths.rb +53 -0
  37. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/version.rb +17 -0
  38. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy.rb +53 -0
  39. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/application_spec.rb +62 -0
  40. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/browser_spec.rb +58 -0
  41. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/launchy_spec.rb +18 -0
  42. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/paths_spec.rb +15 -0
  43. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/spec_helper.rb +5 -0
  44. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/tattle-host-os.yml +427 -0
  45. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/version_spec.rb +11 -0
  46. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/announce.rake +39 -0
  47. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/config.rb +107 -0
  48. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/distribution.rake +46 -0
  49. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/documentation.rake +32 -0
  50. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/rspec.rake +37 -0
  51. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/rubyforge.rake +52 -0
  52. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/utils.rb +80 -0
  53. data/vendor/ruby/1.8/gems/rake-0.8.7/CHANGES +440 -0
  54. data/vendor/ruby/1.8/gems/rake-0.8.7/MIT-LICENSE +21 -0
  55. data/vendor/ruby/1.8/gems/rake-0.8.7/README +196 -0
  56. data/vendor/ruby/1.8/gems/rake-0.8.7/Rakefile +430 -0
  57. data/vendor/ruby/1.8/gems/rake-0.8.7/TODO +20 -0
  58. data/vendor/ruby/1.8/gems/rake-0.8.7/bin/rake +31 -0
  59. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/command_line_usage.rdoc +102 -0
  60. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile1 +38 -0
  61. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile2 +35 -0
  62. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/a.c +6 -0
  63. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/b.c +6 -0
  64. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/main.c +11 -0
  65. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/glossary.rdoc +51 -0
  66. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/jamis.rb +591 -0
  67. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/proto_rake.rdoc +127 -0
  68. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/rake.1.gz +0 -0
  69. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/rakefile.rdoc +534 -0
  70. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/rational.rdoc +151 -0
  71. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc +23 -0
  72. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc +35 -0
  73. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc +53 -0
  74. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc +78 -0
  75. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc +46 -0
  76. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc +141 -0
  77. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc +119 -0
  78. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc +59 -0
  79. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc +121 -0
  80. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc +47 -0
  81. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc +114 -0
  82. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc +165 -0
  83. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc +112 -0
  84. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc +147 -0
  85. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc +53 -0
  86. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc +55 -0
  87. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc +55 -0
  88. data/vendor/ruby/1.8/gems/rake-0.8.7/install.rb +88 -0
  89. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/alt_system.rb +108 -0
  90. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/classic_namespace.rb +8 -0
  91. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/clean.rb +33 -0
  92. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb +24 -0
  93. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb +153 -0
  94. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/publisher.rb +75 -0
  95. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  96. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb +47 -0
  97. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sys.rb +209 -0
  98. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/gempackagetask.rb +97 -0
  99. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/loaders/makefile.rb +42 -0
  100. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/packagetask.rb +184 -0
  101. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb +5 -0
  102. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/rdoctask.rb +209 -0
  103. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb +23 -0
  104. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/runtest.rb +23 -0
  105. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/tasklib.rb +23 -0
  106. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/testtask.rb +161 -0
  107. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/win32.rb +55 -0
  108. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake.rb +2506 -0
  109. data/vendor/ruby/1.8/gems/rake-0.8.7/test/capture_stdout.rb +26 -0
  110. data/vendor/ruby/1.8/gems/rake-0.8.7/test/check_expansion.rb +5 -0
  111. data/vendor/ruby/1.8/gems/rake-0.8.7/test/check_no_expansion.rb +5 -0
  112. data/vendor/ruby/1.8/gems/rake-0.8.7/test/contrib/test_sys.rb +47 -0
  113. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/chains/Rakefile +15 -0
  114. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/default/Rakefile +19 -0
  115. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/dryrun/Rakefile +22 -0
  116. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/file_creation_task/Rakefile +33 -0
  117. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/imports/Rakefile +19 -0
  118. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/imports/deps.mf +1 -0
  119. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/multidesc/Rakefile +17 -0
  120. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/namespace/Rakefile +57 -0
  121. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/rakelib/test1.rb +3 -0
  122. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/rbext/rakefile.rb +3 -0
  123. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/sample.mf +14 -0
  124. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/statusreturn/Rakefile +8 -0
  125. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/unittest/Rakefile +1 -0
  126. data/vendor/ruby/1.8/gems/rake-0.8.7/test/filecreation.rb +32 -0
  127. data/vendor/ruby/1.8/gems/rake-0.8.7/test/functional.rb +15 -0
  128. data/vendor/ruby/1.8/gems/rake-0.8.7/test/in_environment.rb +30 -0
  129. data/vendor/ruby/1.8/gems/rake-0.8.7/test/rake_test_setup.rb +24 -0
  130. data/vendor/ruby/1.8/gems/rake-0.8.7/test/reqfile.rb +3 -0
  131. data/vendor/ruby/1.8/gems/rake-0.8.7/test/reqfile2.rb +3 -0
  132. data/vendor/ruby/1.8/gems/rake-0.8.7/test/session_functional.rb +339 -0
  133. data/vendor/ruby/1.8/gems/rake-0.8.7/test/shellcommand.rb +3 -0
  134. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_application.rb +675 -0
  135. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_clean.rb +14 -0
  136. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_definitions.rb +85 -0
  137. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_earlytime.rb +35 -0
  138. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_extension.rb +63 -0
  139. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_file_creation_task.rb +62 -0
  140. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_file_task.rb +143 -0
  141. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_filelist.rb +623 -0
  142. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_fileutils.rb +251 -0
  143. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_ftp.rb +59 -0
  144. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_invocation_chain.rb +81 -0
  145. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_makefile_loader.rb +26 -0
  146. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_multitask.rb +45 -0
  147. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_namespace.rb +55 -0
  148. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_package_task.rb +118 -0
  149. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_pathmap.rb +210 -0
  150. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_pseudo_status.rb +26 -0
  151. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_rake.rb +41 -0
  152. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_rdoc_task.rb +88 -0
  153. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_require.rb +35 -0
  154. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_rules.rb +349 -0
  155. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_task_arguments.rb +89 -0
  156. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_task_manager.rb +173 -0
  157. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_tasklib.rb +12 -0
  158. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_tasks.rb +374 -0
  159. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_test_task.rb +77 -0
  160. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_top_level_functions.rb +86 -0
  161. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_win32.rb +72 -0
  162. data/vendor/ruby/1.8/specifications/configuration-1.1.0.gemspec +27 -0
  163. data/vendor/ruby/1.8/specifications/launchy-0.3.7.gemspec +44 -0
  164. data/vendor/ruby/1.8/specifications/rake-0.8.7.gemspec +32 -0
  165. metadata +163 -5
@@ -0,0 +1,675 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'rubygems'
5
+ rescue LoadError
6
+ # got no gems
7
+ end
8
+
9
+ require 'test/unit'
10
+ require 'rake'
11
+ require 'test/rake_test_setup'
12
+ require 'test/capture_stdout'
13
+ require 'test/in_environment'
14
+
15
+ TESTING_REQUIRE = [ ]
16
+
17
+ ######################################################################
18
+ class TestApplication < Test::Unit::TestCase
19
+ include CaptureStdout
20
+ include InEnvironment
21
+ include TestMethods
22
+
23
+ def setup
24
+ @app = Rake::Application.new
25
+ @app.options.rakelib = []
26
+ end
27
+
28
+ def test_constant_warning
29
+ err = capture_stderr do @app.instance_eval { const_warning("Task") } end
30
+ assert_match(/warning/i, err)
31
+ assert_match(/deprecated/i, err)
32
+ assert_match(/Task/i, err)
33
+ end
34
+
35
+ def test_display_tasks
36
+ @app.options.show_task_pattern = //
37
+ @app.last_description = "COMMENT"
38
+ @app.define_task(Rake::Task, "t")
39
+ out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
40
+ assert_match(/^rake t/, out)
41
+ assert_match(/# COMMENT/, out)
42
+ end
43
+
44
+ def test_display_tasks_with_long_comments
45
+ in_environment('RAKE_COLUMNS' => '80') do
46
+ @app.options.show_task_pattern = //
47
+ @app.last_description = "1234567890" * 8
48
+ @app.define_task(Rake::Task, "t")
49
+ out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
50
+ assert_match(/^rake t/, out)
51
+ assert_match(/# 12345678901234567890123456789012345678901234567890123456789012345\.\.\./, out)
52
+ end
53
+ end
54
+
55
+ def test_display_tasks_with_task_name_wider_than_tty_display
56
+ in_environment('RAKE_COLUMNS' => '80') do
57
+ @app.options.show_task_pattern = //
58
+ description = "something short"
59
+ task_name = "task name" * 80
60
+ @app.last_description = "something short"
61
+ @app.define_task(Rake::Task, task_name )
62
+ out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
63
+ # Ensure the entire task name is output and we end up showing no description
64
+ assert_match(/rake #{task_name} # .../, out)
65
+ end
66
+ end
67
+
68
+ def test_display_tasks_with_very_long_task_name_to_a_non_tty_shows_name_and_comment
69
+ @app.options.show_task_pattern = //
70
+ @app.tty_output = false
71
+ description = "something short"
72
+ task_name = "task name" * 80
73
+ @app.last_description = "something short"
74
+ @app.define_task(Rake::Task, task_name )
75
+ out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
76
+ # Ensure the entire task name is output and we end up showing no description
77
+ assert_match(/rake #{task_name} # #{description}/, out)
78
+ end
79
+
80
+ def test_display_tasks_with_long_comments_to_a_non_tty_shows_entire_comment
81
+ @app.options.show_task_pattern = //
82
+ @app.tty_output = false
83
+ @app.last_description = "1234567890" * 8
84
+ @app.define_task(Rake::Task, "t")
85
+ out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
86
+ assert_match(/^rake t/, out)
87
+ assert_match(/# #{@app.last_description}/, out)
88
+ end
89
+
90
+ def test_display_tasks_with_long_comments_to_a_non_tty_with_columns_set_truncates_comments
91
+ in_environment("RAKE_COLUMNS" => '80') do
92
+ @app.options.show_task_pattern = //
93
+ @app.tty_output = false
94
+ @app.last_description = "1234567890" * 8
95
+ @app.define_task(Rake::Task, "t")
96
+ out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
97
+ assert_match(/^rake t/, out)
98
+ assert_match(/# 12345678901234567890123456789012345678901234567890123456789012345\.\.\./, out)
99
+ end
100
+ end
101
+
102
+ def test_display_tasks_with_full_descriptions
103
+ @app.options.show_task_pattern = //
104
+ @app.options.full_description = true
105
+ @app.last_description = "COMMENT"
106
+ @app.define_task(Rake::Task, "t")
107
+ out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
108
+ assert_match(/^rake t$/, out)
109
+ assert_match(/^ {4}COMMENT$/, out)
110
+ end
111
+
112
+ def test_finding_rakefile
113
+ assert_match(/Rakefile/i, @app.instance_eval { have_rakefile })
114
+ end
115
+
116
+ def test_not_finding_rakefile
117
+ @app.instance_eval { @rakefiles = ['NEVER_FOUND'] }
118
+ assert( ! @app.instance_eval do have_rakefile end )
119
+ assert_nil @app.rakefile
120
+ end
121
+
122
+ def test_load_rakefile
123
+ in_environment("PWD" => "test/data/unittest") do
124
+ @app.instance_eval do
125
+ handle_options
126
+ options.silent = true
127
+ load_rakefile
128
+ end
129
+ assert_equal "rakefile", @app.rakefile.downcase
130
+ assert_match(%r(unittest$), Dir.pwd)
131
+ end
132
+ end
133
+
134
+ def test_load_rakefile_from_subdir
135
+ in_environment("PWD" => "test/data/unittest/subdir") do
136
+ @app.instance_eval do
137
+ handle_options
138
+ options.silent = true
139
+ load_rakefile
140
+ end
141
+ assert_equal "rakefile", @app.rakefile.downcase
142
+ assert_match(%r(unittest$), Dir.pwd)
143
+ end
144
+ end
145
+
146
+ def test_load_rakefile_not_found
147
+ in_environment("PWD" => "/", "RAKE_SYSTEM" => 'not_exist') do
148
+ @app.instance_eval do
149
+ handle_options
150
+ options.silent = true
151
+ end
152
+ ex = assert_exception(RuntimeError) do
153
+ @app.instance_eval do raw_load_rakefile end
154
+ end
155
+ assert_match(/no rakefile found/i, ex.message)
156
+ end
157
+ end
158
+
159
+ def test_load_from_system_rakefile
160
+ in_environment('RAKE_SYSTEM' => 'test/data/sys') do
161
+ @app.options.rakelib = []
162
+ @app.instance_eval do
163
+ handle_options
164
+ options.silent = true
165
+ options.load_system = true
166
+ options.rakelib = []
167
+ load_rakefile
168
+ end
169
+ assert_equal "test/data/sys", @app.system_dir
170
+ assert_nil @app.rakefile
171
+ end
172
+ end
173
+
174
+ def test_windows
175
+ assert ! (@app.windows? && @app.unix?)
176
+ end
177
+
178
+ def test_loading_imports
179
+ mock = flexmock("loader")
180
+ mock.should_receive(:load).with("x.dummy").once
181
+ @app.instance_eval do
182
+ add_loader("dummy", mock)
183
+ add_import("x.dummy")
184
+ load_imports
185
+ end
186
+ end
187
+
188
+ def test_building_imported_files_on_demand
189
+ mock = flexmock("loader")
190
+ mock.should_receive(:load).with("x.dummy").once
191
+ mock.should_receive(:make_dummy).with_no_args.once
192
+ @app.instance_eval do
193
+ intern(Rake::Task, "x.dummy").enhance do mock.make_dummy end
194
+ add_loader("dummy", mock)
195
+ add_import("x.dummy")
196
+ load_imports
197
+ end
198
+ end
199
+
200
+ def test_handle_options_should_strip_options_from_ARGV
201
+ assert !@app.options.trace
202
+
203
+ valid_option = '--trace'
204
+ ARGV.clear
205
+ ARGV << valid_option
206
+
207
+ @app.handle_options
208
+
209
+ assert !ARGV.include?(valid_option)
210
+ assert @app.options.trace
211
+ end
212
+
213
+ def test_good_run
214
+ ran = false
215
+ ARGV.clear
216
+ ARGV << '--rakelib=""'
217
+ @app.options.silent = true
218
+ @app.instance_eval do
219
+ intern(Rake::Task, "default").enhance { ran = true }
220
+ end
221
+ in_environment("PWD" => "test/data/default") do
222
+ @app.run
223
+ end
224
+ assert ran
225
+ end
226
+
227
+ def test_display_task_run
228
+ ran = false
229
+ ARGV.clear
230
+ ARGV << '-f' << '-s' << '--tasks' << '--rakelib=""'
231
+ @app.last_description = "COMMENT"
232
+ @app.define_task(Rake::Task, "default")
233
+ out = capture_stdout { @app.run }
234
+ assert @app.options.show_tasks
235
+ assert ! ran
236
+ assert_match(/rake default/, out)
237
+ assert_match(/# COMMENT/, out)
238
+ end
239
+
240
+ def test_display_prereqs
241
+ ran = false
242
+ ARGV.clear
243
+ ARGV << '-f' << '-s' << '--prereqs' << '--rakelib=""'
244
+ @app.last_description = "COMMENT"
245
+ t = @app.define_task(Rake::Task, "default")
246
+ t.enhance([:a, :b])
247
+ @app.define_task(Rake::Task, "a")
248
+ @app.define_task(Rake::Task, "b")
249
+ out = capture_stdout { @app.run }
250
+ assert @app.options.show_prereqs
251
+ assert ! ran
252
+ assert_match(/rake a$/, out)
253
+ assert_match(/rake b$/, out)
254
+ assert_match(/rake default\n( *(a|b)\n){2}/m, out)
255
+ end
256
+
257
+ def test_bad_run
258
+ @app.intern(Rake::Task, "default").enhance { fail }
259
+ ARGV.clear
260
+ ARGV << '-f' << '-s' << '--rakelib=""'
261
+ assert_exception(SystemExit) {
262
+ err = capture_stderr { @app.run }
263
+ assert_match(/see full trace/, err)
264
+ }
265
+ ensure
266
+ ARGV.clear
267
+ end
268
+
269
+ def test_bad_run_with_trace
270
+ @app.intern(Rake::Task, "default").enhance { fail }
271
+ ARGV.clear
272
+ ARGV << '-f' << '-s' << '-t'
273
+ assert_exception(SystemExit) {
274
+ err = capture_stderr { capture_stdout { @app.run } }
275
+ assert_no_match(/see full trace/, err)
276
+ }
277
+ ensure
278
+ ARGV.clear
279
+ end
280
+
281
+ def test_run_with_bad_options
282
+ @app.intern(Rake::Task, "default").enhance { fail }
283
+ ARGV.clear
284
+ ARGV << '-f' << '-s' << '--xyzzy'
285
+ assert_exception(SystemExit) {
286
+ err = capture_stderr { capture_stdout { @app.run } }
287
+ }
288
+ ensure
289
+ ARGV.clear
290
+ end
291
+ end
292
+
293
+
294
+ ######################################################################
295
+ class TestApplicationOptions < Test::Unit::TestCase
296
+ include CaptureStdout
297
+ include TestMethods
298
+
299
+ def setup
300
+ clear_argv
301
+ RakeFileUtils.verbose_flag = false
302
+ RakeFileUtils.nowrite_flag = false
303
+ TESTING_REQUIRE.clear
304
+ end
305
+
306
+ def teardown
307
+ clear_argv
308
+ RakeFileUtils.verbose_flag = false
309
+ RakeFileUtils.nowrite_flag = false
310
+ end
311
+
312
+ def clear_argv
313
+ while ! ARGV.empty?
314
+ ARGV.pop
315
+ end
316
+ end
317
+
318
+ def test_default_options
319
+ opts = command_line
320
+ assert_nil opts.classic_namespace
321
+ assert_nil opts.dryrun
322
+ assert_nil opts.full_description
323
+ assert_nil opts.ignore_system
324
+ assert_nil opts.load_system
325
+ assert_nil opts.nosearch
326
+ assert_equal ['rakelib'], opts.rakelib
327
+ assert_nil opts.show_prereqs
328
+ assert_nil opts.show_task_pattern
329
+ assert_nil opts.show_tasks
330
+ assert_nil opts.silent
331
+ assert_nil opts.trace
332
+ assert_equal ['rakelib'], opts.rakelib
333
+ assert ! RakeFileUtils.verbose_flag
334
+ assert ! RakeFileUtils.nowrite_flag
335
+ end
336
+
337
+ def test_dry_run
338
+ flags('--dry-run', '-n') do |opts|
339
+ assert opts.dryrun
340
+ assert opts.trace
341
+ assert RakeFileUtils.verbose_flag
342
+ assert RakeFileUtils.nowrite_flag
343
+ end
344
+ end
345
+
346
+ def test_describe
347
+ flags('--describe') do |opts|
348
+ assert opts.full_description
349
+ assert opts.show_tasks
350
+ assert_equal(//.to_s, opts.show_task_pattern.to_s)
351
+ end
352
+ end
353
+
354
+ def test_describe_with_pattern
355
+ flags('--describe=X') do |opts|
356
+ assert opts.full_description
357
+ assert opts.show_tasks
358
+ assert_equal(/X/.to_s, opts.show_task_pattern.to_s)
359
+ end
360
+ end
361
+
362
+ def test_execute
363
+ $xyzzy = 0
364
+ flags('--execute=$xyzzy=1', '-e $xyzzy=1') do |opts|
365
+ assert_equal 1, $xyzzy
366
+ assert_equal :exit, @exit
367
+ $xyzzy = 0
368
+ end
369
+ end
370
+
371
+ def test_execute_and_continue
372
+ $xyzzy = 0
373
+ flags('--execute-continue=$xyzzy=1', '-E $xyzzy=1') do |opts|
374
+ assert_equal 1, $xyzzy
375
+ assert_not_equal :exit, @exit
376
+ $xyzzy = 0
377
+ end
378
+ end
379
+
380
+ def test_execute_and_print
381
+ $xyzzy = 0
382
+ flags('--execute-print=$xyzzy="pugh"', '-p $xyzzy="pugh"') do |opts|
383
+ assert_equal 'pugh', $xyzzy
384
+ assert_equal :exit, @exit
385
+ assert_match(/^pugh$/, @out)
386
+ $xyzzy = 0
387
+ end
388
+ end
389
+
390
+ def test_help
391
+ flags('--help', '-H', '-h') do |opts|
392
+ assert_match(/\Arake/, @out)
393
+ assert_match(/\boptions\b/, @out)
394
+ assert_match(/\btargets\b/, @out)
395
+ assert_equal :exit, @exit
396
+ assert_equal :exit, @exit
397
+ end
398
+ end
399
+
400
+ def test_libdir
401
+ flags(['--libdir', 'xx'], ['-I', 'xx'], ['-Ixx']) do |opts|
402
+ $:.include?('xx')
403
+ end
404
+ ensure
405
+ $:.delete('xx')
406
+ end
407
+
408
+ def test_rakefile
409
+ flags(['--rakefile', 'RF'], ['--rakefile=RF'], ['-f', 'RF'], ['-fRF']) do |opts|
410
+ assert_equal ['RF'], @app.instance_eval { @rakefiles }
411
+ end
412
+ end
413
+
414
+ def test_rakelib
415
+ flags(['--rakelibdir', 'A:B:C'], ['--rakelibdir=A:B:C'], ['-R', 'A:B:C'], ['-RA:B:C']) do |opts|
416
+ assert_equal ['A', 'B', 'C'], opts.rakelib
417
+ end
418
+ end
419
+
420
+ def test_require
421
+ flags(['--require', 'test/reqfile'], '-rtest/reqfile2', '-rtest/reqfile3') do |opts|
422
+ end
423
+ assert TESTING_REQUIRE.include?(1)
424
+ assert TESTING_REQUIRE.include?(2)
425
+ assert TESTING_REQUIRE.include?(3)
426
+ assert_equal 3, TESTING_REQUIRE.size
427
+ end
428
+
429
+ def test_missing_require
430
+ ex = assert_exception(LoadError) do
431
+ flags(['--require', 'test/missing']) do |opts|
432
+ end
433
+ end
434
+ assert_match(/no such file/, ex.message)
435
+ assert_match(/test\/missing/, ex.message)
436
+ end
437
+
438
+ def test_prereqs
439
+ flags('--prereqs', '-P') do |opts|
440
+ assert opts.show_prereqs
441
+ end
442
+ end
443
+
444
+ def test_quiet
445
+ flags('--quiet', '-q') do |opts|
446
+ assert ! RakeFileUtils.verbose_flag
447
+ assert ! opts.silent
448
+ end
449
+ end
450
+
451
+ def test_no_search
452
+ flags('--nosearch', '--no-search', '-N') do |opts|
453
+ assert opts.nosearch
454
+ end
455
+ end
456
+
457
+ def test_silent
458
+ flags('--silent', '-s') do |opts|
459
+ assert ! RakeFileUtils.verbose_flag
460
+ assert opts.silent
461
+ end
462
+ end
463
+
464
+ def test_system
465
+ flags('--system', '-g') do |opts|
466
+ assert opts.load_system
467
+ end
468
+ end
469
+
470
+ def test_no_system
471
+ flags('--no-system', '-G') do |opts|
472
+ assert opts.ignore_system
473
+ end
474
+ end
475
+
476
+ def test_trace
477
+ flags('--trace', '-t') do |opts|
478
+ assert opts.trace
479
+ assert RakeFileUtils.verbose_flag
480
+ assert ! RakeFileUtils.nowrite_flag
481
+ end
482
+ end
483
+
484
+ def test_trace_rules
485
+ flags('--rules') do |opts|
486
+ assert opts.trace_rules
487
+ end
488
+ end
489
+
490
+ def test_tasks
491
+ flags('--tasks', '-T') do |opts|
492
+ assert opts.show_tasks
493
+ assert_equal(//.to_s, opts.show_task_pattern.to_s)
494
+ end
495
+ flags(['--tasks', 'xyz'], ['-Txyz']) do |opts|
496
+ assert opts.show_tasks
497
+ assert_equal(/xyz/, opts.show_task_pattern)
498
+ end
499
+ end
500
+
501
+ def test_verbose
502
+ flags('--verbose', '-V') do |opts|
503
+ assert RakeFileUtils.verbose_flag
504
+ assert ! opts.silent
505
+ end
506
+ end
507
+
508
+ def test_version
509
+ flags('--version', '-V') do |opts|
510
+ assert_match(/\bversion\b/, @out)
511
+ assert_match(/\b#{RAKEVERSION}\b/, @out)
512
+ assert_equal :exit, @exit
513
+ end
514
+ end
515
+
516
+ def test_classic_namespace
517
+ flags(['--classic-namespace'], ['-C', '-T', '-P', '-n', '-s', '-t']) do |opts|
518
+ assert opts.classic_namespace
519
+ assert_equal opts.show_tasks, $show_tasks
520
+ assert_equal opts.show_prereqs, $show_prereqs
521
+ assert_equal opts.trace, $trace
522
+ assert_equal opts.dryrun, $dryrun
523
+ assert_equal opts.silent, $silent
524
+ end
525
+ end
526
+
527
+ def test_bad_option
528
+ capture_stderr do
529
+ ex = assert_exception(OptionParser::InvalidOption) do
530
+ flags('--bad-option')
531
+ end
532
+ if ex.message =~ /^While/ # Ruby 1.9 error message
533
+ assert_match(/while parsing/i, ex.message)
534
+ else # Ruby 1.8 error message
535
+ assert_match(/(invalid|unrecognized) option/i, ex.message)
536
+ assert_match(/--bad-option/, ex.message)
537
+ end
538
+ end
539
+ end
540
+
541
+ def test_task_collection
542
+ command_line("a", "b")
543
+ assert_equal ["a", "b"], @tasks.sort
544
+ end
545
+
546
+ def test_default_task_collection
547
+ command_line()
548
+ assert_equal ["default"], @tasks
549
+ end
550
+
551
+ def test_environment_definition
552
+ ENV.delete('TESTKEY')
553
+ command_line("a", "TESTKEY=12")
554
+ assert_equal ["a"], @tasks.sort
555
+ assert '12', ENV['TESTKEY']
556
+ end
557
+
558
+ private
559
+
560
+ def flags(*sets)
561
+ sets.each do |set|
562
+ ARGV.clear
563
+ @out = capture_stdout {
564
+ @exit = catch(:system_exit) { opts = command_line(*set) }
565
+ }
566
+ yield(@app.options) if block_given?
567
+ end
568
+ end
569
+
570
+ def command_line(*options)
571
+ options.each do |opt| ARGV << opt end
572
+ @app = Rake::Application.new
573
+ def @app.exit(*args)
574
+ throw :system_exit, :exit
575
+ end
576
+ @app.instance_eval do
577
+ handle_options
578
+ collect_tasks
579
+ end
580
+ @tasks = @app.top_level_tasks
581
+ @app.options
582
+ end
583
+ end
584
+
585
+ class TestTaskArgumentParsing < Test::Unit::TestCase
586
+ def setup
587
+ @app = Rake::Application.new
588
+ end
589
+
590
+ def test_name_only
591
+ name, args = @app.parse_task_string("name")
592
+ assert_equal "name", name
593
+ assert_equal [], args
594
+ end
595
+
596
+ def test_empty_args
597
+ name, args = @app.parse_task_string("name[]")
598
+ assert_equal "name", name
599
+ assert_equal [], args
600
+ end
601
+
602
+ def test_one_argument
603
+ name, args = @app.parse_task_string("name[one]")
604
+ assert_equal "name", name
605
+ assert_equal ["one"], args
606
+ end
607
+
608
+ def test_two_arguments
609
+ name, args = @app.parse_task_string("name[one,two]")
610
+ assert_equal "name", name
611
+ assert_equal ["one", "two"], args
612
+ end
613
+
614
+ def test_can_handle_spaces_between_args
615
+ name, args = @app.parse_task_string("name[one, two,\tthree , \tfour]")
616
+ assert_equal "name", name
617
+ assert_equal ["one", "two", "three", "four"], args
618
+ end
619
+
620
+ def test_keeps_embedded_spaces
621
+ name, args = @app.parse_task_string("name[a one ana, two]")
622
+ assert_equal "name", name
623
+ assert_equal ["a one ana", "two"], args
624
+ end
625
+
626
+ end
627
+
628
+ class TestTaskArgumentParsing < Test::Unit::TestCase
629
+ include InEnvironment
630
+
631
+ def test_terminal_width_using_env
632
+ app = Rake::Application.new
633
+ in_environment('RAKE_COLUMNS' => '1234') do
634
+ assert_equal 1234, app.terminal_width
635
+ end
636
+ end
637
+
638
+ def test_terminal_width_using_stty
639
+ app = Rake::Application.new
640
+ flexmock(app,
641
+ :unix? => true,
642
+ :dynamic_width_stty => 1235,
643
+ :dynamic_width_tput => 0)
644
+ in_environment('RAKE_COLUMNS' => nil) do
645
+ assert_equal 1235, app.terminal_width
646
+ end
647
+ end
648
+
649
+ def test_terminal_width_using_tput
650
+ app = Rake::Application.new
651
+ flexmock(app,
652
+ :unix? => true,
653
+ :dynamic_width_stty => 0,
654
+ :dynamic_width_tput => 1236)
655
+ in_environment('RAKE_COLUMNS' => nil) do
656
+ assert_equal 1236, app.terminal_width
657
+ end
658
+ end
659
+
660
+ def test_terminal_width_using_hardcoded_80
661
+ app = Rake::Application.new
662
+ flexmock(app, :unix? => false)
663
+ in_environment('RAKE_COLUMNS' => nil) do
664
+ assert_equal 80, app.terminal_width
665
+ end
666
+ end
667
+
668
+ def test_terminal_width_with_failure
669
+ app = Rake::Application.new
670
+ flexmock(app).should_receive(:unix?).and_throw(RuntimeError)
671
+ in_environment('RAKE_COLUMNS' => nil) do
672
+ assert_equal 80, app.terminal_width
673
+ end
674
+ end
675
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake/clean'
5
+
6
+ class TestClean < Test::Unit::TestCase
7
+ include Rake
8
+ def test_clean
9
+ assert Task['clean'], "Should define clean"
10
+ assert Task['clobber'], "Should define clobber"
11
+ assert Task['clobber'].prerequisites.include?("clean"),
12
+ "Clobber should require clean"
13
+ end
14
+ end