blob: 1bf25e70e0e6fe557bd2ae954abe9fb4e4784229 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package libcore.java.util.jar;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import junit.framework.TestCase;
import tests.support.resource.Support_Resources;
public class OldJarFileTest extends TestCase {
private final String jarName = "hyts_patch.jar"; // a 'normal' jar file
private final String entryName = "foo/bar/A.class";
private File resources = Support_Resources.createTempFolder();
public void test_ConstructorLjava_io_File() throws IOException {
try {
new JarFile(new File("Wrong.file"));
fail("Should throw IOException");
} catch (IOException expected) {
}
Support_Resources.copyFile(resources, null, jarName);
new JarFile(new File(resources, jarName));
}
public void test_ConstructorLjava_lang_String() throws IOException {
try {
new JarFile("Wrong.file");
fail("Should throw IOException");
} catch (IOException expected) {
}
Support_Resources.copyFile(resources, null, jarName);
String fileName = (new File(resources, jarName)).getCanonicalPath();
new JarFile(fileName);
}
public void test_ConstructorLjava_lang_StringZ() throws IOException {
try {
new JarFile("Wrong.file", false);
fail("Should throw IOException");
} catch (IOException expected) {
}
Support_Resources.copyFile(resources, null, jarName);
String fileName = (new File(resources, jarName)).getCanonicalPath();
new JarFile(fileName, true);
}
public void test_ConstructorLjava_io_FileZ() throws IOException {
try {
new JarFile(new File("Wrong.file"), true);
fail("Should throw IOException");
} catch (IOException expected) {
}
Support_Resources.copyFile(resources, null, jarName);
new JarFile(new File(resources, jarName), false);
}
public void test_ConstructorLjava_io_FileZI() throws IOException {
try {
new JarFile(new File("Wrong.file"), true,
ZipFile.OPEN_READ);
fail("Should throw IOException");
} catch (IOException expected) {
}
Support_Resources.copyFile(resources, null, jarName);
new JarFile(new File(resources, jarName), false,
ZipFile.OPEN_READ);
try {
Support_Resources.copyFile(resources, null, jarName);
new JarFile(new File(resources, jarName), false,
ZipFile.OPEN_READ | ZipFile.OPEN_DELETE + 33);
fail("Should throw IllegalArgumentException");
} catch (IllegalArgumentException expected) {
}
}
public void test_close() throws IOException {
String modifiedJarName = "Modified_SF_EntryAttributes.jar";
Support_Resources.copyFile(resources, null, modifiedJarName);
JarFile jarFile = new JarFile(new File(resources, modifiedJarName), true);
jarFile.entries();
jarFile.close();
jarFile.close();
// Can not check IOException
}
public void test_getInputStreamLjava_util_jar_JarEntry() throws IOException {
Support_Resources.copyFile(resources, null, jarName);
File localFile = new File(resources, jarName);
byte[] b = new byte[1024];
JarFile jf = new JarFile(localFile);
InputStream is = jf.getInputStream(jf.getEntry(entryName));
assertTrue("Returned invalid stream", is.available() > 0);
int r = is.read(b, 0, 1024);
is.close();
StringBuilder stringBuffer = new StringBuilder(r);
for (int i = 0; i < r; i++) {
stringBuffer.append((char) (b[i] & 0xff));
}
String contents = stringBuffer.toString();
assertTrue("Incorrect stream read", contents.indexOf("bar") > 0);
jf.close();
jf = new JarFile(localFile);
InputStream in = jf.getInputStream(new JarEntry("invalid"));
assertNull("Got stream for non-existent entry", in);
try {
Support_Resources.copyFile(resources, null, jarName);
File signedFile = new File(resources, jarName);
jf = new JarFile(signedFile);
JarEntry jre = new JarEntry("foo/bar/A.class");
jf.getInputStream(jre);
// InputStream returned in any way, exception can be thrown in case
// of reading from this stream only.
// fail("Should throw ZipException");
} catch (ZipException expected) {
}
try {
Support_Resources.copyFile(resources, null, jarName);
File signedFile = new File(resources, jarName);
jf = new JarFile(signedFile);
JarEntry jre = new JarEntry("foo/bar/A.class");
jf.close();
jf.getInputStream(jre);
// InputStream returned in any way, exception can be thrown in case
// of reading from this stream only.
// The same for IOException
fail("Should throw IllegalStateException");
} catch (IllegalStateException expected) {
}
}
}