2import junit.framework.TestCase;3import org.openqa.selenium.internal.InProject;4import org.openqa.selenium.io.Cleanly;5import org.openqa.selenium.io.TemporaryFilesystem;6import org.openqa.selenium.io.Zip;7import java.io.File;8import java.io.FileInputStream;9import java.io.FileOutputStream;10import java.io.IOException;11import java.util.zip.ZipEntry;12import java.util.zip.ZipInputStream;13public class ZipTest extends TestCase {14 private File inputDir;15 private File outputDir;16 private Zip zip;17 private TemporaryFilesystem tmpFs;18 @Override19 protected void setUp() throws Exception {20 super.setUp();21 File baseForTest = new File(System.getProperty("java.io.tmpdir"), "tmpTest");22 baseForTest.mkdir();23 tmpFs = TemporaryFilesystem.getTmpFsBasedOn(baseForTest.getAbsolutePath());24 inputDir = tmpFs.createTempDir("input", "ziptest");25 outputDir = tmpFs.createTempDir("output", "ziptest");26 zip = new Zip();27 }28 @Override29 protected void tearDown() throws Exception {30 tmpFs.deleteTemporaryFiles();31 super.tearDown();32 }33 public void testShouldCreateAZipWithASingleEntry() throws IOException {34 touch(new File(inputDir, "example.txt"));35 File output = new File(outputDir, "my.zip");36 zip.zip(inputDir, output);37 assertTrue(output.exists());38 assertZipContains(output, "example.txt");39 }40 public void testShouldZipUpASingleSubDirectory() throws IOException {41 touch(new File(inputDir, "subdir/example.txt"));42 File output = new File(outputDir, "subdir.zip");43 zip.zip(inputDir, output);44 assertTrue(output.exists());45 assertZipContains(output, "subdir/example.txt");46 }47 public void testShouldZipMultipleDirectories() throws IOException {48 touch(new File(inputDir, "subdir/example.txt"));49 touch(new File(inputDir, "subdir2/fishy/food.txt"));50 File output = new File(outputDir, "subdir.zip");51 zip.zip(inputDir, output);52 assertTrue(output.exists());53 assertZipContains(output, "subdir/example.txt");54 assertZipContains(output, "subdir2/fishy/food.txt");55 }56 public void testCanUnzipASingleEntry() throws IOException {57 File source = InProject.locate(58 "java/client/test/org/openqa/selenium/internal/single-file.zip");59 zip.unzip(source, outputDir);60 assertTrue(new File(outputDir, "example.txt").exists());61 }62 public void testCanUnzipAComplexZip() throws IOException {63 File source = InProject.locate(64 "java/client/test/org/openqa/selenium/internal/subfolders.zip");65 zip.unzip(source, outputDir);66 assertTrue(new File(outputDir, "example.txt").exists());67 assertTrue(new File(outputDir, "subdir/foodyfun.txt").exists());68 }69 public void testWillNotOverwriteAnExistingZip() throws IOException {70 try {71 zip.zip(inputDir, outputDir);72 fail("Should have thrown an exception");73 } catch (IOException e) {74 assertTrue(e.getMessage(), e.getMessage().contains("already exists"));75 }76 }77 private void assertZipContains(File output, String s) throws IOException {78 FileInputStream fis = new FileInputStream(output);79 ZipInputStream zis = new ZipInputStream(fis);80 ZipEntry entry;81 while ((entry = zis.getNextEntry()) != null) {82 if (s.equals(entry.getName().replaceAll("\\\\", "/"))) {83 return;84 }85 }86 fail("File not in zip: " + s);87 }88 private void touch(File file) throws IOException {89 File parent = file.getParentFile();90 if (!parent.exists()) {91 assertTrue(parent.mkdirs());92 }93 FileOutputStream fos = new FileOutputStream(file);94 fos.write("".getBytes());...