@@ -156,6 +156,70 @@ module JavaBuildpack::Container
156156 end
157157 end
158158
159+ it 'should link the Tomcat datasource JAR to the ROOT webapp when that JAR is present' do
160+ Dir . mktmpdir do |root |
161+ Dir . mkdir File . join ( root , 'WEB-INF' )
162+ lib_directory = File . join ( root , '.lib' )
163+ Dir . mkdir lib_directory
164+
165+ JavaBuildpack ::Repository ::ConfiguredItem . stub ( :find_item ) { |&block | block . call ( TOMCAT_VERSION ) if block }
166+ . and_return ( TOMCAT_DETAILS , SUPPORT_DETAILS )
167+
168+ JavaBuildpack ::Util ::ApplicationCache . stub ( :new ) . and_return ( application_cache )
169+ application_cache . stub ( :get ) . with ( 'test-tomcat-uri' ) . and_yield ( File . open ( 'spec/fixtures/stub-tomcat7.tar.gz' ) )
170+ application_cache . stub ( :get ) . with ( 'test-support-uri' ) . and_yield ( File . open ( 'spec/fixtures/stub-support.jar' ) )
171+
172+ application = JavaBuildpack ::Application . new ( root )
173+
174+ Tomcat . new (
175+ app_dir : root ,
176+ application : application ,
177+ configuration : { } ,
178+ lib_directory : lib_directory
179+ ) . compile
180+
181+ root_webapp = File . join root , '.tomcat' , 'webapps' , 'ROOT'
182+
183+ tomcat_datasource_jar = File . join root_webapp , 'WEB-INF' , 'lib' , 'tomcat-jdbc.jar'
184+ expect ( File . exists? ( tomcat_datasource_jar ) ) . to be_true
185+ expect ( File . readlink ( tomcat_datasource_jar ) ) . to eq ( '../../.lib/tomcat-jdbc.jar' )
186+
187+ tomcat_datasource_link_in_lib_directory = File . join lib_directory , 'tomcat-jdbc.jar'
188+ expect ( File . exists? ( tomcat_datasource_link_in_lib_directory ) )
189+ expect ( File . readlink ( tomcat_datasource_link_in_lib_directory ) ) . to eq ( '../.tomcat/lib/tomcat-jdbc.jar' )
190+ end
191+ end
192+
193+ it 'should not link the Tomcat datasource JAR to the ROOT webapp when that JAR is absent' do
194+ Dir . mktmpdir do |root |
195+ Dir . mkdir File . join ( root , 'WEB-INF' )
196+ lib_directory = File . join ( root , '.lib' )
197+ Dir . mkdir lib_directory
198+
199+ JavaBuildpack ::Repository ::ConfiguredItem . stub ( :find_item ) { |&block | block . call ( TOMCAT_VERSION ) if block }
200+ . and_return ( TOMCAT_DETAILS , SUPPORT_DETAILS )
201+
202+ JavaBuildpack ::Util ::ApplicationCache . stub ( :new ) . and_return ( application_cache )
203+ application_cache . stub ( :get ) . with ( 'test-tomcat-uri' ) . and_yield ( File . open ( 'spec/fixtures/stub-tomcat.tar.gz' ) )
204+ application_cache . stub ( :get ) . with ( 'test-support-uri' ) . and_yield ( File . open ( 'spec/fixtures/stub-support.jar' ) )
205+
206+ application = JavaBuildpack ::Application . new ( root )
207+
208+ Tomcat . new (
209+ app_dir : root ,
210+ application : application ,
211+ configuration : { } ,
212+ lib_directory : lib_directory
213+ ) . compile
214+
215+ root_webapp = File . join root , '.tomcat' , 'webapps' , 'ROOT'
216+
217+ tomcat_datasource_jar = File . join root_webapp , 'WEB-INF' , 'lib' , 'tomcat-jdbc.jar'
218+ expect ( File . exists? ( tomcat_datasource_jar ) ) . to be_false
219+ end
220+ end
221+
222+
159223 it 'should link additional libraries to the ROOT webapp' do
160224 Dir . mktmpdir do |root |
161225 Dir . mkdir File . join root , 'WEB-INF'
0 commit comments