Skip to content

Commit fe039d3

Browse files
committed
Beef up tests to test fixed-pointed-ness of Utils.resolveURI(s)
1 parent e248328 commit fe039d3

File tree

1 file changed

+27
-11
lines changed

1 file changed

+27
-11
lines changed

core/src/test/scala/org/apache/spark/util/UtilsSuite.scala

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)