Program: 90130
Project: 90130
Buggy source:
public void testUnzip() throws IOException {
  File unzipDir=new File(TestInfo.TEMPDIR,"String_Node_Str");
  assertFalse("String_Node_Str",unzipDir.exists());
  ZipUtils.unzip(TestInfo.ZIPPED_DIR,unzipDir);
  assertTrue("String_Node_Str",unzipDir.exists());
  Set<String> files=getFileListNonDirectory();
  for (  String s : new ArrayList<String>(files)) {
    if (!s.equals(TestInfo.ZIPPED_DIR.getName())) {
      File unpackedFile=new File(unzipDir,s);
      assertTrue("String_Node_Str" + s + "String_Node_Str",unpackedFile.exists());
      File originalFile=new File(TestInfo.ZIPDIR,s);
      assertEquals("String_Node_Str" + s + "String_Node_Str",originalFile.length(),unpackedFile.length());
      assertEquals("String_Node_Str",MD5.generateMD5onFile(originalFile),MD5.generateMD5onFile(unpackedFile));
    }
    files.remove(s);
  }
  assertTrue("String_Node_Str" + files,files.isEmpty());
  try {
    ZipUtils.unzip(null,unzipDir);
    fail("String_Node_Str");
  }
 catch (  ArgumentNotValid e) {
  }
  try {
    ZipUtils.unzip(TestInfo.ZIPPED_DIR,null);
    fail("String_Node_Str");
  }
 catch (  ArgumentNotValid e) {
  }
  try {
    ZipUtils.unzip(TestInfo.ZIPPED_DIR,TestInfo.ZIPPED_DIR);
    fail("String_Node_Str");
  }
 catch (  PermissionDenied e) {
  }
  try {
    ZipUtils.unzip(unzipDir,unzipDir);
    fail("String_Node_Str");
  }
 catch (  IOFailure e) {
  }
  try {
    ZipUtils.unzip(new File(TestInfo.ZIPDIR,"String_Node_Str"),unzipDir);
    fail("String_Node_Str");
  }
 catch (  IOFailure e) {
  }
}

Fixed version (ground truth):
public void testUnzip() throws IOException {
  File unzipDir=new File(TestInfo.TEMPDIR,"String_Node_Str");
  assertFalse("String_Node_Str",unzipDir.exists());
  ZipUtils.unzip(TestInfo.ZIPPED_DIR,unzipDir);
  assertTrue("String_Node_Str",unzipDir.exists());
  Set<String> files=getFileListNonDirectory();
  for (  String s : new ArrayList<String>(files)) {
    if (!s.equals(TestInfo.ZIPPED_DIR.getName())) {
      File unpackedFile=new File(unzipDir,s);
      assertTrue("String_Node_Str" + s + "String_Node_Str",unpackedFile.exists());
      File originalFile=new File(TestInfo.ZIPDIR,s);
      assertEquals("String_Node_Str" + s + "String_Node_Str",originalFile.length(),unpackedFile.length());
      assertEquals("String_Node_Str",MD5.generateMD5onFile(originalFile),MD5.generateMD5onFile(unpackedFile));
    }
    files.remove(s);
  }
  assertTrue("String_Node_Str" + files,files.isEmpty());
  FileUtils.removeRecursively(unzipDir);
  ZipUtils.unzip(TestInfo.ZIPPED_DIR_WITH_SUBDIRS,unzipDir);
  assertTrue("String_Node_Str",new File(unzipDir,"String_Node_Str").isDirectory());
  assertTrue("String_Node_Str",new File(new File(unzipDir,"String_Node_Str"),"String_Node_Str").isFile());
  assertEquals("String_Node_Str",4,new File(new File(unzipDir,"String_Node_Str"),"String_Node_Str").length());
  assertTrue("String_Node_Str",new File(new File(unzipDir,"String_Node_Str"),"String_Node_Str").isDirectory());
  assertTrue("String_Node_Str",new File(new File(new File(unzipDir,"String_Node_Str"),"String_Node_Str"),"String_Node_Str").isFile());
  assertEquals("String_Node_Str",7,new File(new File(new File(unzipDir,"String_Node_Str"),"String_Node_Str"),"String_Node_Str").length());
  try {
    ZipUtils.unzip(null,unzipDir);
    fail("String_Node_Str");
  }
 catch (  ArgumentNotValid e) {
  }
  try {
    ZipUtils.unzip(TestInfo.ZIPPED_DIR,null);
    fail("String_Node_Str");
  }
 catch (  ArgumentNotValid e) {
  }
  try {
    ZipUtils.unzip(TestInfo.ZIPPED_DIR,TestInfo.ZIPPED_DIR);
    fail("String_Node_Str");
  }
 catch (  PermissionDenied e) {
  }
  try {
    ZipUtils.unzip(unzipDir,unzipDir);
    fail("String_Node_Str");
  }
 catch (  IOFailure e) {
  }
  try {
    ZipUtils.unzip(new File(TestInfo.ZIPDIR,"String_Node_Str"),unzipDir);
    fail("String_Node_Str");
  }
 catch (  IOFailure e) {
  }
}