gemrage 0.3.2 → 0.4.0

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 (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