@@ -204,9 +204,14 @@ class UtilsSuite extends FunSuite {
204204
205205 test(" resolveURI" ) {
206206 def assertResolves (before : String , after : String , testWindows : Boolean = false ): Unit = {
207- assume(before.split(" ," ).length == 1 )
208- assert(Utils .resolveURI(before, testWindows) === new URI (after))
209- assert(Utils .resolveURI(after, testWindows) === new URI (after))
207+ // This should test only single paths
208+ assume(before.split(" ," ).length === 1 )
209+ // Repeated invocations of resolveURI should yield the same result
210+ def resolve (uri : String ): String = Utils .resolveURI(uri, testWindows).toString
211+ assert(resolve(after) === after)
212+ assert(resolve(resolve(after)) === after)
213+ assert(resolve(resolve(resolve(after))) === after)
214+ // Also test resolveURIs with single paths
210215 assert(new URI (Utils .resolveURIs(before, testWindows)) === new URI (after))
211216 assert(new URI (Utils .resolveURIs(after, testWindows)) === new URI (after))
212217 }
@@ -222,16 +227,27 @@ class UtilsSuite extends FunSuite {
222227 assertResolves(" file:/C:/file.txt#alias.txt" , " file:/C:/file.txt#alias.txt" , testWindows = true )
223228 intercept[IllegalArgumentException ] { Utils .resolveURI(" file:foo" ) }
224229 intercept[IllegalArgumentException ] { Utils .resolveURI(" file:foo:baby" ) }
230+ }
225231
226- // Test resolving comma-delimited paths
227- assert(Utils .resolveURIs(" jar1,jar2" ) === s " file: $cwd/jar1,file: $cwd/jar2 " )
228- assert(Utils .resolveURIs(" file:/jar1,file:/jar2" ) === " file:/jar1,file:/jar2" )
229- assert(Utils .resolveURIs(" hdfs:/jar1,file:/jar2,jar3" ) ===
230- s " hdfs:/jar1,file:/jar2,file: $cwd/jar3 " )
231- assert(Utils .resolveURIs(" hdfs:/jar1,file:/jar2,jar3,jar4#jar5" ) ===
232+ test(" resolveURIs with multiple paths" ) {
233+ def assertResolves (before : String , after : String , testWindows : Boolean = false ): Unit = {
234+ assume(before.split(" ," ).length > 1 )
235+ assert(Utils .resolveURIs(before, testWindows) === after)
236+ assert(Utils .resolveURIs(after, testWindows) === after)
237+ // Repeated invocations of resolveURIs should yield the same result
238+ def resolve (uri : String ): String = Utils .resolveURIs(uri, testWindows)
239+ assert(resolve(after) === after)
240+ assert(resolve(resolve(after)) === after)
241+ assert(resolve(resolve(resolve(after))) === after)
242+ }
243+ val cwd = System .getProperty(" user.dir" )
244+ assertResolves(" jar1,jar2" , s " file: $cwd/jar1,file: $cwd/jar2 " )
245+ assertResolves(" file:/jar1,file:/jar2" , " file:/jar1,file:/jar2" )
246+ assertResolves(" hdfs:/jar1,file:/jar2,jar3" , s " hdfs:/jar1,file:/jar2,file: $cwd/jar3 " )
247+ assertResolves(" hdfs:/jar1,file:/jar2,jar3,jar4#jar5" ,
232248 s " hdfs:/jar1,file:/jar2,file: $cwd/jar3,file: $cwd/jar4#jar5 " )
233- assert( Utils .resolveURIs( " hdfs:/jar1,file:/jar2,jar3,C:\\ pi.py#py.pi" , testWindows = true ) ===
234- s " hdfs:/jar1,file:/jar2,file: $cwd/jar3,file:/C:/pi.py#py.pi " )
249+ assertResolves( " hdfs:/jar1,file:/jar2,jar3,C:\\ pi.py#py.pi" ,
250+ s " hdfs:/jar1,file:/jar2,file: $cwd/jar3,file:/C:/pi.py#py.pi " , testWindows = true )
235251 }
236252
237253 test(" nonLocalPaths" ) {
0 commit comments