mguymon-buildr 1.4.5-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (220) hide show
  1. data/CHANGELOG +1291 -0
  2. data/LICENSE +176 -0
  3. data/NOTICE +26 -0
  4. data/README.rdoc +134 -0
  5. data/Rakefile +44 -0
  6. data/_buildr +35 -0
  7. data/_jbuildr +35 -0
  8. data/addon/buildr/antlr.rb +65 -0
  9. data/addon/buildr/bnd.rb +147 -0
  10. data/addon/buildr/cobertura.rb +22 -0
  11. data/addon/buildr/drb.rb +281 -0
  12. data/addon/buildr/emma.rb +22 -0
  13. data/addon/buildr/hibernate.rb +149 -0
  14. data/addon/buildr/javacc.rb +85 -0
  15. data/addon/buildr/jaxb_xjc.rb +72 -0
  16. data/addon/buildr/jdepend.rb +60 -0
  17. data/addon/buildr/jetty.rb +248 -0
  18. data/addon/buildr/jibx.rb +86 -0
  19. data/addon/buildr/nailgun.rb +221 -0
  20. data/addon/buildr/openjpa.rb +88 -0
  21. data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
  22. data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
  23. data/addon/buildr/org/apache/buildr/BuildrNail.java +41 -0
  24. data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
  25. data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
  26. data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
  27. data/addon/buildr/org/apache/buildr/JettyWrapper.java +144 -0
  28. data/addon/buildr/protobuf.rb +88 -0
  29. data/addon/buildr/xmlbeans.rb +93 -0
  30. data/bin/buildr +19 -0
  31. data/buildr.buildfile +58 -0
  32. data/buildr.gemspec +78 -0
  33. data/doc/_config.yml +1 -0
  34. data/doc/_layouts/default.html +90 -0
  35. data/doc/_layouts/preface.html +22 -0
  36. data/doc/artifacts.textile +217 -0
  37. data/doc/building.textile +276 -0
  38. data/doc/contributing.textile +268 -0
  39. data/doc/css/default.css +236 -0
  40. data/doc/css/print.css +101 -0
  41. data/doc/css/syntax.css +23 -0
  42. data/doc/download.textile +151 -0
  43. data/doc/extending.textile +212 -0
  44. data/doc/images/1442160941-frontcover.jpg +0 -0
  45. data/doc/images/asf-logo.gif +0 -0
  46. data/doc/images/asf-logo.png +0 -0
  47. data/doc/images/buildr-hires.png +0 -0
  48. data/doc/images/buildr.png +0 -0
  49. data/doc/images/favicon.png +0 -0
  50. data/doc/images/growl-icon.tiff +0 -0
  51. data/doc/images/note.png +0 -0
  52. data/doc/images/project-structure.png +0 -0
  53. data/doc/images/tip.png +0 -0
  54. data/doc/images/zbuildr.png +0 -0
  55. data/doc/images/zbuildr.tif +0 -0
  56. data/doc/index.textile +109 -0
  57. data/doc/installing.textile +284 -0
  58. data/doc/languages.textile +599 -0
  59. data/doc/mailing_lists.textile +29 -0
  60. data/doc/more_stuff.textile +845 -0
  61. data/doc/packaging.textile +618 -0
  62. data/doc/preface.textile +54 -0
  63. data/doc/projects.textile +276 -0
  64. data/doc/quick_start.textile +210 -0
  65. data/doc/releasing.textile +117 -0
  66. data/doc/scripts/buildr-git.rb +512 -0
  67. data/doc/scripts/gitflow.rb +296 -0
  68. data/doc/scripts/install-jruby.sh +44 -0
  69. data/doc/scripts/install-linux.sh +73 -0
  70. data/doc/scripts/install-osx.sh +52 -0
  71. data/doc/settings_profiles.textile +287 -0
  72. data/doc/testing.textile +247 -0
  73. data/etc/KEYS +189 -0
  74. data/lib/buildr.rb +44 -0
  75. data/lib/buildr/clojure.rb +34 -0
  76. data/lib/buildr/clojure/shell.rb +52 -0
  77. data/lib/buildr/core.rb +34 -0
  78. data/lib/buildr/core/application.rb +700 -0
  79. data/lib/buildr/core/build.rb +516 -0
  80. data/lib/buildr/core/cc.rb +166 -0
  81. data/lib/buildr/core/checks.rb +253 -0
  82. data/lib/buildr/core/common.rb +151 -0
  83. data/lib/buildr/core/compile.rb +622 -0
  84. data/lib/buildr/core/doc.rb +276 -0
  85. data/lib/buildr/core/environment.rb +129 -0
  86. data/lib/buildr/core/filter.rb +404 -0
  87. data/lib/buildr/core/generate.rb +197 -0
  88. data/lib/buildr/core/help.rb +119 -0
  89. data/lib/buildr/core/jrebel.rb +42 -0
  90. data/lib/buildr/core/linux.rb +30 -0
  91. data/lib/buildr/core/osx.rb +46 -0
  92. data/lib/buildr/core/progressbar.rb +161 -0
  93. data/lib/buildr/core/project.rb +975 -0
  94. data/lib/buildr/core/run.rb +43 -0
  95. data/lib/buildr/core/shell.rb +137 -0
  96. data/lib/buildr/core/test.rb +843 -0
  97. data/lib/buildr/core/transports.rb +575 -0
  98. data/lib/buildr/core/util.rb +537 -0
  99. data/lib/buildr/groovy.rb +20 -0
  100. data/lib/buildr/groovy/bdd.rb +106 -0
  101. data/lib/buildr/groovy/compiler.rb +153 -0
  102. data/lib/buildr/groovy/doc.rb +76 -0
  103. data/lib/buildr/groovy/shell.rb +57 -0
  104. data/lib/buildr/ide.rb +19 -0
  105. data/lib/buildr/ide/eclipse.rb +427 -0
  106. data/lib/buildr/ide/eclipse/java.rb +53 -0
  107. data/lib/buildr/ide/eclipse/plugin.rb +71 -0
  108. data/lib/buildr/ide/eclipse/scala.rb +68 -0
  109. data/lib/buildr/ide/idea.rb +576 -0
  110. data/lib/buildr/java.rb +25 -0
  111. data/lib/buildr/java/ant.rb +94 -0
  112. data/lib/buildr/java/bdd.rb +460 -0
  113. data/lib/buildr/java/cobertura.rb +297 -0
  114. data/lib/buildr/java/commands.rb +223 -0
  115. data/lib/buildr/java/compiler.rb +135 -0
  116. data/lib/buildr/java/deprecated.rb +141 -0
  117. data/lib/buildr/java/doc.rb +86 -0
  118. data/lib/buildr/java/ecj.rb +69 -0
  119. data/lib/buildr/java/emma.rb +244 -0
  120. data/lib/buildr/java/external.rb +73 -0
  121. data/lib/buildr/java/jruby.rb +122 -0
  122. data/lib/buildr/java/jtestr_result.rb +295 -0
  123. data/lib/buildr/java/jtestr_runner.rb.erb +116 -0
  124. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
  125. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +142 -0
  126. data/lib/buildr/java/packaging.rb +734 -0
  127. data/lib/buildr/java/pom.rb +178 -0
  128. data/lib/buildr/java/rjb.rb +154 -0
  129. data/lib/buildr/java/test_result.rb +101 -0
  130. data/lib/buildr/java/tests.rb +362 -0
  131. data/lib/buildr/java/version_requirement.rb +172 -0
  132. data/lib/buildr/packaging.rb +25 -0
  133. data/lib/buildr/packaging/archive.rb +535 -0
  134. data/lib/buildr/packaging/artifact.rb +904 -0
  135. data/lib/buildr/packaging/artifact_namespace.rb +984 -0
  136. data/lib/buildr/packaging/artifact_search.rb +140 -0
  137. data/lib/buildr/packaging/gems.rb +105 -0
  138. data/lib/buildr/packaging/package.rb +249 -0
  139. data/lib/buildr/packaging/repository_array.rb +108 -0
  140. data/lib/buildr/packaging/tar.rb +189 -0
  141. data/lib/buildr/packaging/version_requirement.rb +192 -0
  142. data/lib/buildr/packaging/zip.rb +178 -0
  143. data/lib/buildr/packaging/ziptask.rb +356 -0
  144. data/lib/buildr/resources/buildr.icns +0 -0
  145. data/lib/buildr/resources/completed.png +0 -0
  146. data/lib/buildr/resources/failed.png +0 -0
  147. data/lib/buildr/resources/icons-license.txt +17 -0
  148. data/lib/buildr/run.rb +195 -0
  149. data/lib/buildr/scala.rb +26 -0
  150. data/lib/buildr/scala/bdd.rb +118 -0
  151. data/lib/buildr/scala/compiler.rb +242 -0
  152. data/lib/buildr/scala/doc.rb +142 -0
  153. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
  154. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.java +57 -0
  155. data/lib/buildr/scala/shell.rb +52 -0
  156. data/lib/buildr/scala/tests.rb +171 -0
  157. data/lib/buildr/shell.rb +185 -0
  158. data/lib/buildr/version.rb +18 -0
  159. data/rakelib/all-in-one.rake +113 -0
  160. data/rakelib/checks.rake +57 -0
  161. data/rakelib/doc.rake +137 -0
  162. data/rakelib/metrics.rake +39 -0
  163. data/rakelib/package.rake +73 -0
  164. data/rakelib/release.rake +160 -0
  165. data/rakelib/rspec.rake +91 -0
  166. data/rakelib/setup.rake +66 -0
  167. data/rakelib/stage.rake +220 -0
  168. data/spec/addon/bnd_spec.rb +330 -0
  169. data/spec/addon/drb_spec.rb +328 -0
  170. data/spec/addon/jaxb_xjc_spec.rb +125 -0
  171. data/spec/core/application_spec.rb +631 -0
  172. data/spec/core/build_spec.rb +837 -0
  173. data/spec/core/cc_spec.rb +224 -0
  174. data/spec/core/checks_spec.rb +519 -0
  175. data/spec/core/common_spec.rb +725 -0
  176. data/spec/core/compile_spec.rb +658 -0
  177. data/spec/core/doc_spec.rb +195 -0
  178. data/spec/core/extension_spec.rb +201 -0
  179. data/spec/core/generate_spec.rb +33 -0
  180. data/spec/core/project_spec.rb +772 -0
  181. data/spec/core/run_spec.rb +93 -0
  182. data/spec/core/shell_spec.rb +146 -0
  183. data/spec/core/test_spec.rb +1320 -0
  184. data/spec/core/transport_spec.rb +544 -0
  185. data/spec/core/util_spec.rb +141 -0
  186. data/spec/groovy/bdd_spec.rb +80 -0
  187. data/spec/groovy/compiler_spec.rb +251 -0
  188. data/spec/groovy/doc_spec.rb +65 -0
  189. data/spec/ide/eclipse_spec.rb +739 -0
  190. data/spec/ide/idea_spec.rb +1145 -0
  191. data/spec/java/ant_spec.rb +37 -0
  192. data/spec/java/bdd_spec.rb +374 -0
  193. data/spec/java/cobertura_spec.rb +112 -0
  194. data/spec/java/commands_spec.rb +93 -0
  195. data/spec/java/compiler_spec.rb +252 -0
  196. data/spec/java/doc_spec.rb +56 -0
  197. data/spec/java/ecj_spec.rb +115 -0
  198. data/spec/java/emma_spec.rb +121 -0
  199. data/spec/java/external_spec.rb +56 -0
  200. data/spec/java/java_spec.rb +132 -0
  201. data/spec/java/packaging_spec.rb +1266 -0
  202. data/spec/java/run_spec.rb +78 -0
  203. data/spec/java/test_coverage_helper.rb +257 -0
  204. data/spec/java/tests_spec.rb +497 -0
  205. data/spec/packaging/archive_spec.rb +775 -0
  206. data/spec/packaging/artifact_namespace_spec.rb +743 -0
  207. data/spec/packaging/artifact_spec.rb +1074 -0
  208. data/spec/packaging/packaging_helper.rb +63 -0
  209. data/spec/packaging/packaging_spec.rb +719 -0
  210. data/spec/packaging/repository_array_spec.rb +109 -0
  211. data/spec/sandbox.rb +165 -0
  212. data/spec/scala/bdd_spec.rb +124 -0
  213. data/spec/scala/compiler_spec.rb +289 -0
  214. data/spec/scala/doc_spec.rb +88 -0
  215. data/spec/scala/scala.rb +38 -0
  216. data/spec/scala/tests_spec.rb +283 -0
  217. data/spec/spec_helpers.rb +369 -0
  218. data/spec/version_requirement_spec.rb +143 -0
  219. data/spec/xpath_matchers.rb +121 -0
  220. metadata +600 -0
@@ -0,0 +1,93 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with this
3
+ # work for additional information regarding copyright ownership. The ASF
4
+ # licenses this file to you under the Apache License, Version 2.0 (the
5
+ # "License"); you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations under
14
+ # the License.
15
+
16
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helpers'))
17
+
18
+
19
+ describe Java::Commands do
20
+
21
+ it "should not be verbose by default" do
22
+ write "build.xml", <<-BUILD
23
+ <project name="MyProject" default="dist" basedir=".">
24
+ <description>
25
+ simple example build file
26
+ </description>
27
+ <target name="dist"/>
28
+ </project>
29
+ BUILD
30
+ lambda { Java::Commands.java("org.apache.tools.ant.Main", :classpath => Buildr::Ant.dependencies) }.should_not show_info(/java/)
31
+ lambda { Java::Commands.java("org.apache.tools.ant.Main", :classpath => Buildr::Ant.dependencies, :verbose => true) }.should show_info(/java/)
32
+ end
33
+
34
+ describe "Java::Commands.javac" do
35
+
36
+ it "should compile java" do
37
+ write "Foo.java", "public class Foo {}"
38
+ lambda { Java::Commands.javac("Foo.java") }.should change {File.exist?("Foo.class")}.to(true)
39
+ end
40
+
41
+ it 'should let the user specify an output directory' do
42
+ write "Foo.java", "public class Foo {}"
43
+ lambda { Java::Commands.javac("Foo.java", :output => "classes") }.should change {File.exist?("classes/Foo.class")}.to(true)
44
+ end
45
+
46
+ it "should let the user specify a different name" do
47
+ write "Foo.java", "public class Foo {}"
48
+ lambda { Java::Commands.javac("Foo.java", :name => "bar") }.should show_info("Compiling 1 source files in bar")
49
+ end
50
+
51
+ it "should let the user specify a source path" do
52
+ write "ext/org/Bar.java", "package org; public class Bar {}"
53
+ write "Foo.java", "import org.Bar;\n public class Foo {}"
54
+ lambda { Java::Commands.javac("Foo.java", :sourcepath => File.expand_path("ext")) }.should change {File.exist?("Foo.class")}.to(true)
55
+ end
56
+
57
+ it "should let the user specify a classpath" do
58
+ write "ext/org/Bar.java", "package org; public class Bar {}"
59
+ Java::Commands.javac("ext/org/Bar.java", :output => "lib")
60
+ write "Foo.java", "import org.Bar;\n public class Foo {}"
61
+ lambda { Java::Commands.javac("Foo.java", :classpath => File.expand_path("lib")) }.should change {File.exist?("Foo.class")}.to(true)
62
+ end
63
+ end
64
+
65
+ describe "Java::Commands.javadoc" do
66
+
67
+ it "should fail if no output is defined" do
68
+ lambda { Java::Commands.javadoc("Foo.java") }.should raise_error(/No output defined for javadoc/)
69
+ end
70
+
71
+ it "should create javadoc" do
72
+ write "Foo.java", "public class Foo {}"
73
+ lambda { Java::Commands.javadoc("Foo.java", :output => "doc") }.should change {File.exist?("doc/Foo.html")}.to(true)
74
+ end
75
+
76
+ it "should accept file tasks as arguments" do
77
+ foo = file("Foo.java") do |file|
78
+ file.enhance do
79
+ write file.to_s, "public class Foo {}"
80
+ end
81
+ end
82
+ lambda { Java::Commands.javadoc(foo, :output => "doc") }.should change {File.exist?("doc/Foo.html")}.to(true)
83
+ end
84
+
85
+ it "should accept projects as arguments" do
86
+ write "src/main/java/Foo.java", "public class Foo {}"
87
+ write "src/main/java/bar/Foobar.java", "package bar; public class Foobar {}"
88
+ define "foo" do
89
+ end
90
+ lambda { Java::Commands.javadoc(project("foo"), :output => "doc") }.should change {File.exist?("doc/Foo.html") && File.exist?("doc/bar/Foobar.html")}.to(true)
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,252 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with this
3
+ # work for additional information regarding copyright ownership. The ASF
4
+ # licenses this file to you under the Apache License, Version 2.0 (the
5
+ # "License"); you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations under
14
+ # the License.
15
+
16
+
17
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helpers'))
18
+
19
+
20
+ describe 'javac compiler' do
21
+ it 'should identify itself from source directories' do
22
+ write 'src/main/java/com/example/Test.java', 'package com.example; class Test {}'
23
+ define('foo').compile.compiler.should eql(:javac)
24
+ end
25
+
26
+ it 'should identify from source directories using custom layout' do
27
+ write 'src/com/example/Code.java', 'package com.example; class Code {}'
28
+ write 'testing/com/example/Test.java', 'package com.example; class Test {}'
29
+ custom = Layout.new
30
+ custom[:source, :main, :java] = 'src'
31
+ custom[:source, :test, :java] = 'testing'
32
+ define 'foo', :layout=>custom do
33
+ compile.compiler.should eql(:javac)
34
+ test.compile.compiler.should eql(:javac)
35
+ end
36
+ end
37
+
38
+ it 'should identify from compile source directories' do
39
+ write 'src/com/example/Code.java', 'package com.example; class Code {}'
40
+ write 'testing/com/example/Test.java', 'package com.example; class Test {}'
41
+ define 'foo' do
42
+ lambda { compile.from 'src' }.should change { compile.compiler }.to(:javac)
43
+ lambda { test.compile.from 'testing' }.should change { test.compile.compiler }.to(:javac)
44
+ end
45
+ end
46
+
47
+ it 'should report the language as :java' do
48
+ define('foo').compile.using(:javac).language.should eql(:java)
49
+ end
50
+
51
+ it 'should set the target directory to target/classes' do
52
+ define 'foo' do
53
+ lambda { compile.using(:javac) }.should change { compile.target.to_s }.to(File.expand_path('target/classes'))
54
+ end
55
+ end
56
+
57
+ it 'should not override existing target directory' do
58
+ define 'foo' do
59
+ compile.into('classes')
60
+ lambda { compile.using(:javac) }.should_not change { compile.target }
61
+ end
62
+ end
63
+
64
+ it 'should not change existing list of sources' do
65
+ define 'foo' do
66
+ compile.from('sources')
67
+ lambda { compile.using(:javac) }.should_not change { compile.sources }
68
+ end
69
+ end
70
+
71
+ it 'should include classpath dependencies' do
72
+ write 'src/dependency/Dependency.java', 'class Dependency {}'
73
+ define 'dependency', :version=>'1.0' do
74
+ compile.from('src/dependency').into('target/dependency')
75
+ package(:jar)
76
+ end
77
+ write 'src/test/DependencyTest.java', 'class DependencyTest { Dependency _var; }'
78
+ define('foo').compile.from('src/test').with(project('dependency')).invoke
79
+ file('target/classes/DependencyTest.class').should exist
80
+ end
81
+
82
+ it 'should include tools.jar dependency' do
83
+ write 'src/main/java/UseApt.java', <<-JAVA
84
+ import com.sun.mirror.apt.AnnotationProcessor;
85
+ public class UseApt { }
86
+ JAVA
87
+ define('foo').compile.invoke
88
+ file('target/classes/UseApt.class').should exist
89
+ end
90
+ end
91
+
92
+
93
+ describe 'javac compiler options' do
94
+ def compile_task
95
+ @compile_task ||= define('foo').compile.using(:javac)
96
+ end
97
+
98
+ def javac_args
99
+ compile_task.instance_eval { @compiler }.send(:javac_args)
100
+ end
101
+
102
+ it 'should set warnings option to false by default' do
103
+ compile_task.options.warnings.should be_false
104
+ end
105
+
106
+ it 'should set warnings option to true when running with --verbose option' do
107
+ verbose true
108
+ compile_task.options.warnings.should be_false
109
+ end
110
+
111
+ it 'should use -nowarn argument when warnings is false' do
112
+ compile_task.using(:warnings=>false)
113
+ javac_args.should include('-nowarn')
114
+ end
115
+
116
+ it 'should not use -nowarn argument when warnings is true' do
117
+ compile_task.using(:warnings=>true)
118
+ javac_args.should_not include('-nowarn')
119
+ end
120
+
121
+ it 'should not use -verbose argument by default' do
122
+ javac_args.should_not include('-verbose')
123
+ end
124
+
125
+ it 'should use -verbose argument when running with --trace=javac option' do
126
+ Buildr.application.options.trace_categories = [:javac]
127
+ javac_args.should include('-verbose')
128
+ end
129
+
130
+ it 'should set debug option to true by default' do
131
+ compile_task.options.debug.should be_true
132
+ end
133
+
134
+ it 'should set debug option to false based on Buildr.options' do
135
+ Buildr.options.debug = false
136
+ compile_task.options.debug.should be_false
137
+ end
138
+
139
+ it 'should set debug option to false based on debug environment variable' do
140
+ ENV['debug'] = 'no'
141
+ compile_task.options.debug.should be_false
142
+ end
143
+
144
+ it 'should set debug option to false based on DEBUG environment variable' do
145
+ ENV['DEBUG'] = 'no'
146
+ compile_task.options.debug.should be_false
147
+ end
148
+
149
+ it 'should use -g argument when debug option is true' do
150
+ compile_task.using(:debug=>true)
151
+ javac_args.should include('-g')
152
+ end
153
+
154
+ it 'should not use -g argument when debug option is false' do
155
+ compile_task.using(:debug=>false)
156
+ javac_args.should_not include('-g')
157
+ end
158
+
159
+ it 'should set deprecation option to false by default' do
160
+ compile_task.options.deprecation.should be_false
161
+ end
162
+
163
+ it 'should use -deprecation argument when deprecation is true' do
164
+ compile_task.using(:deprecation=>true)
165
+ javac_args.should include('-deprecation')
166
+ end
167
+
168
+ it 'should not use -deprecation argument when deprecation is false' do
169
+ compile_task.using(:deprecation=>false)
170
+ javac_args.should_not include('-deprecation')
171
+ end
172
+
173
+ it 'should not set source option by default' do
174
+ compile_task.options.source.should be_nil
175
+ javac_args.should_not include('-source')
176
+ end
177
+
178
+ it 'should not set target option by default' do
179
+ compile_task.options.target.should be_nil
180
+ javac_args.should_not include('-target')
181
+ end
182
+
183
+ it 'should use -source nn argument if source option set' do
184
+ compile_task.using(:source=>'1.5')
185
+ javac_args.should include('-source', '1.5')
186
+ end
187
+
188
+ it 'should use -target nn argument if target option set' do
189
+ compile_task.using(:target=>'1.5')
190
+ javac_args.should include('-target', '1.5')
191
+ end
192
+
193
+ it 'should set lint option to false by default' do
194
+ compile_task.options.lint.should be_false
195
+ end
196
+
197
+ it 'should use -lint argument if lint option is true' do
198
+ compile_task.using(:lint=>true)
199
+ javac_args.should include('-Xlint')
200
+ end
201
+
202
+ it 'should use -lint argument with value of option' do
203
+ compile_task.using(:lint=>'all')
204
+ javac_args.should include('-Xlint:all')
205
+ end
206
+
207
+ it 'should use -lint argument with value of option as array' do
208
+ compile_task.using(:lint=>['path', 'serial'])
209
+ javac_args.should include('-Xlint:path,serial')
210
+ end
211
+
212
+ it 'should not set other option by default' do
213
+ compile_task.options.other.should be_nil
214
+ end
215
+
216
+ it 'should pass other argument if other option is string' do
217
+ compile_task.using(:other=>'-Xprint')
218
+ javac_args.should include('-Xprint')
219
+ end
220
+
221
+ it 'should pass other argument if other option is array' do
222
+ compile_task.using(:other=>['-Xstdout', 'msgs'])
223
+ javac_args.should include('-Xstdout', 'msgs')
224
+ end
225
+
226
+ it 'should complain about options it doesn\'t know' do
227
+ write 'source/Test.java', 'class Test {}'
228
+ compile_task.using(:unknown=>'option')
229
+ lambda { compile_task.from('source').invoke }.should raise_error(ArgumentError, /no such option/i)
230
+ end
231
+
232
+ it 'should inherit options from parent' do
233
+ define 'foo' do
234
+ compile.using(:warnings=>true, :debug=>true, :deprecation=>true, :source=>'1.5', :target=>'1.4')
235
+ define 'bar' do
236
+ compile.using(:javac)
237
+ compile.options.warnings.should be_true
238
+ compile.options.debug.should be_true
239
+ compile.options.deprecation.should be_true
240
+ compile.options.source.should eql('1.5')
241
+ compile.options.target.should eql('1.4')
242
+ end
243
+ end
244
+ end
245
+
246
+ after do
247
+ Buildr.options.debug = nil
248
+ ENV.delete "debug"
249
+ ENV.delete "DEBUG"
250
+ end
251
+ end
252
+
@@ -0,0 +1,56 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with this
3
+ # work for additional information regarding copyright ownership. The ASF
4
+ # licenses this file to you under the Apache License, Version 2.0 (the
5
+ # "License"); you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations under
14
+ # the License.
15
+
16
+
17
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helpers'))
18
+
19
+ describe 'Javadoc' do
20
+ def sources
21
+ @sources ||= (1..3).map { |i| "Test#{i}" }.
22
+ each { |name| write "src/main/java/foo/#{name}.java", "package foo; public class #{name}{}" }.
23
+ map { |name| "src/main/java/foo/#{name}.java" }
24
+ end
25
+
26
+ it 'should pick -windowtitle from project name by default' do
27
+ define 'foo' do
28
+ compile.using(:javac)
29
+
30
+ define 'bar' do
31
+ compile.using(:javac)
32
+ end
33
+ end
34
+
35
+ project('foo').doc.options[:windowtitle].should eql('foo')
36
+ project('foo:bar').doc.options[:windowtitle].should eql('foo:bar')
37
+ end
38
+
39
+ it 'should pick -windowtitle from project description by default, if available' do
40
+ desc 'My App'
41
+ define 'foo' do
42
+ compile.using(:javac)
43
+ end
44
+ project('foo').doc.options[:windowtitle].should eql('My App')
45
+ end
46
+
47
+ it 'should not override explicit :windowtitle' do
48
+ define 'foo' do
49
+ compile.using(:javac)
50
+ doc.using :windowtitle => 'explicit'
51
+ end
52
+ project('foo').doc.options[:windowtitle].should eql('explicit')
53
+ end
54
+
55
+ end
56
+
@@ -0,0 +1,115 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with this
3
+ # work for additional information regarding copyright ownership. The ASF
4
+ # licenses this file to you under the Apache License, Version 2.0 (the
5
+ # "License"); you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations under
14
+ # the License.
15
+
16
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helpers'))
17
+
18
+
19
+
20
+ describe Buildr::Compiler::Ecj do
21
+
22
+ before(:all) do
23
+ #Make ecj appear as a compiler that applies:
24
+ class Buildr::Compiler::Ecj
25
+ class << self
26
+
27
+ def applies_to?(project, task)
28
+ paths = task.sources + [sources].flatten.map { |src| Array(project.path_to(:source, task.usage, src.to_sym)) }
29
+ paths.flatten!
30
+ ext_glob = Array(source_ext).join(',')
31
+
32
+ paths.each { |path|
33
+ Find.find(path) {|found|
34
+ if (!File.directory?(found)) && found.match(/.*\.#{Array(source_ext).join('|')}/)
35
+ return true
36
+ end
37
+ } if File.exist? path
38
+ }
39
+ false
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ it "should be the default Java compiler once loaded" do
46
+ write 'src/main/java/Foo.java', 'public class Foo {}'
47
+ foo = define('foo')
48
+ foo.compile.compiler.should == :ecj
49
+ end
50
+
51
+ describe "should compile a Java project just in the same way javac does" do
52
+ javac_spec = File.read(File.join(File.dirname(__FILE__), "compiler_spec.rb"))
53
+ javac_spec = javac_spec.match(Regexp.escape("require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helpers'))\n")).post_match
54
+ javac_spec.gsub!("javac", "ecj")
55
+ javac_spec.gsub!("nowarn", "warn:none")
56
+ eval(javac_spec)
57
+ end
58
+
59
+ # Redirect the java error ouput, yielding so you can do something while it is
60
+ # and returning the content of the error buffer.
61
+ #
62
+ def redirect_java_err
63
+ pending "RJB doesn't support well instantiating a class that has several constructors" unless RUBY_PLATFORM =~ /java/
64
+ err = Java.java.io.ByteArrayOutputStream.new
65
+ original_err = Java.java.lang.System.err
66
+ begin
67
+ printStream = Java.java.io.PrintStream
68
+ print = printStream.new(err)
69
+ Java.java.lang.System.setErr(print)
70
+ yield
71
+ ensure
72
+ Java.java.lang.System.setErr(original_err)
73
+ end
74
+ err.toString
75
+ end
76
+
77
+ it "should not issue warnings for type casting when warnings are set to warn:none, by default" do
78
+ write "src/main/java/Main.java", "import java.util.List; public class Main {public List get() {return null;}}"
79
+ foo = define("foo") {
80
+ compile.options.source = "1.5"
81
+ compile.options.target = "1.5"
82
+ }
83
+ redirect_java_err { foo.compile.invoke }.should_not match(/WARNING/)
84
+ end
85
+
86
+ it "should issue warnings for type casting when warnings are set" do
87
+ write "src/main/java/Main.java", "import java.util.List; public class Main {public List get() {return null;}}"
88
+ foo = define("foo") {
89
+ compile.options.source = "1.5"
90
+ compile.options.target = "1.5"
91
+ compile.options.warnings = true
92
+ }
93
+ redirect_java_err { foo.compile.invoke }.should match(/WARNING/)
94
+ end
95
+
96
+ after(:all) do
97
+ #Make ecj appear as a compiler that doesn't apply:
98
+ module Buildr
99
+ module Compiler
100
+
101
+ class Ecj
102
+
103
+ class << self
104
+
105
+ def applies_to?(project, task)
106
+ false
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+
115
+