diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-08-27 20:08:35 +0200 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-08-27 20:08:35 +0200 |
commit | 5e8bc196cebcbaf86a63330cf0474909f72a6fe0 (patch) | |
tree | a849a804acf8a33af9de7ee3d377a34cc3796cc3 /test | |
parent | 4254b47acbe703dfcab655a55b3cd2f6102ece05 (diff) | |
download | scala-5e8bc196cebcbaf86a63330cf0474909f72a6fe0.tar.gz scala-5e8bc196cebcbaf86a63330cf0474909f72a6fe0.tar.bz2 scala-5e8bc196cebcbaf86a63330cf0474909f72a6fe0.zip |
A better diagnostic error for corrupt or missing JARs.
Augment the IOException with the name of the file we're trying
to open.
Motivated by a troubleshooting session with partial downloads
of JARs from Maven central breaking the Scala build on Martin's
laptop.
The test case only tests our part of the error message, so as not
to be platform / JDK specific. Otherwise, it would check that the
correct cause exception was present and accounted for.
Diffstat (limited to 'test')
-rw-r--r-- | test/junit/scala/reflect/io/ZipArchiveTest.scala | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/junit/scala/reflect/io/ZipArchiveTest.scala b/test/junit/scala/reflect/io/ZipArchiveTest.scala new file mode 100644 index 0000000000..1bcd06f5a7 --- /dev/null +++ b/test/junit/scala/reflect/io/ZipArchiveTest.scala @@ -0,0 +1,37 @@ +package scala.reflect.io + +import java.io.{IOException, File => JFile} +import org.junit.Assert._ +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 + +@RunWith(classOf[JUnit4]) +class ZipArchiveTest { + + @Test + def corruptZip { + val f = JFile.createTempFile("test", ".jar") + val fza = new FileZipArchive(f) + try { + fza.iterator + } catch { + case x: IOException => + assertTrue(x.getMessage, x.getMessage.contains(f.getPath)) + } finally { + f.delete() + } + } + + @Test + def missingFile { + val f = new JFile("xxx.does.not.exist") + val fza = new FileZipArchive(f) + try { + fza.iterator + } catch { + case x: IOException => + assertTrue(x.getMessage, x.getMessage.contains(f.getPath)) + } + } +} |